Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi probleme bim senden von tasten (https://www.delphipraxis.net/31586-probleme-bim-senden-von-tasten.html)

novabeat 11. Okt 2004 14:03


probleme bim senden von tasten
 
hallo !!

ich verwende folgenden code, nachzusehen, ob in einem fenster bestimmte pixel weiß sind, un dann die pfeiltesten zu drücken:
Delphi-Quellcode:
  dc := GetDC(0);

  if (GetPixel(dc,rect.Left + 146,rect.top + 155)= clwhite) and (GetPixel(dc,rect.Left + 174,rect.top + 155)= clwhite) then begin
     keybd_event(VK_down, MapVirtualKey(VK_down, 0), 0, 0);
     keybd_event(VK_down, MapVirtualKey(VK_down, 0), KEYEVENTF_KEYUP, 0);
     label1.Caption := 'DOWN';
  end;
  if (GetPixel(dc,rect.Left + 149,rect.top + 130)= clwhite) and (GetPixel(dc,rect.Left + 149,rect.top + 158)= clwhite) then begin
     keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), 0, 0);
     keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), KEYEVENTF_KEYUP, 0);
     label1.Caption := 'LEFT';
  end;
  if (GetPixel(dc,rect.Left + 146,rect.top + 133)= clwhite) and (GetPixel(dc,rect.Left + 174,rect.top + 133)= clwhite) then begin
     keybd_event(VK_UP, MapVirtualKey(VK_UP, 0), 0, 0);
     keybd_event(VK_UP, MapVirtualKey(VK_UP, 0), KEYEVENTF_KEYUP, 0);
     label1.Caption := 'UP';
  end;
  if (GetPixel(dc,rect.Left + 171,rect.top + 130)= clwhite) and (GetPixel(dc,rect.Left + 171,rect.top + 158)= clwhite) then begin
     keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), 0, 0);
     keybd_event(VK_RIGHT, MapVirtualKey(VK_RIGHT, 0), KEYEVENTF_KEYUP, 0);
     label1.Caption := 'RIGHT';
  end;

  ReleaseDC(0, dc);
im label wird auch richtig angezeigt, was er erkannt hat, also "DOWN" oder so, aber er drückt nicht die taste in dem (aktiven) Programm. Das ist in VB geschrieben, kann es daran liegen ?

danke

Assarbad 11. Okt 2004 19:43

Re: probleme bim senden von tasten
 
Das sollte mit VB nix zu tun haben. Hast du mal getestet bei welchem Fenster die entsprechende Fensternachricht ankommt? zB mit Spy++ oder SpyXX oder Motzis Spy-Tool.

novabeat 12. Okt 2004 12:59

Re: probleme bim senden von tasten
 
nee, hab ich nicht. wie macht man denn das genau ?

ich kenn den programmierer auch und hab ihm das mal erzählt und der hat gemeint, dass er in VB die tastatureingaen direkt mit irgendeinen DLL aus dem system abfrägt. kann das das prob sein ?

toms 12. Okt 2004 13:03

Re: probleme bim senden von tasten
 
Hi,

Bist du auch sicher, dass das Programm den Fokus hat?

Assarbad 12. Okt 2004 13:07

Re: probleme bim senden von tasten
 
Zitat:

Zitat von novabeat
ich kenn den programmierer auch und hab ihm das mal erzählt und der hat gemeint, dass er in VB die tastatureingaen direkt mit irgendeinen DLL aus dem system abfrägt. kann das das prob sein ?

Das wäre mir neu und klingt auch faszinierend. Schreib ihm doch mal ne PN ;) ... Schönen Gruß von mir *g*

novabeat 12. Okt 2004 13:13

Re: probleme bim senden von tasten
 
ich bin mir 100% sicher das das fenster den fokus hat ! die titelleiste ist blau.
und selber kann ich in dem fenster auch das machen was gemacht wreden soll. also ich mein das fenster reagiert auf die pfeltesten, wenn ich die manuell drücke.

mein code ist doch eigendlich korrekt oder ?

toms 12. Okt 2004 13:17

Re: probleme bim senden von tasten
 
Was ist denn das für eine App? Wenn sie ja nicht zu gross ist, könntest du mir eine Kopie schicken, dann werde ich's mir anschauen.

novabeat 12. Okt 2004 13:19

Re: probleme bim senden von tasten
 
gerne. deine Mail adresse ?

toms 12. Okt 2004 13:23

Re: probleme bim senden von tasten
 
Per PN geschickt.

novabeat 13. Okt 2004 14:55

Re: probleme bim senden von tasten
 
das prog ist bei dir.

ich bekomm evtl heute noch den code mit der der progger die pfeiltasen abfrägt. ich poste den hier dann

novabeat 13. Okt 2004 17:05

Re: probleme bim senden von tasten
 
soo hier mal die mail, die ich von dem progger bekommen hab:
Zitat:

Hiermit wird die funktion eingebunden/definiert
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

und so wird sie benutzt:
result = GetAsyncKeyState(X)

X ist die taste, jede taste hat eine zahl ....
result gibt jenach status halt nen wert zurück:

key up
key down
key hold

in irgentwelchen zahlen werten (k.a. so ca um die -30000)

cYa

Robert Marquardt 13. Okt 2004 17:15

Re: probleme bim senden von tasten
 
Die Pfeiltasten sind gemein. Es gibt sie zweimal. Einmal als separate Pfeiltasten und dann nochmal im Ziffernblock.
Oft ignorieren Programme die Pfeiltasten des Zehnerblocks.
Setz mal das Extended-Bit aka KEYEVENTF_EXTENDED.

novabeat 18. Okt 2004 12:05

Re: probleme bim senden von tasten
 
das bit gibts bei mir nicht

toms 18. Okt 2004 12:55

Re: probleme bim senden von tasten
 
er meint KEYEVENTF_EXTENDEDKEY

novabeat 19. Okt 2004 15:19

Re: probleme bim senden von tasten
 
nee bringt auch nix.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.

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