| Autor |
Beitrag |
nilsener1
      
Beiträge: 52
Win 98, XP
D4 prof.
|
Verfasst: Sa 14.01.06 16:43
Hallo,
ich simuliere den Tastendruck mit dem folgenden code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| str(zahl:2:2,s); for i:= 1 to length(s) do Begin wert1:=ord(s[i]); keybd_event(wert1,MapVirtualKey(wert1,0),0,0); keybd_event(wert1,MapVirtualKey(wert1,0),KEYEVENTF_KEYUP,0); sleep(100); end; |
das Programm zerlegt eine Zahl in die einzelnen Ziffern und übergibt diese an die Tastatur, dabei unterschlägt es aber den Dezimalpunkt.
Beispiel: Zahl = 1.25, simuliert wird die Tastenfolge 125, d.h der Dezimalpunkt wird nicht richtig ausgeführt. In wert1 wird für den Dezimalpunkt 46 ermittelt, nach ASCII Tabelle ist das der richtige Wert.
Delphi-Quelltext 1: 2:
| keybd_event(ord('.'),MapVirtualKey(ord('.'),0),0,0); keybd_event(ord('.'),MapVirtualKey(ord('.'),0),KEYEVENTF_KEYUP,0); |
schreibt den Dezimalpunkt auch nicht.
Was mache ich falsch?
Gruss nilsener
Problem gelöst,
statt
Delphi-Quelltext
muss es heissen
Delphi-Quelltext 1:
| wert1:=vkkeyscan(s[i]); |
Gruss nilsener
Moderiert von Christian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Sa 14.01.2006 um 17:32
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Sa 14.01.06 21:08
Hallo,
machs mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| if wert1 = 46 then begin Keybd_Event($BE,0,0,0); Keybd_Event($BE,0,KEYEVENTF_KEYUP,0); end else begin keybd_event(wert1,MapVirtualKey(wert1,0),0,0); keybd_event(wert1,MapVirtualKey(wert1,0),KEYEVENTF_KEYUP,0); end; |
Weitere Information dazu:
Virtual-Key Codes
Such da nach VK_OEM_PERIOD.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
|