Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Hallo Leute, gibt es ein kleines Tool was vergleicht welche Prozesse (Programme) aktiv sind und diese dann nicht mehr erneut startet, sondern auf das aktive Programm wechselt?
Ich möchte bestimmte Programme nur einmal starten lassen und dann beim weiteren klicken auf das Programm soll es zum geöffneten Programm wechseln.
Sag mal ein konkretes Beispiel. Kann dir leider nicht folgen. In was für einem Fall macht das Sinn?
Also ich weiß doch ob ich 3 mal den Calculator offen habe oder nicht. Mir will sich der Sinn nicht erschließen. Wieviele Programme starten sich denn mehrmals? ICQ nope, Skype nope, Adobe nope .. *gg* Was für programme meinst du? Solche die sich automatisch starten?
Ist schwer zu erklären aber ich Versuchs einfach mal.
Ich habe einen CarPC. Dort lasse ich eine Oberfläche starten die sich Riderrunner nennt starten.
Aus dieser Oberfläche herraus gibt es dann die Möglichkeit externe Programme zu starten wie z.B. das Navi Programm. Hab mal nen Bild davon eingefügt.
Unten sieht man die Leiste von der Oberfläche und oben das Navi.
Wenn ich jetzt auf die Oberfläche zurück springe mit der Leiste unten, komme ich nicht mehr auf das geöffnete Navi zurück. Sondern er startet das Navi Programm ein weiteres mal.
Die Taskleiste blendet sich leider in der Oberfläche nicht ein, obwohl es in Windows aktiviert ist. So das ich darüber auch nicht zurück komme.
Das kannst du so in eine batch packen, jegliche Erklärung spare ich mir hier... das ist selbstredend.
Alternativ darf man das auch vorher in der Eingabeaufforderung ausprobieren
Die Zeile startet notepad wenn es nicht bereits läuft, das binary was er da called kann er beliebig austauschen! das schreibt er in eine simple batch und tauscht das Ziel seiner Verknüpfungen aus (Desktop, Riderunner).
Simpler gehts nicht und vor allem nicht systemnaher.
Siehe Threadtitel: Programme nur einmal starten lassen
Heißt im Umkehrschluss, wenn eine zweite Instanz eines Programms gestartet diese daran gehindert wird zu starten (einfach ein Kill losschicken).
Das was du mit deiner Batch machst: xyz starten, wenn nicht gestartet (was du auch so erklärst).
Btw macht deine Batch bei mir überhaupt nichts. Wenn ich kein Notepad offen habe, wird nichts gestartet und wenn ich mehrere Notepads offen habe, wird nichts geschlossen.
edit: Muss den letzten Absatz revidieren, funktioniert nur nicht über den Ausführen Dialog.
Habe ich den Code von X23^Piracy falsch gelesen oder macht es dieses anreihung von komischen Zeichen nicht genau das was unser Threadersteller will. Na gut man braucht nun eine verknüpfung auf dem Desktop, aber das sollte Ihn ja nicht sonderlich stören :O
HI, X23 hat es schon richtig verstanden, ich möchte die Anwendung beim ersten klick starten und beim 2. klick auf die Datei nicht mehr. Dafür sollte dann das aktive Fenster in den Vordergrund geschoben werden.
Das klappt damit schon ganz gut. Danke.
Nur schiebt er das Aktive Fenster nicht in den Vordergrund.
Ist es außerdem möglich nach dem starten der Batch Datei und das ausführen der Befehle, die Eingabeaufforderung wieder zu schließen? Hab es mit Exit und End probiert, leider ohne Erfolg.
Das klappt damit schon ganz gut. Danke.
Nur schiebt er das Aktive Fenster nicht in den Vordergrund.
Ist es außerdem möglich nach dem starten der Batch Datei und das ausführen der Befehle, die Eingabeaufforderung wieder zu schließen? Hab es mit Exit und End probiert, leider ohne Erfolg.
mit einer Batch kann man das Focus Problem nicht lösen, ein z.B. VBS könnte das machen.
Die Batch Datei wartet auf das beenden des gestarteten Programms (deine Navi Software).
Ich hatte für sowas eigentlich schonmal den fertigen Code, aber den find ich nicht mehr.
Also machs wie ich google einfach
- VBS Anwendung im Vordergrund
- VBS Set Application Focus
- VBS Programm nur einmal starten
- VBS Nur eine Instanz (Programminstanz) erlauben
Das VBS könnte dann aber gleich die Prüfung mitübernehmen ob die Anwendung bereits läuft, evtl. hab ich nochmal Bock mir das anzusehen dann liefer ich dir was fertiges ansonsten nutz einfach des Online Users besten Freund (ich mach nix anderes).
Ich könnte sowas in wenigen Minuten in Delphi realisieren aber eine eigene Anwendung für sowas ist einfach nicht angebracht, sowas sollten Scriptsprachen erledigen.
EDIT:
Ich konnts nicht lassen und habe eine Lösung (VBS):
Lässt sich sicher noch kürzer und noch eleganter machen... bin kein vbs experte aber es geht.
Code:
Set WMI = GetObject("winmgmts:")
Set Ergebnis = WMI.ExecQuery("select * from win32_process where name='notepad.exe' ")
If Ergebnis.Count then
set oWsh = CreateObject("WScript.Shell")
oWsh.AppActivate "Unbenannt - Editor", True
oWsh.Sendkeys ("%"), True
oWsh.Sendkeys (" "), True
oWsh.Sendkeys ("x"), True
Else
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad.exe"
End If
Den Code in eine Textdatei und als was auch immer .vbs abspeichern.
where name='name wie im taskmanager'
owsh.AppActivate "Fenstername nicht Prozessname"
WshShell.Run "C:\bla.exe oder nur exe wenn im path"
Wehe hier schreit einer das geht nicht, ich hab den Mist mehrfach getestet, passt es richtig an und das funktioniert
Gruß X23
Ergänzung ()
Hi,
ich habe das Script nochmal umgebaut, du musst jetzt nur noch eine Variable anpassen,
erste Zeile: process = "notepad.exe" dort einfach den Prozessnamen (exe) des Navis eintragen.
Code:
process = "notepad.exe"
Set WMI = GetObject("winmgmts:")
Set Ergebnis = WMI.ExecQuery("select * from win32_process where name='" & process & "' ")
If Ergebnis.Count then
strComputer = "."
Set objNet = CreateObject("WScript.Network")
src = objNet.UserName
pid = GetPID
set oWsh = CreateObject("WScript.Shell")
oWsh.AppActivate pid, True
oWsh.Sendkeys ("%"), True
oWsh.Sendkeys (" "), True
oWsh.Sendkeys ("x"), True
Else
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run process
End If
Function GetPID
Set objwmi = GetObject("winmgmts:\\" & strComputer)
wql = "Select * from Win32_Process Where Name = '" & process & "'"
Set objProzesse = objwmi.ExecQuery(wql)
For Each objProzess In objProzesse
objProzess.GetOwner notepaduser
If notepaduser = src Then
GetPID = objProzess.ProcessID
Exit Function
End If
Next
GetPID
End Function
Das Script macht folgendes:
- Prüfen ob bereits ein laufender Prozess des Programms existiert.
- Wenn ein Prozess existiert, Prozess ID ermitteln
- Programm anhand der Prozess ID wiederherstellen (Vordergrund) und maximieren.
- Wurde am Anfang kein laufender Prozess ermittelt, wird das Programm als Erstinstanz gestartet.
Und wie gesagt ein VBS Guru würde das sicher kürzer hinbekommen, ich bin kein Experte auf dem Gebiet.
Is ja der Hammer, es funzt!!
Hät ich bestimmt wieder ne ganze weile dran gesessen um da mit der Skriptsprache da irgendwas hin zu bekommen.
Script- und Programmiersprache is echt nicht meine Welt.
Hab nochmal dein anderes Skript probiert, funzt genauso gut wie das erste.
Eine Kleinigkeit ist mir aber bei beiden noch aufgefallen. Is nix schlimmes.
Wenn ich die Datei das erste mal starte ist alles so wie es sein soll. Beim 2. mal starten bringt er das Fenster in den Vordergrund, dabei bleibt die Maus als Eieruhr stehen. Solange bis ich das Programm wieder schließe oder mit der Maus aus dem Navi Fenster raus gehe.
Ist das normal?
Kann auch an dem Navi Programm liegen, aber das sollte ja nix mitbekommen von dem 2. Start.
Eine Kleinigkeit ist mir aber bei beiden noch aufgefallen. Is nix schlimmes.
Wenn ich die Datei das erste mal starte ist alles so wie es sein soll. Beim 2. mal starten bringt er das Fenster in den Vordergrund, dabei bleibt die Maus als Eieruhr stehen. Solange bis ich das Programm wieder schließe oder mit der Maus aus dem Navi Fenster raus gehe.
Das ist kein offizielles PC Navi Programm. Da hat sich mal jemand aus Russland die Mühe gemacht das PNA Navi Programm iGo8 fürn PC umzuschreiben. Leider gibt es nicht viele brauchbare Navi Progs fürn PC.
Bin damit ganz zu Frieden.
Ein zweites mal taucht es im Taskmgr nicht auf.
Ich kann es aber ganz normal Bedienen, auch mit Sanduhr.