Einzelnen Beitrag anzeigen

gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#1

Explizites tasten event auslösen

  Alt 29. Mär 2010, 18: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
  Mit Zitat antworten Zitat