jemand nen plan wieso das das so ist?
code sieht so aus:
Delphi-Quellcode:
wparam:= MapIntToKey(strNewSpeed[i]);
// PostMessage(HWNDControl, WM_KEYUP , VK_CONTROL, $20000000); // ctrl up
// PostMessage(HWNDControl, WM_KEYUP , VK_SHIFT, $10000000); // shift up
ShftGedrueckt := GetKeyState(VK_SHIFT) and 128 = 128; // Shift Status abfragen
CtrlGedrueckt := GetKeyState(VK_CONTROL) and 128 = 128; // Ich glaub die Taste heisst VK_CTRL
if ShftGedrueckt then
keybd_event (VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
if CtrlGedrueckt then
keybd_event (VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
PostMessage(HWNDControl, WM_KEYDOWN, wparam, 0); // Ctrl runter
PostMessage(HWNDControl, WM_KEYUP , wparam, $C0000000); // Taste runter
if ShftGedrueckt then keybd_event (VK_CONTROL, 0, 0, 0);
if CtrlGedrueckt then keybd_event (VK_CONTROL, 0, 0, 0);
und ist leicht zu testen, man braucht nur ne 2 te app macht und dort auf das formular ein edit postet findet diese funktion den
handle des edits:
Delphi-Quellcode:
function TSFontroler.DebugHandle():hwnd;
var
wndMain, wndChild: HWND;
begin
wndMain := FindWindow('TForm1','Form1');
if wndMain <> 0 then
begin
wndChild := FindWindowEx(wndMain, 0, 'TEdit', nil);
if wndChild <> 0 then
begin
Result:= wndChild;
end;
end;
end;
wenn man zusätzlich das hier definiert:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
oldKey, newKey :Char ;
begin
if (key in [#48..#57, #8]) then begin
beep;
FKeyList:= FKeyList + key;
end else begin
Key:= #0
end;
end;
und bei postmessage eine zahl mitgibt. dann wird wenn man im else teil der funktion landet ctrl oder shift nicht ignoriert. weil dann aus der zahl einen nicht zahl charakter gemacht wird.
Mein Problem ist jetzt ja nicht mehr das ich im else teil lande sondern ctrl/Shift nicht mehr deaktiviert wird nach
Delphi-Quellcode:
if ShftGedrueckt then keybd_event (VK_CONTROL, 0, 0, 0);
if CtrlGedrueckt then keybd_event (VK_CONTROL, 0, 0, 0);
wenn ich anschliessend den ctrl/shift taste loslasse.
mfg Gibb