Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
Delphi 2006 Architect
|
Explizites tasten event auslösen
29. Mär 2010, 19:07
Hallo zusammen,
Ich mache folgendes:
Delphi-Quellcode:
procedure TSFontroler.UpdateFanSpeed(AFan : TFanOverlayObject);
var
HWNDControl : HWND;
i:Integer;
wparam: smallint;
strNewSpeed:String;
begin
HWNDControl:= getControlHandle(AFan.ControleNumber);
if Afan.NewSpeed <> -1 then begin
if HWNDControl <> 0 then begin
PostMessage(HWNDControl, WM_KEYDOWN, 46,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 46, 0); // Delete taste rauf
PostMessage(HWNDControl, WM_KEYDOWN, 46,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 46, 0); // Delete taste rauf
PostMessage(HWNDControl, WM_KEYDOWN, 46,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 46, 0); // Delete taste rauf
PostMessage(HWNDControl, WM_KEYDOWN, 8,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 8, 0); // Delete taste rauf
PostMessage(HWNDControl, WM_KEYDOWN, 8,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 8, 0); // Delete taste rauf
PostMessage(HWNDControl, WM_KEYDOWN, 8,0); // Delete taste runter
PostMessage(HWNDControl, WM_KEYUP , 8, 0); // Delete taste rauf
strNewSpeed:= inttostr(AFan.NewSpeed);
GPModLog.AddToLog('Speddfancontrole: fan'+ AFan.overlayName + ': ' + strNewSpeed );
For i:= 1 to Length(strNewSpeed) do begin
wparam:= MapIntToKey(strNewSpeed[i]);
PostMessage(HWNDControl, WM_KEYDOWN, wparam,0); // Ctrl runter
// PostMessage(HWNDControl, WM_KEYUP , wparam, 0); // Taste runter
end;
end;
end;
end;
Function TSFontroler.MapIntToKey(akey: String) : Smallint;
begin
Case StrToInt(akey) of
0: Result:= 48;
1: Result:= 49;
2: Result:= 50;
3: Result:= 51;
4: Result:= 52;
5: Result:= 53;
6: Result:= 54;
7: Result:= 55;
8: Result:= 56;
9: Result:= 57;
End;
end;
So, der grund wieso postmessage mit dem keyUp event auskommentiert ist das der mir immer noch einmal eine Zahl hinzufügt. Scheint irgendwie mit dem lparam zusammen zu hängen... obwohl ich das nicht ganz verstanden habe was da sonst mit muss...
Ausserdem habe ich festgestellt das wenn ich das keyUp event weglasse und ich ctrl oder schift gedrückt halte auf der tastatur es diese messegas auch beinflusst... leider. Lässt sich das irgendwie umgehen? denn das programm läuft im hintergrund mit einem interval von 3 sec und jedesmal machts bing wenn ich die ctrl taste gedrückt halte
Tja jetzt meine frage an euch 1. was sollte da bei lparam mit damit er mir nicht jedesmal beim keyup nochmal ein zeichen hinzufügt?
2. Was kann ich machen damit ctrl&co ignoriert wird?
Danke und Gruss
GIBB
|