Entwickler-Ecke

Windows API - hprocess für ein fremdes, schon laufendes Programm ermitteln


michasbaer - Mi 09.05.07 11:52
Titel: hprocess für ein fremdes, schon laufendes Programm ermitteln
Hallo,
mit einem kleinen Programm 'fernsteuere' ich Menüklicks in fremden Programmen.
Wenn diese Programme von meinem Programm aus mit CreateProcess gestartet werden,
bekomme ich in der Process_Information .hprocess geliefert und alles ist in Ordnung.
Wenn aber das fernzusteuernde Programm schon läuft, weiß ich nicht wie man den hprocess
ermittelt. Ich würde Ihn brauchen um durch waitforinputidle(hprocess,dwMilliseconds)
ein 'Überholen' des fremden Programmes zu verhindern.

Gib's da was ?, schon mal Danke für jede Hilfe


Delete - Mi 09.05.07 14:25

Mit OpenProcess bekommst du ein Handle auf den Prozess.


michasbaer - Mi 09.05.07 17:11

Hallo Michael,
schönen Dank für OpenProcess, aber ich glaube wenn man sich durch die
ganzen DesiredAccess-Parameter durchgekämpft hat, und dann den SYNCHRONIZE
auswählt (hab's aber auch mit anderen probiert) dann liefert OpenProcess nicht
hprocess, sondern ein handle auf ein Processobjekt, das man dann für Wait's ob
Single-, Multi- oder Alert-Objekte hernehmen kann.
Der WaitForInputIdle wartet erstens nicht, wenn man ihn mit Processobjekten
bedient, und blöderweise ist das der einzige Wait der mir bekannt ist, der
tatsächlich wartet, bis alle Rechenvorgänge, IO-Vorgänge abgeschlossen sind
und die Anwendung bereit ist, neue Tastatur- oder Mausaktivitäten entgegen-
zunehmen.
Mir ist aufgefallen, daß sich der hprocess für ein Programm nie ändert, wenn
man ihn mit CreateProcess anschmeisst - was ist hprocess - ???

Wenn Dir als Alternative zum WaitForInputIdle irgendetwas einfällt, nehm ich das
und wir können den Thread schließen.

Nochmal Danke

Gruß
Rainer