Anfängerfrage - DLL
-
Hallo,
ich würde gerne zum Testen die Funktion "BlockInput" von der DLL "user32.dll" aktivieren (TRUE) und dann wieder deaktivieren (FALSE).
Hier mein Code (Frage: Wo muss der Parameter "TRUE" hin?):
#include <iostream> #include <sstream> #include <stdlib.h> #include <string.h> #include <windows.h> string s = "D:\\WINDOWS\\system32\\user32.dll"; HMODULE x = GetModuleHandle (s.c_str()); GetProcAddress (x,"BlockInput,TRUE"); Sleep (5000); GetProcAddress (x,"BlockInput,FALSE"); system ("pause > NUL"); return 0;So funktioniert der Code nicht (Compiler erkennt keine Fehler, aber die Funktion wird nicht aufgerufen).
Wie muss ich die Parameter korrekt eingeben?
Danke im Voraus!
MfG
Seikuassi
-
Kleine Änderung: Die Tastatur wird scheinbar die ersten 5 Sekunden gesperrt. Warum aber nicht die Maus?

Danke im Voraus!
MfG
Seikuassi
-
Ich will den Compiler sehen, wo das kompiliert.
Zeig uns deinen richtigen Code.
-
Wo muss der Parameter "TRUE" hin?
Antwort/Lösung:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646290(v=vs.85).aspx
oder
TastaturHooks
-
Lösung 1:
Du macht es wie Alexey es andeutet. Du includierst windows.h, sorgst in deinen Projekteinstellungen dass User32.lib eingebunden wird (Visual Studio: Einstellungen -> Linker -> Eingabe) und rufst einfach die Funktion auf.DLL's ala User32 werden aber vermutlich standardmäßig von allen Windows Projekten mit eingebunden.
Lösung 2:
Du lädst die DLL zur Laufzeit, was komplexer ist und bei user32.dll einfach sinnlos ist, da die DLL schon von deinem Programm geladen ist.
-
Ich will den Compiler sehen, wo das kompiliert.
Zeig uns deinen richtigen Code.Ich verstehe nicht ganz... Ich habe die Datei mit Dev-C++ (MinGW32) kompiliert. Und das, wie schon gesagt, ohne Fehler.
Antwort/Lösung:
[url]http://msdn.microsoft.com ....... s646290%28v=vs.85%29.aspx[/url]Habe ich ja schon gemacht.
Damit es keine Kommunikationsprobleme zw. uns gibt
, bitte ich euch ganz einfach einen C++-Code zu schreiben, der eine Message Box aufruft, in dem man kein Handle übergibt (NULL), den Haupttext "Hallo", den Titel "Test" und die Option "MB_OK" übergibt (ohne den Befehl "MessageBox", sondern per DLL aufruft).
Ich will einfach nur sehen, wie man dann in C++ die Funktion aufruft.Danke im Voraus!
MfG
Seikuassi
-
Der Code setzt in irgend eine Aktion/Event:
BlockInput(TRUE)und wenn wieder entsperren willst dann:
BlockInput(FALSE)fertig !
-
Seikuassi schrieb:
ich würde gerne zum Testen die Funktion "BlockInput" von der DLL "user32.dll" aktivieren (TRUE) und dann wieder deaktivieren (FALSE).
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683212(v=vs.85).aspx
FARPROC WINAPI GetProcAddress( _In_ HMODULE hModule, _In_ LPCSTR lpProcName );@ Seikuassi
Was machst du da für einen Unsinn?Wenn du eine Funktion ich nennen es mal "deaktivieren" willst dann mach einen Globalen API Hook ...
Du scheinst aber gar nicht zu wissen was GetProcAddress überhaupt macht.
Wo hast du eigentlich diesen lustigen Quelltext her?^^ (Ich hoffe mal nur kopiert und nicht selber geschrieben.
)