So, hab jetzt alles mal durchprobiert.
U.a. die ganzen Get***-Methoden um an das Messagebox-
Handle zu kommen. Half aber auch nicht da ich entweder das falsche
Handle bekam oder das anschliessende Senden der WM_CLOSE Nachricht nichts bewirkt hat (mit dem richtigen
Handle).
Dann hab ich es mit einem simulierten Alt+F4 probiert, das bringt aber auch nichts da sich dann nicht das Programm schliesst sondern nur die Messagebox (Programm läuft normal weiter).
Nun habe ich meinen Code ein bisschen umgebaut und es mit einem simulierten Return/Enter probiert, geht aber auch nicht (Messagebox bleibt regungslos stehen):
Delphi-Quellcode:
var
Inp: array of TInput;
I: Integer;
begin
PostMessage(HInst, WM_ACTIVATEAPP, 0, 0);
PostMessage(HInst, WM_SHOWWINDOW, 0, 0);
PostMessage(HInst, WM_CLOSE, 0, 0);
SetLength(Inp,2);
Inp[0].Itype := INPUT_KEYBOARD;
Inp[0].ki.wScan:=MapVirtualKey(VK_RETURN, 0);
Inp[0].ki.wVk := VK_RETURN;
Inp[0].ki.dwFlags := 0;
Inp[1].Itype := INPUT_KEYBOARD;
Inp[1].ki.wScan:=MapVirtualKey(VK_RETURN, 0);
Inp[1].ki.wVk := VK_RETURN;
Inp[1].ki.dwFlags := KEYEVENTF_KEYUP;
SendInput(2, Inp[0], SizeOf(Inp[0]));
Ich kriegs einfach nicht hin.
Ich erinne mich aber u.a. das bei manchen Treiberinstallationen die ganzen Meldungen welche z.b. Windows Xp ausgibt (Windows zertifizierter Treiber usw.) vom Installationsprogramm manchmal selbst "bedient" werden. Das sieht man am besten daran wenn z.b. der Dialog "Treiber suchen" auftaucht, welcher dann vom Installationsprogramm wie von Geisterhand bedient wird (man sieht wie zwischen den einzelnen Schritten weiter gesprungen wird mit einem Klick auf "Weiter") um dann den Treiber zu installieren.
DAS bräuchte ich auch für mein Problem !
Danke trotzdem !
Mfg.
Thomas