Powershell if process not running start process else go to process window
Hallo zusammen,
ich habe ein Dashboard mit Windows Form in Powershell erstellt. Hiermit kann der User diverse Anwendungen starten. Jedoch verwende ich immer ein start-process. Somit wird jedes Mal eine neue Instanz geöffnet.
Bsp. start-process calc.exe
Ich würde gerne prüfen ob der Prozess bereits gestartet ist und wenn ja zu diesem Fenster wechseln. Wenn noch nicht geöffnet soll der Prozess starten.
Ob der Prozess gestartet ist kann ich abfragen. Das ist ja kein Problem. Jedoch weiß ich nicht wie ich zu diesem Prozess wechseln kann. Also wie ich das Fenster in den Vordergrund hole.
Kann mir jemand hierbei helfen?
ich habe ein Dashboard mit Windows Form in Powershell erstellt. Hiermit kann der User diverse Anwendungen starten. Jedoch verwende ich immer ein start-process. Somit wird jedes Mal eine neue Instanz geöffnet.
Bsp. start-process calc.exe
Ich würde gerne prüfen ob der Prozess bereits gestartet ist und wenn ja zu diesem Fenster wechseln. Wenn noch nicht geöffnet soll der Prozess starten.
Ob der Prozess gestartet ist kann ich abfragen. Das ist ja kein Problem. Jedoch weiß ich nicht wie ich zu diesem Prozess wechseln kann. Also wie ich das Fenster in den Vordergrund hole.
Kann mir jemand hierbei helfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1224731414
Url: https://administrator.de/contentid/1224731414
Ausgedruckt am: 18.12.2024 um 02:12 Uhr
11 Kommentare
Neuester Kommentar
Zitat von @joe2017:
Was ist jedoch wenn ich zwei Fenster offen habe?
LinkA und LinkB
Wie kann ich diese unterscheiden???
Was ist jedoch wenn ich zwei Fenster offen habe?
LinkA und LinkB
Wie kann ich diese unterscheiden???
FindWindow Methode benutzen um an die HWND des Fensters anhand des Titels zu kommen.
Bei Tabs siehe
URLs geöffneter bzw vorhandener Browsertabs und Browserfenster auslesen
Alternativ mit
gps -Name iexplore | ?{$_.MainWindowTitle -like '*Ttitel der Webseite*'}
Zitat von @joe2017:
Schönen guten Morgen,
das Problem beim IE ist, das immer nur das zuletzt aktive Fenster einen MainWindowTitle anzeigt.
Öffnet man zwei Instanzen Bsp. google und yahoo
Wird mit der Abfrage immer nur eins von beiden angezeigt. Und immer nur den Title den man zuletzt geöffnet hatte.
Gibt es hier noch eine andere möglichkeit?
Du musst beim IE jedes Fenster erst kurz mit SetForeground in den Vordergrund holen um den Titel abzufragen. Das ist dem Grund geschuldet das der IE wie auch andere Browser die Fenster/Tabs aus dem Prozess aushängen um Resourcen zu sparen.Schönen guten Morgen,
das Problem beim IE ist, das immer nur das zuletzt aktive Fenster einen MainWindowTitle anzeigt.
Get-Process iexplore | select MainWindowTitle
Öffnet man zwei Instanzen Bsp. google und yahoo
Wird mit der Abfrage immer nur eins von beiden angezeigt. Und immer nur den Title den man zuletzt geöffnet hatte.
Gibt es hier noch eine andere möglichkeit?
Nicht nach title sonder nach Link zu suchen?
Das geht nicht so leicht da musst du schon tiefer in die Fenster-Prozesse eintauchen.Siehe dazu den oben schon geposteten Link
URLs geöffneter bzw vorhandener Browsertabs und Browserfenster auslesen
Zitat von @joe2017:
Hatte ich oben schon mehrfach gesagt. Dazu musst du alle IEFrame Klassen Fenster enumerieren mittels FindWindow oder FindWindowEx. Und oben im Link findest du sogar eine Möglichkeit die URLs auszulesen. Was willst du also noch?Zitat von @149062:
Du musst beim IE jedes Fenster erst kurz mit SetForeground in den Vordergrund holen um den Titel abzufragen.
Das ist ja alles was ich möchte. Einfach ein bestimmtes IE Fenster in der Vordergrund holen. Aber das funktioniert ja nicht so leicht.Du musst beim IE jedes Fenster erst kurz mit SetForeground in den Vordergrund holen um den Titel abzufragen.
Zitat von @joe2017:
Danke für den Link. Den hatte ich natürlich gesehen.
Ich wollte das mit reinen Boardmitteln ohne zusätzliche Projekt Importe durchführen.
Das sind reine Bordmittel ...Danke für den Link. Den hatte ich natürlich gesehen.
Ich wollte das mit reinen Boardmitteln ohne zusätzliche Projekt Importe durchführen.
Ich hätte noch einen Ansatz. Vielleicht könnte das auch irgendwie funktionieren:
Das kann man doch sicherlich direkt beim öffnen in einem simplen Befehl abfragen oder?
Das müsste in er Regel immer dich höchste ID sein oder nicht?
Nöp das funktioniert so nicht. Siehe oben den Hinweis zu FindWindowEx nur das funktioniert vernünftig.Das kann man doch sicherlich direkt beim öffnen in einem simplen Befehl abfragen oder?
Das müsste in er Regel immer dich höchste ID sein oder nicht?
Ich bin jetzt raus, wenn man sich x mal wiederholen muss.