Seite 1 von 1

SendKeyStroke/SendText erweitern

Verfasst: 11.11.2006 11:37
von mongolo89
Hallo,
Ich habe folgende Funktionen von einem Freund bekommen:

Code: Alles auswählen

Procedure SendKeyStroke(Window,Key.b,Param.b)
Select Param
Case 0
SendMessage_(Window,#WM_CHAR,Key,0)
Delay(5)
Case 1
SendMessage_(Window,#WM_KEYDOWN,Key,0)
SendMessage_(Window,#WM_CHAR,Key,0)
SendMessage_(Window,#WM_KEYUP,Key,0)
Case 2
SendMessage_(Window,#WM_KEYDOWN,Key,0)
Delay(2)
SendMessage_(Window,#WM_CHAR+$20,Key,0)
Delay(2)
SendMessage_(Window,#WM_KEYUP,Key,0)
EndSelect
EndProcedure

Procedure SendText(Window,Text.s)
For Letters=1 To Len(Text)
SendKeyStroke(Window,Asc(Mid(Text,Letters,1)),1)
Delay(1)
Next Letters
EndProcedure
Diese Funktionen ermöglicht es mir,Tastendrücke oder einen Text and ein bestimmtes Fenster zu senden,das nicht aktiv ist!
Aber leider funktioniert das nicht mit Spezialzeichen (z.B. $, %,ALT+Taste,...), kann mir jemand helfen das so umzuschreiben das das auch geht (auch mit einem nichtaktiven Fenster wieder)

Ein Beispiel für die Anwendung wäre:

Code: Alles auswählen

Window=FindWindow_(0,"Editor")
SendText(Window,"lalala")
SendKeyStroke(Window,#vk_return,1)
SendText(Window,"2. Zeile")
Aber Alt+A z.b. geht's nicht :(

Verfasst: 12.11.2006 22:12
von mongolo89
Kann mir keiner irgendwie weiterhelfen ? :(
Oder ist es doch möglich mit der Funktion Spezialtasten und z.B. Alt+T zu drücken?

Verfasst: 13.11.2006 00:40
von tobe
hi mongolo89,

hab deinen code mal ausprobiert,
aber bei mir passiert da nix ;)

einen globalen Alt-Tastendruck kannste so simulieren:

Code: Alles auswählen

keybd_event_(#VK_MENU,0,0,0) ; ALT DRUECKEN
keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; ALT LOSLASSEN

Re: SendKeyStroke/SendText erweitern

Verfasst: 10.01.2014 14:49
von TomTom
Hi ich möchte was vergleichbares programmieren...

ich möchte einen einfachen Tastendruck an ein fremdes Fenster senden, das nicht im Vordergrund ist.

allerdings habe ich folgendes Problem:
der Code oben funktioniert bei mir nicht, kann es sein das es an Windows 7 liegt?
mein Code sieht wie folgt aus:

Code: Alles auswählen

Window=FindWindow_(0,"test.txt - Editor")
Debug Window
SendMessage_(Window,#WM_KEYDOWN,#VK_A,0)
SendMessage_(Window,#WM_CHAR,#VK_A,0)
SendMessage_(Window,#WM_KEYUP,#VK_A,0)
habe mir extra das Window ausgeben lassen, dort steht eine zahl drinn (also fenster wurde gefunden)

Kann mir da jemand weiterhelfen?

Re: SendKeyStroke/SendText erweitern

Verfasst: 10.01.2014 15:21
von RSBasic
Ist Notepad als Zielfenster nur ein Beispiel oder möchtest du wirklich da rein schreiben?
Du kannst dort auch deinen kompletten Text aufeinmal einfügen und nicht buchstabenweise.
Beispiel: http://www.rsbasic.de/aktualisierung/wi ... hreiben.pb

Re: SendKeyStroke/SendText erweitern

Verfasst: 10.01.2014 16:41
von TomTom
notepad ist nur ein beispiel... ich brauche eine tastendrucksimulation an ein fenster

vielen dank =)