Aktives Fenster
-
Hallo,
ich habe folgenden Code (ausschnitt)
msclr::interop::marshal_context mc; HWND hWnd = FindWindow(NULL, mc.marshal_as<const TCHAR*>(T2box->Text)); Sleep (3000); HWND fenster = GetForegroundWindow(); //if (hWnd != NULL && ::IsWindow(hWnd) == TRUE) if (hWnd != NULL && ::IsWindow(hWnd) == TRUE && fenster == hWnd) { //Sleep (3000); POINT pt; pt.x = 476; pt.y = 513; ClientToScreen(hWnd,&pt); textBox3->Text = Convert::ToString(pt.x); textBox4->Text = Convert::ToString(pt.y); SetCursorPos(pt.x, pt.y); }Bei Standard Fenstern funktioniert er. aber bei den speziellen fenstern wo ich es brauche eben nicht. ich bekomme den handle, das geht. aber die maus geht nur zur position wenn das fenster nicht active ist also ohne die Zeile: HWND fenster = GetForegroundWindow(); und mit der Zeile: if (hWnd != NULL && ::IsWindow(hWnd) == TRUE).
aber nur bei diesem besonderen fenstern. im übrigen kann ich diese fenster auch nicht steuern, zb. größe ändern oder position.
Weiss jemand was mit dem fenster los ist?
Danke
Ich habe noch was entdeckt. Wenn das besagte Fenster active ist geht die maus nicht auf ihren platz, ist das fenster inactive also nicht im fordergrund dann geht es. Wer kann mir helfen?
Habe schon wieder was entdeckt. ich habe die sleep anweisung, brauch ich zum testen. das fenster geht auch automatisch in den vordergrund, wenn ich jetzt mein programm genau starte bevor das fenster automatisch in den vordergrund springt dann geht es aber nach dem mouse move ist mein eigenes programm das aktive. vielleicht ist das ja noch ne wichtige info.
Danke
-
Keiner eine Idee?
Ich habe jetzt ein Programm geschrieben das einen Thread ausführt der alle 3 Sekunden die maus zu einem bestimmten punkt auf den Bildschirm setzt, ohne handle oder anbindung an irgendwas. Sobald aber die das Fenster der Software des anbieters aktiv wird macht mein programm nichts mehr, wenn das fenster nicht mehr aktiv ist läuft mein thread wieder.
Das kann doch nicht sein, die maus kann ich ja dennoch mit der hand bewegen, auch wenn das fenster aktiv ist. Das verstehe ich nicht. Brauche hilfe, bin am durchdrehen.
-
Mist, scheint keiner zu wissen.
Vielleicht kann mir einer mal den obrigen Code so umgestallten das statt SETCURSORPOS eine SendMessage mit WM_MOUSEMOVE und anschließenden klick des Linken Mousebutton ausführt. Vielleicht geht das, laut Spy benutzt dieses fenster diese bezeichnungen.
Danke euch
-
Kann das keiner umschreiben, oder geht das nicht?
-
Was genau willst du denn machen? Irgendwie verstehe ich den Sinn hinter deinem Vorhaben nicht... geschweige denn dein Vorhaben überhaupt.
-
Hallo Danke für die Antwort,
ich habe den fehler gefunden. Ich programmiere auf vista und das programm läuft als admin, wenn ich VS als admin laufen lasse gehts. Ganz toll, hat mich eine Woche gekostet.
Gruss