Versteckte Anwendung wieder sichtbar machen
-
drummi schrieb:
.. weil er mir sonst eine Fehlermeldung angezeigt hat ...
wie lautete denn diese?
-
Hi,
Für das hier (.cpp-Datei):
extern "C" __declspec(dllexport) __stdcall void SetHook(void);
gibt er mir folgende Fehlermeldung:
c++ error Monp14.cpp: Declation terminated incorrectly.
------------------------------
für das (.cpp-Datei):
extern "C" __declspec(dllexport) __stdcall void RemoveHook(void);
auch folgendes:
c++ error Monp14.cpp: Declation terminated incorrectly.
------------------------------
für das (.cpp-Datei):
extern "C" __declspec(dllexport) __stdcall DWORD CheckKey(int, WORD,LONG);
dieses hier:
c++ error Monp14.cpp: Multiple declaration for 'DWORD'. c++ error windef.h: Ealier declaration of 'DWORD'. c++ error Monp14.cpp: Type mismatch in redeclaration of 'DWORD' c++ error windef.h: Earlier declaration of 'DWORD'. c++ error Monp14.cpp: Declation syntax error.
für den windef.h Fehler werweist er mich auf folgende Zeile:
typedef unsigned long DWORD;
------------------------------
für das (.cpp-Datei):
void __fastcall TKeyHookForm::FormCreate(TObject *Sender) { SetHook(); }
meldet er mir das:
c++ error Monp14.cpp: Call to undefined function 'SetHook'.
------------------------------
für das nächste (.cpp-Datei):
void __fastcall TKeyHookForm::FormDestroy(TObject *Sender) { RemoveHook(); }
das hier:
c++ error Monp14.cpp: Call to undefined function 'RemoveHook'.
------------------------------
und für das hier (.h-Datei):
extern PACKAGE TForm14 *Form14;
immernoch diese:
c++ error Monp14.h: Declaration syntax error.
------------------------------
Ich hoffe, ihr könnt damit nun mehr anfangen (das waren jetzt alle Fehlermeldungen zu dem Code der Seite (Link oben)).Lg,
drummi
-
Hallo,
vermutlich wird die Ursache für den Fehler nicht in der Umsetzung des Codes für den Keyhook nach obigen Link liegen.
Dieser ist mehrfach getestet und fehlerfrei.Ratsam wäre, wenn du den Code zunächst in einem separaten Projekt erfolgreich testest.
Denn *TForm14 Form14; deutet auf eine schon recht umfangreiche Application hin. Dort könnte schon irgendwo ein Bug sein.
mfg
kpeter
-
Hi,
hmm, das ist schon komisch. Das scheint ja zu funktionieren, weil wie du ja sagtest wurde es schon mehrfach erfolgreich angewendet.
In einem Extra Projekt funzt es auch nicht.
Braucht man dazu ne bestimmte Bibliotheksdatei?
Sonst schreib ich hier jetzt mal mein Vorgehen auf (c++ Builder 1):
1. Neues Projekt erzeugen
2. ListBox auf der Form erzeugen
3. Code nach Unit1.h kopieren
4. Code nach Unit1.cpp kopieren
5. Projekt compilieren und startenerzeugte dll-Datei (keydll.dll) befindet sich im gleichen Ordner wie das Projekt (Project1.mak).
Übrigens hat er mir die gleichen Fehler (s.oben) bei der DLL-Erzeugung gemeldet (auch endgültige version). Wenn ich diese so wie ganz oben umgeändert habe, dann hat das dort funktioniert, sonst nicht.
Lg,
drummi
-
Was mir sofort auffällt:
die keydll.lib hast du dem Projekt des Form hinzugefügt?edit:
Hmm, ich sehe gerade BCB1; die kleinste Version ist bei mir BCB3.
Aber es sollte doch identisch sein?
-
hi,
die keydll.lib gibt's die extra oder sollte die beim compillieren der dll erstellt werden?
bei mir habe ich folgendes:keydll.dll
keydll.mak
keydll.h
keydll.cpp
keydll.tds
keydll.ils
keydll.ild
keydll.~ca
keydll.~ma(glaub' das waren alle. jedenfalls keine .lib-datei)!
Lg,
drummi
-
Hallo,
In der Projektverwaltung sollte es in etwa so aussehen ( am Beispiel BCB3 ):
-ProjectGroup1 | |---hookproject.cpp | | | -- k_hook | | | | | - k_hook.cpp | | | | | - KeyHookForm | | | -- keydll.lib | ---keydll | --keydll.cpp
Im DLL-Projekt muss unter Projektoptionen/Linker ein Haken bei Importbibliothek erzeugen gesetzt werden.
Obige Bezeichnungen stimmen glaube ich nicht mit dem O-Code überein, das Prinzip soll nur verdeutlicht werden
mfg
kpeter
-
hmmm...
ich hab' da jetzt mal geguckt, aber bei der version 1 gibt's den Menüpunkt Importbibliothek erzeugen nicht.
Kennt sich vielleicht jemand mit der Version 1 aus?
Lg,
drummi
-
ohne es genau zu wissen, vermute ich instinktiv, dass es mit der Version 1 nicht so einfach werden wird, oder gar nicht geht, oder Du nicht über das Wissen verfügst den bestehenden Code auf Deine Bedürfnisse anzupassen (ist nicht bös gemeint);
Was spricht den gegen ein TrayIcon? Nur um eine Anwendung sichtbar zu setzen einen Tastaturhook zu nutzen, finde ich persönlich ala Kanonen auf Spatzen.
-
Rostfrei[] schrieb:
Nur um eine Anwendung sichtbar zu setzen einen Tastaturhook zu nutzen, finde ich persönlich ala Kanonen auf Spatzen.
Mehr als das: es ist schlichtweg ungebührlich, so etwas zu machen. Solche Programme leben bei mir nicht lange.
drummi schrieb:
Kennt sich vielleicht jemand mit der Version 1 aus?
C++Builder 1 ist 13 Jahre alt. Ein Upgrade ist mehr als überfällig.