![]() |
Programmfokus setzen per Process-ID
Hallo DP,
ich möchte aus meinem Programm Werte in ein externes Programm eintragen. Dazu rufe ich es mit ShellExecute auf, falls es nicht bereits läuft. Wenn es allerdings läuft, soll das Programm den Fokus erhalten. Das versuche ich hier mit SetForegroundWindow. Wie bekomme ich mit dieser Prozedur den Fokus auf dieses Program :gruebel: Ich meine ich könnte ja CreateProcess verwenden und damit die Process-ID in eine Variable schreiben - die passende Funktion habe ich hier schon rumfliegen gesehen, von Luckie, aber ich finde keine Prozedur mit der ich die Process-ID in ein Handle o.ä. umwandeln kann... Mein Problem ist auch dass meine Delphi-Hilfe nicht funktioniert, 64-BIT Vista sei Dank :angel2: Kann mir da jemand auf die Sprünge helfen? Danke schonmal, greetZ 64Jabor |
Re: Programmfokus setzen per Process-ID
Ich weiß nicht, ob es so funktioniert, aber mir fällt spontan folgende Vorgehensweise ein:
mit EnumWindows (oder EnumThreadWindows, wenn Du die ThreadID hast) die Fenster durchgehen, mit GetWindowThreadProcessID die ProzessID ermitteln und mit Deiner vergleichen. Wenn gleich, mit SetForegroundWindow nach vorne holen. Das Problem hierbei ist, dass das Programm ja mehrere Fenster haben kann. |
Re: Programmfokus setzen per Process-ID
Hey DeddyH,
da ich selbst ja verhindere dass das Programm mehrmals ausgeführt wird zur Laufzeit MEINES Programmes und ich nicht davon ausgehe, dass dieses Programm jemand von selbst öfter startet, werde ich dieses Problem vorerst nicht beachten. Ich werde mir besagte Funktionen mal ansehn und hoffe zu einem Ergebnis zu kommen :thumb: Vielen Dank! greetZ |
Re: Programmfokus setzen per Process-ID
Wenn wir grad bei Spontan sind :)
Mir fällt spontan SEND_MESSAGE ein. Sende dem Process ein ![]() Oder du importierst direkt die ![]() |
Re: Programmfokus setzen per Process-ID
Das Problem ist doch, überhaupt ein Fensterhandle zu erhalten.
|
Re: Programmfokus setzen per Process-ID
Zitat:
|
Re: Programmfokus setzen per Process-ID
Hmm irre ich mich da oder lässt sich das nicht über die ProcessID holen?
|
Re: Programmfokus setzen per Process-ID
Joa ich versuche ja per Process-ID das Fensterhandle zu bekommen, so wie DeddyH es vorgeschlagen hat.
Leider komme ich nicht wirklich weiter... Ich hab mir jetzt eine Unit runtergeladen: ![]() Die habe ich eingebunden und sie ist auch fähig jedes Fenster aufzulisten sowie das Handle zu bekommen, aber leider weiß ich nicht wie ich nun die Process-ID aus Luckies Funktion ![]() Ich dachte ja egtl an etwas wie:
Delphi-Quellcode:
Nur leider existiert nichts deartiges wie Objects[].ProcessID...
i:=0;
while ( (i < MyWNDList.Count-1) AND (ProcID <> MyWNDList.Objects[i].ProcessID) ) do i:=i+1; SetForegroundWindow(MyWNDList.GetHandle(i)); Oder habe ich etwas übersehen? |
Re: Programmfokus setzen per Process-ID
Zitat:
|
Re: Programmfokus setzen per Process-ID
Zitat:
OK, diese müßte dann in diesem Programm ausgewertet weden und das Programm holt sich dann z.B. selbst in den Vordergrund. (aber man muß es ja nicht übertreiben :roll: ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz