SendKeyStroke/SendText erweitern

Anfängerfragen zum Programmieren mit PureBasic.
mongolo89
Beiträge: 22
Registriert: 05.04.2006 13:28

SendKeyStroke/SendText erweitern

Beitrag 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 :(
mongolo89
Beiträge: 22
Registriert: 05.04.2006 13:28

Beitrag 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?
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag 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
PureBasic 4.40 (Windows - x86)
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Re: SendKeyStroke/SendText erweitern

Beitrag 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?
Pure Basic 4.0
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SendKeyStroke/SendText erweitern

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
TomTom
Beiträge: 130
Registriert: 18.10.2006 18:47

Re: SendKeyStroke/SendText erweitern

Beitrag von TomTom »

notepad ist nur ein beispiel... ich brauche eine tastendrucksimulation an ein fenster

vielen dank =)
Pure Basic 4.0
Antworten