Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mausklick simulieren funktioniert nicht (https://www.delphipraxis.net/85264-mausklick-simulieren-funktioniert-nicht.html)

Sunlight7 29. Jan 2007 01:32

Re: Mausklick simulieren funktioniert nicht
 
1. Steht der Fokus auf der CheckBox?
2. MSDN-Library durchsuchenIsWindowVisible, bzw. MSDN-Library durchsuchenIsIconic

PS: Wieder nicht vorhandener roter Kasten: :? :?
Seltsam, ich verwende nie die WM_SetFocus Nachrichten :gruebel:

snapman 29. Jan 2007 01:45

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
1. Steht der Fokus auf der CheckBox?
2. MSDN-Library durchsuchenIsWindowVisible, bzw. MSDN-Library durchsuchenIsIconic

PS: Wieder nicht vorhandener roter Kasten: :? :?
Seltsam, ich verwende nie die WM_SetFocus Nachrichten :gruebel:

Also erstmal ein BigTHX!! Dank IsWindowVisible klickt er den ganzen Kram jetzt automatisch ohne Murren weg auch im Timer!
Aber die Checkbox kann ich seltsamerweise trotz Focus nicht anhaken :(

Hier mal der aktuelle Code:

Delphi-Quellcode:
var wnd,wnd1: HWND;
begin

wnd := FindWindow('#32770','ZoneAlarm-Sicherheitswarnung');
wnd1 := FindWindowEx2(wnd,'ZaButton', 2); //Checkbox


if (wnd <> 0) and (iswindowvisible(wnd)) then
begin

SetForegroundWindow(wnd);
SendMessage(wnd, WM_SETFOCUS, 0, 0);


keybd_event(VK_TAB, 0, 0, 0);
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);

SendMessage(wnd1, WM_SETFOCUS, 0, 0); //FOcus auf checkbox

keybd_event(VK_SPACE, 0, 0, 0); //checkbox anhaken
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);

  keybd_event(VK_TAB, 0, 0, 0);
 keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);

keybd_event(VK_SPACE, 0, 0, 0); //Zulassen klicken
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);
Also zulassen geht wunderbar mit dem Code, das mit der checkbox nicht, egal ob ich den focus auf die box reinnehme oder nicht

Sunlight7 29. Jan 2007 01:52

Re: Mausklick simulieren funktioniert nicht
 
Ähm, Du verwechselst da was:

WM_SETFOCUS wird an als Benachrichtigung an ein Fenster gesendet, das es den Fokus erhalten hat.
Was Du suchst ist: MSDN-Library durchsuchenSetFocus

Vorsicht: Windows.SetFocus schreiben :wink:

Edit: Deshalb auch die scheinbar 2 Fokusierten Buttons, bzw. hat die CheckBox nicht wirklich den Fokus, sie glaub es nur, weil Du ihr das vorgaukelst :mrgreen:

snapman 29. Jan 2007 01:57

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
Ähm, Du verwechselst da was:

WM_SETFOCUS wird an als Benachrichtigung an ein Fenster gesendet, das es den Fokus erhalten hat.
Was Du suchst ist: MSDN-Library durchsuchenSetFocus

Vorsicht: Windows.SetFocus schreiben :wink:

Edit: Deshalb auch die scheinbar 2 Fokusierten Buttons, bzw. hat die CheckBox nicht wirklich den Fokus, sie glaub es nur, weil Du ihr das vorgaukelst :mrgreen:

hab es jetzt mit SetFocus probiert, nützt leuder auch nix
wnd1 ist die checkbox

Delphi-Quellcode:
......

keybd_event(VK_TAB, 0, 0, 0);
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);

Windows.SetFocus(wnd1);

keybd_event(VK_SPACE, 0, 0, 0);
keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0);

Sunlight7 29. Jan 2007 02:04

Re: Mausklick simulieren funktioniert nicht
 
Wenn man das selber net Testen kann is etwas schwer :(

Aber Zeit für Plan B :mrgreen:

Hab mir das Bild nochmal angeguckt und gesehen, das die CheckBox nen AccelChar hat :stupid:

Versuchs mal damit:

Delphi-Quellcode:
// d drücken
keybd_event(68, 0, 0, 0);
keybd_event(68, 0, KEYEVENTF_KEYUP, 0);

Light 29. Jan 2007 02:16

Re: Mausklick simulieren funktioniert nicht
 
Eigentlich wäre es ja so viel zu einfach oder?

:-D

(kann es leider auch nicht testen...

Leuchtende Grüße

Stefan

Sunlight7 29. Jan 2007 02:26

Re: Mausklick simulieren funktioniert nicht
 
Nö warum,
eigentlich müßte das genügen:
Delphi-Quellcode:
...
begin
   SetForegroundWindow(wnd);
   
   keybd_event(68, 0, 0, 0); // d drücken
   keybd_event(68, 0, KEYEVENTF_KEYUP, 0);

   keybd_event(76, 0, 0, 0); // l drücken
   keybd_event(76, 0, KEYEVENTF_KEYUP, 0);
end;
Grüßle!

snapman 29. Jan 2007 03:18

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Sunlight7
Wenn man das selber net Testen kann is etwas schwer :(

Aber Zeit für Plan B :mrgreen:

Hab mir das Bild nochmal angeguckt und gesehen, das die CheckBox nen AccelChar hat :stupid:

Versuchs mal damit:

Delphi-Quellcode:
// d drücken
keybd_event(68, 0, 0, 0);
keybd_event(68, 0, KEYEVENTF_KEYUP, 0);

Das mit dem d funktioniert nichtmal manuell.
Haben die Heinis zwar unterstrichen aber nicht implementiert

Light 29. Jan 2007 14:26

Re: Mausklick simulieren funktioniert nicht
 
Hi Ihr,

kann es sein das ihr grad nen Denkfehler eingebaut habt?

um den AccelChar anzusteuern benutzt man doch normalerweise auch die Alt taste oder??

das heißt erst alt taste Drücken dann D drücken dann D loslassen dann alt Loslassen ;-)

oder Irre ich mich jetzt?

Leuchtende Grüße

Stefan

snapman 29. Jan 2007 14:41

Re: Mausklick simulieren funktioniert nicht
 
Zitat:

Zitat von Light
Hi Ihr,

kann es sein das ihr grad nen Denkfehler eingebaut habt?

um den AccelChar anzusteuern benutzt man doch normalerweise auch die Alt taste oder??

das heißt erst alt taste Drücken dann D drücken dann D loslassen dann alt Loslassen ;-)

oder Irre ich mich jetzt?

Leuchtende Grüße

Stefan

also wie gesagt der AC für die checkbox funktioniert weder mit alt+d noch mit D
auch nicht wenn ich vor dem rechner selbst sitze und maus und tastatur benutze ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.
Seite 3 von 4     123 4      

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 by Thomas Breitkreuz