HWnds zu Thread-IDs bzw. Process-IDs ermitteln
-
Hi,
ich hab folgendes Problem:
Ich möchte mit einer C++-Exe in einer Schleife eine Anwendung überwachen.
Wenn deren Window = GetForeGroundWindow() ist, sie also in den Vordergrund geklickt wurde, soll die zweite Anwendung in den Vordergrund kommen.Also sowas wie DoModal() von extern.
Kann mir da jemand weiterhelfen?? Waere wirklich super!!
greetZ /*Andi*/
-
Das ist dann aber nicht vergleichbar mit DoModal.. Willst das Program starten oder nur in den Vordergrund setzen...
siehe FindWindow (mein ich zumindest)
-
Hi,
ok, ich hab Anwendung (A), von der ich die Thread-ID und den Window-Handler habe.
Dann habe ich noch Anwendung (B), die einen wechselnden Window-Handler hat, aber ich habe die imho eindeutige Prozess-ID und auch die Thread-ID.Meine Master-Anwendung (M) soll jetzt Anwendung (A) überwachen. Sobald (A) im Vordergrund ist, soll automatisch Anwendung (b) in den Vordergrund gesetzt werden.
(A) und (B) sind eigenständige (Fremd)-Anwendungen, (C) ist meine exe.
FindWindow() bringt mir bei (B) nix, da der Window-Handler ständig wechselt.
Parameter 1, also die Klasse, ist nicht eindeutig, und Parameter 2, der Caption-Text wechselt.Ich sitz jetzt ein bisschen in der Klemme, weil ich nicht weiss, wie ich das am saubersten und am stabilsten hinbekomme.
Fuer jeden Tipp und jede Hilfe dankbar..
greetZ /*Andi*/
-
Woher weisst du überhaupt, welche Anwendung in den Vordergrund kommen soll, wenn du nicht mal den Fenstertitel weisst? Wenn du meinst, dass da wie beim IE vor dem "Microsoft Internet Explorer" noch der Titel der aktuellen Site angehängt wird, kann man das Handle mit z.B. FindWindow(0,TEXT("Microsoft Internet Explorer") bekommen.
cya
-
Ich kenn die Thread- und die Prozess-ID von (B), da die über Aufruf-Parameter durch Anwendung (A) an (C) gehen.
Das Problem ist: (A) ist ne VisualBasic-App, die (B) startet. Mit VisualBasic gibts aber keine Möglichkeit, das SAUBER umzusetzen, dass Anwendung (B) immer im Vordergrund von (A) ist, wenn diese angezeigt wird. Es soll allerdings auch kein TOPMOST werden
greetZ /*Andi*/
-
Caption-Text identifiziert Anwendung (B) nicht eindeutig.
Und ich will wirklich diese eine Anwendung (B) mit der Process-ID/ Thread-ID haben
-
Original erstellt von Andreas Rothlauf:
Caption-Text identifiziert Anwendung (B) nicht eindeutig.
Und ich will wirklich diese eine Anwendung (B) mit der Process-ID/ Thread-ID habenHast du doch dann.
Mal so nebenbei: Das Window-Handle zu einer ThreadID bzw. ProcessID gibt es nicht! Du kannst höchstens ermitteln (ich wüsste nicht wie), welche Fenster (also auch die Handles) unter diesem Prozess/Thread existieren. Vielleicht macht das Spy++ ja so, aber ich glaube, das geht läuft eher über GetWindowThreadProcessID();
-
Du könntest mit EnumWindows durch alle Fenster durchgehen und dann prüfen, ob das jeweilige Handle zu deiner ProcessID gehört
-
Jo, das mit EnumWindows() hoert sich gut an, werd ich mal ausprobieren..
Thx a lot
greetZ /*Andi*/