So, Folker, hier bitte. Meine Prozedur ist doch schon mal ein ganzes Stück übersichtlicher als deine, oder?
Außerdem habe ich
Select verwendet, welches flexibel erweiterbar ist.
Der Parameter "pause" ist frei wählbar und gibt an, wie lang die Pause zwischen den einzelnen Buchstaben sein soll.
Bis jetzt werden nur Zahlen, Buchstaben und Leerzeichen unterstützt, aber wie ich ja sagte, das Ding ist flexibel erweiterbar.
Das Delay vor dem Prozeduraufruf dient dazu, dass man noch genug Zeit hat, um nach Notepad zu switchen, damit dort reingeschrieben werden kann.
Ich möchte dir noch was zum flexiblen Erweitern der Prozedur sagen. Hast du schon gemerkt, dass die ASCII-Werte der Zeichen 0, 1, ..., 9 und [Leerzeichen] direkt in
keybd_event_() eingesetzt werden können? Mehr dazu steht unten in diesem Posting.
Code:
EnableExplicit
Procedure type(text.s, pause.l=40)
Protected *pos.Character=@text
While *pos\c
Select *pos\c
Case 'A' To 'Z'
keybd_event_(#VK_SHIFT, 0, 0, 0)
keybd_event_(*pos\c, 0, 0, 0)
keybd_event_(*pos\c, 0, #KEYEVENTF_KEYUP, 0)
keybd_event_(#VK_SHIFT, 0, #KEYEVENTF_KEYUP, 0)
Case 'a' To 'z'
keybd_event_(*pos\c-32, 0, 0, 0)
keybd_event_(*pos\c-32, 0, #KEYEVENTF_KEYUP, 0)
Case '0' To '9', ' '
keybd_event_(*pos\c, 0, 0, 0)
keybd_event_(*pos\c, 0, #KEYEVENTF_KEYUP, 0)
EndSelect
*pos+SizeOf(Character)
Delay(pause)
Wend
EndProcedure
Delay(2345)
type("Folker Putt 0190")
Außer dem Pointer *pos brauche ich keine weiteren Variablen. Das Pointern macht meine Prozedur auch so schnell.
Folker, ich möchte dir noch einen Tipp geben: bei Zahlen machst du so eine komische Rechnung. Du schreibst:
> LetterV=$30+Letter-48
aber das ist völlig unnötig. Die Zahl 1 hat den ASCII-Wert 49. Dieser kann sofort in
keybd_event_() eingesetzt werden. In deiner rechnung fressen sich $30 und -48 auf, weil $30 gleich 48 ist!
_________________
PB 4.30Code:
Macro Happy
;-)
EndMacro
Happy End