AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Explizites tasten event auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

Explizites tasten event auslösen

Ein Thema von gibb · begonnen am 29. Mär 2010 · letzter Beitrag vom 26. Mai 2010
 
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, 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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz