Einzelnen Beitrag anzeigen

schwa226

Registriert seit: 4. Apr 2008
400 Beiträge
 
#9

Re: Simulierten Hotkey per WMHotKey abfangen?

  Alt 23. Apr 2008, 00:43
ManOMan.. bin am verzweifeln!

Das mit den Globalen Variabeln und MMF habe ich hinbekommen, aber nicht das Problem dass die MsgFilterFunc auch auf die eigenen keybd_events reagiert!

Habe versucht den Hook vor dem Keyboard Event aufzulösen. Das bringt aber auch nichts -> Endlosschleife!

z.B. Ich fange vom 1. Programm ein "Up" ab, dass für Programm 2 bestimmt gewesen wäre. Dann sende ich das "Up" an Program 3 das ich zuerst in den Vordergrund geholt habe!

Kann mir da nochmal jemand Helfen!?

Code:
    //ein Tasten Shorcut z.B. Up -> Up, Esc -> Enter, Enter -> Enter,...
     if ((TPMsg(lParam)^.wParam = HandleHook[x].car3)
     and (HandleHook[x].car4 = 0)
     and (HandleHook[x].car5 = 0)) then // 1. Cardinal
        begin
            if TPMsg(lParam)^.message = WM_KEYDOWN then// Taste unten
            begin

              TPMsg(lParam)^.message := WM_NULL;  //Originale Message löschen
              Result := CallNextHookEx(MMFData.NextHook, Code, wParam, lParam);

              ClearTempArray(HandleHook);          //HandleHook[x].car3.. bis car5 auf 0 setzen damit oben nicht mehr auf einen Tastendruck reagiert wird

              SetForeGroundWIndow(MMFData.ProgramHandle);

              keybd_event(HandleHook[x].car1, 0, 0, 0);

                if not (HandleHook[x].car2 = 0) then begin
                  keybd_event(HandleHook[x].car2, 0, 0, 0);
                  keybd_event(HandleHook[x].car1, 0, KEYEVENTF_KEYUP,0);
                  keybd_event(HandleHook[x].car2, 0, KEYEVENTF_KEYUP,0);
                end
                else keybd_event(HandleHook[x].car1, 0, KEYEVENTF_KEYUP,0);

              //Messagebox(0, PChar(HandleHook[x].str1), 'H O O K 1', 0);
              Kill := True;

              CopyBackTempArray();           //HandleHook[x].car3.. bis car5 wieder auf Original Shortcut Kombination zurücksetzen
              Break;
            end;
     end
....
..
.
  Mit Zitat antworten Zitat