Probelm mit der auswertung, der von KeyboardProc gesendeten parameter!, PLZ HELP



  • wie es liegt ein fehler vor der nich gelöst werden kann?
    ich werd das jetzt mal mit pipes oder copydata versuchen... und wenns dann net klappt geb ichs auf.

    Gruß Tobi.



  • T0bi schrieb:

    wie es liegt ein fehler vor der nich gelöst werden kann?

    Aus Deiner Fehlerbeschreibung geht folgendes hervor :

    1. Wenn die eigene Anwendung den Fokus hat, dann funktioniert SendMessage ().

    2. Wenn die eigene Anwendung den Fokus hat, dann funktioniert MessageBox () nicht.

    Genau das ist der Fehler, der nicht gelöst werden kann : Es widerspricht sich.



  • aber mein hook baut doch genau so auf wie in der fasq ... und da sollte es doch auch funktionieren...



  • Der Widerspruch liegt hier :

    static LRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lParam ) { 
    ...
     if( nCode >= HC_ACTION ) { 
    
      SendMessage( hWndDLL, WM_KEYMESSAGE, (WPARAM)wParam, (long)lParam ); 
      MessageBox (0,"","",0); 
     } 
    ...
    }
    

    Wie kann es sein, dass
    -> SendMessage () nur funktioniert, wenn die eigene Anwendung den Fokus hat, aber
    -> MessageBox () nie ?



  • Haehhh ich verstehs net -.- also jetzt funktionierts.... sogar global...
    also die messagebox erscheint jetz... sogar wenn das fenster den focus net hat.



  • ---gestrichen---

    *EDIT* (Post nicht mehr notwendig)

    Hurra ! 🙂

    Dann nimm jetzt wieder SendMessage () im Hook und in der eignen Anwendung mit "WM_USER+2".



  • also ich habe mal geschaut. und ich finde die dll tatsächlich nur in meiner eigenen anwendung... aber denoch tauchen die MsgBoxen auf.



  • Die DLL müsste aber in jedem Prozess zu sehen sein, zumindest in allen, die von "explorer.exe" gestartet wurden.
    Tauchen die MsgBoxen auch auf, wenn Du zu einer anderen Anwendung wechselst ?



  • JA!, aber wie gesagt ich find die dll nicht in anderen processen.
    vllt. ist es noch interessant das die DLL GROß geschrieben wird in, da wo ich sie gefunden habe... aber eigentlich müsste sie ja klein geschrieben werden.



  • Die Namen der DLL's holt sich der Process Explorer immer aus dem "EXPORT"-Eintrag des "PE-Headers" der DLL.
    Der angezeigte Name muss nicht identisch sein mit dem Dateinamen der DLL.



  • hmm... also wird die dll nicht an andere processe gelinkt... hmmm muss ich da irgendwie manuel was machen? LoadLibery oder so?



  • Die DLL wird in die anderen Prozesse "gemappt", nicht "gelinkt". 🙂

    Prüf mal den Aufruf von SetWindowsHookEx (). "hInst" muss das Handle der DLL sein :

    ...
    hKeyHook = SetWindowsHookEx( WH_KEYBOARD, (HOOKPROC)KeyboardProc, hInst, 0 /* GLOBAL */ ); 
    ...
    


  • ich könnte dir mein project auch mal per mail geben und du schaust es dir mal an, waer das ok?

    das handle is schon richtig... hab ich in ATTACH_PROCESS_DLL uebergeben.



  • Hab dir jetz die mail geschickt.

    Gruß Tobi.


Anmelden zum Antworten