Unresolved external 'WinMain' in C0W32.OBJ (war: Fehlermeldung)



  • Dort will ich eine .exe kompilieren.

    heisst das, dass da nun TForm1 stehen muss, oder der Name der Form?

    Gruß
    MWJK



  • Wieso TForm oder Form1? Du verwendest die VCL doch gar nicht.
    Da muß eben das stehen, was beim Programmstart passieren soll.

    Sorry, aber irgendwie kann ich nicht so recht glauben, daß du damit dein Brot verdienst...



  • audacia schrieb:

    Wieso TForm oder Form1? Du verwendest die VCL doch gar nicht.
    Da muß eben das stehen, was beim Programmstart passieren soll.

    Sorry, aber irgendwie kann ich nicht so recht glauben, daß du damit dein Brot verdienst...

    Dort habe ich das mit drin stehen:

    Application->CreateForm(__classid(TKeyHookForm), &KeyHookForm);

    wobei KeyHookForm der Name der TForm1 ist.
    und normalerweise heisst das ja Form1 und das stand da auch anfangs drin, bis ich es TKeyHookForm genannt habe.

    nun wollte ich wissen, ob da TForm1 drin stehen muss, oder TKeyHookForm.

    Gruß
    MWJK



  • Jetzt mal langsam. Kannst du mal einen Link zu dem Beispiel, das du testen willst, posten?

    Wenn das Beispiel die VCL verwendet, mußt du das freilich auch tun, dann solltest du über Datei|Neu|Weitere... die VCL-Formularanwendung auswählen.



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-39145.html

    das ist der Link zur Einbauanleitung. Dieses Programm fängt die Tastenanschläge systemweit ab und gibt sie aus. das ganze nennt sich Hook.

    Das wollte ich dann nicht so belassen, sondern weiterverwenden, aber es funzt ja nichmal.

    Gruß
    MWJK



  • MWJK schrieb:

    Das wollte ich dann nicht so belassen, sondern weiterverwenden, aber es funzt ja nichmal.

    Doch, das funktioniert schon, zumindest bei mir 😉

    Wenn du folgendes tust, sollte es auch bei dir klappen:
    - DLL wie vorgeschrieben kompilieren (da solltest du auf keine Probleme stoßen)
    - eine neue VCL-Formularanwendung anlegen (vorzugsweise in der gleichen Projektgruppe)
    - du benennst das Formular in "KeyHookForm" um
    - du setzt eine ListBox auf das Formular und beläßt es vorerst beim Defaultnamen (ListBox1)
    - mit dem Methoden-Experten fügst du eine neue Methode namens KeyHook mit einem Parameter "TMessage& Message", der Aufrufkonvention __fastcall und dem Rückgabewert void ein. In den Methodenrumpf trägst du folgendes ein:

    char Key[80];
      GetKeyNameText(Message.LParam, Key, 80);
      ListBox1->Items->Add(Key);
    

    - in der Formular-Headerdatei fügst du folgendes nach "private:" ein:

    BEGIN_MESSAGE_MAP
          MESSAGE_HANDLER(WM_KEYHOOK, TMessage, KeyHook);
        END_MESSAGE_MAP(TForm);
    

    - in der .cpp-Datei fügst du nach der Definition des Formularobjekts das hier ein:

    extern "C" __declspec(dllexport) __stdcall void SetHook(void);
    extern "C" __declspec(dllexport) __stdcall void RemoveHook(void);
    extern "C" __declspec(dllexport) __stdcall DWORD CheckKey(int, WORD,LONG);
    

    - abschließend erstellst du über den Objektinspektor Handlerroutinen für die Ereignisse "OnCreate" und "OnDestroy", in deren Methodenrümpfe du

    SetHook();
    

    bzw.

    RemoveHook();
    

    einträgst.

    Und schon funktionierts 😉



  • Komisch, wenn ich das genau so mache, dann kommt wieder der Fehler mit der WinMain .....

    kA was ich falsch mache ....





  • mein teil war doch gar nict off topic.



  • Er ist OffTopic, und das ist hier keine Einladung zur Diskussion, weitere diesbezügliche Beiträge werden kommentarlos gelöscht.


Anmelden zum Antworten