Hallo RSBasic,
Danke für den Hinweis...
Ich habe mit deiner Hilfe den Fehler im Code gefunden.
Vielen vielen Dank
Hier nochmal der funktionsfähige Code:
Code: Alles auswählen
;- Procedure Sendkey
Procedure SendKey(Key.s, AndCtrl=0) ; ## Änderungen hier : , AndCtrl=0
; get virtual key code and shift state
VK.w = VkKeyScan_(Asc(Key))
If VK = -1
ProcedureReturn
EndIf
; get scan code if an extended key
If MapVirtualKey_(VK, 2) = 0
Extended.l = #KEYEVENTF_EXTENDEDKEY
; get scan code
Scan.l = MapVirtualKey_(VK, 0)
Else
Extended = 0
Scan = 0
EndIf
; press shift/ctrl/alt if needed
Shift.l = VK & $100
Ctrl.l = VK & $200
Alt.l = VK & $400
If Shift
keybd_event_(#VK_SHIFT, 0, 0, 0)
EndIf
If Ctrl Or AndCtrl ; ## Änderungen hier : Or AndCtrl
keybd_event_(#VK_CONTROL, 0, 0, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, 0, 0)
EndIf
; press and release key
VK & $ff
keybd_event_(VK, Scan, Extended, 0)
keybd_event_(VK, Scan, #KEYEVENTF_KEYUP | Extended, 0)
; release shift/ctrl/alt if pressed
If Shift
keybd_event_(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Ctrl Or AndCtrl
keybd_event_(#VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
EndIf
If Alt
keybd_event_(#VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
EndIf
EndProcedure
; send string to foreground application
Procedure SendKeys(String.s)
For Letter.l = 1 To Len(String)
SendKey(Mid(String, Letter, 1))
Next
EndProcedure
RunProgram("notepad.exe")
Delay(1000)
SendKeys("abc") ; ## wir tippen abc
; achtung, für Ctrl verwenden wir sendkey, da sendkeys NICHT geändert wurde
SendKey("a",1) ; ## Änderungen hier (Aufruf): ("a",1) Wir senden Ctrl+A, markieren alles
Delay(500) ; kleine Pause damit man sieht was passiert
SendKey("c",1) ; kopieren es
SendKey("v",1)
Delay(500)
SendKey("v",1) ; wir fügen zweimal abc ein (das Erste mal überschreibt den ausgewählten text)