hey leute,
Normalerweise macht man doch damit EINEN tastendruck:
Delphi-Quellcode:
PostMessage(h, WM_KeyDown, $41, 0);
PostMessage(h, WM_KeyUp, $41, 0);
Doch komischerweise schickt er mir dann das "a" zweimal.
Ich hab mir die procedure von
EnterText und umgeschrieben.
Und zwar so:
Delphi-Quellcode:
procedure SendText(AText: String);
var lCount, Ky : Integer;
lScanCode : Smallint;
h : HWND;
lWithShift : Boolean;
begin
for lCount := 1 To Length(AText) Do
begin
lScanCode := VkKeyScan(AText[lCount]);
lWithShift := lScanCode and (1 shl 8) <> 0;
if lWithShift then
PostMessage(Memo1.Handle, WM_KeyDown, VK_SHIFT, 0);
PostMessage(Memo1.Handle, WM_KeyDown, lScanCode, 0);
PostMessage(Memo1.Handle, WM_KeyUp, lScanCode, 0);
if lWithShift then
PostMessage(Memo1.Handle, WM_KeyUp, VK_SHIFT, 0);
end;
end;
So sollte eigentlich funktionieren, also wenn der key ein grosses "A" ist das es dann auch ein grosses a macht.
Geht aber nicht da das KeyDown/KeyUp nicht wirklich geht.
Was ist daran dann falsch?