Einzelnen Beitrag anzeigen

gibb

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

AW: Mausklick auf einen geteilten button auslösen.

  Alt 24. Jun 2010, 11:03
@medium, den Autor des anderen Programm habe ich bereits mehrfach über verschiedene wege angeschrieben. Er scheint jedoch kein interesse daran zu haben zu antworten. Ich habe ihm auch angeboten ihm meinen code für die steuerung zur verfügung zu stellen damit er diesen implementieren kann. er hätte nur die control unit anpassen müssen.
Dieser weg ist auch tot.

Also ich hatte bisher keine Probleme mit dem senden der keys abgesehen das was im thema explizites tasten event auslösen beschrieben ist.

zurzeit sieht die funktion die die keys versendet so aus:
Delphi-Quellcode:
  HWNDControl:= getControlHandle(AFan.ControleNumber);
 // HWNDControl:= DebugHandle();
  if (Afan.NewSpeed) <> -1 then begin
    if HWNDControl <> 0 then begin
 // sleep(3000);
    {  PostMessage(HWNDControl, WM_KEYDOWN, VK_DELETE,0); // Delete taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_DELETE, $C0000000); // Delete taste rauf
      PostMessage(HWNDControl, WM_KEYDOWN, VK_DELETE,0); // Delete taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_DELETE,  $C0000000); // Delete taste rauf
      PostMessage(HWNDControl, WM_KEYDOWN, VK_DELETE,0); // Delete taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_DELETE,  $C0000000); // Delete taste rauf
      PostMessage(HWNDControl, WM_KEYDOWN, VK_BACK,0); // backspace taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_BACK, $C0000000); // backspace taste rauf
      PostMessage(HWNDControl, WM_KEYDOWN, VK_BACK,0); // backspace taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_BACK,  $C0000000); // backspace taste rauf
      PostMessage(HWNDControl, WM_KEYDOWN, VK_BACK,0); // backspace taste runter
      PostMessage(HWNDControl, WM_KEYUP , VK_BACK,  $C0000000); // backspace taste rauf   }

      strNewSpeed:= inttostr(AFan.NewSpeed);
// GPModLog.AddToLog('Speddfancontrole: fan'+ AFan.overlayName + ': ' + strNewSpeed );
      SendMessage(hwndControl,WM_SETTEXT,0,(Integer(PChar(strNewSpeed))));
{        PostMessage(HWNDControl, WM_KEYDOWN, VK_BACK, 0); // Ctrl runter
        PostMessage(HWNDControl, WM_KEYUP , VK_BACK,  $C0000000); //  Taste runter   }

 // InvalidateRect(HWNDControl,0,false);

        SendMessage(hwndControl,WM_SETREDRAW,1,0);
        RedrawWindow(HWNDControl, nil, 0, 0);
        SendMessage(hwndControl,EN_CHANGE,0,0);
        {PostMessage(HWNDControl, WM_KEYDOWN, VK_RETURN,0); // backspace taste runter
       PostMessage(HWNDControl, WM_KEYUP , VK_RETURN,  $C0000000); // backspace taste rauf   }

    {  For i:= 1 to Length(strNewSpeed) do begin
        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);

      end;}

      // sleep(1);
    end;
  end;
end;
die vielen komentare sind verschiedene methoden die versucht wurden. (obwohl nicht mehr alle vorhanden sein dürften) sobald ich eine funktionierende lösung habe verschwinden auch die kommentare

Ich weiss auch das noch überflüssiger code vorhanden ist. aber ich hatte irgendwann keine lust mehr alles immer und immmer wieder umzubauen und habe einfach weitergeschrieben, werde das aber sicherlich noch bereinigen.

gruss Sev
  Mit Zitat antworten Zitat