• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[C++] Immer aktiv "ohne" Fenster

Status
Für weitere Antworten geschlossen.
C

Cryspy

Guest
Wie kann ich ein Windows-Programm so programmieren dass es immer aktiv ist, auf die Nachrichten reagiert und unsichtbar (bis auf den prozess^^) ist?

Also... Wenn ich zum Beispiel 'r' drücke passiert irgendwas. Auch wenn ich es im IE, in Word oder sonst wo drücke.
 
du musst es in den Tray verbannen ;)

und zwar googlest du mal nach C++ und SysTray oder System Tray oder sowas in der Richtung.
.. zumindest wenn ich richtig verstanden hab, dass das Proggy laufen soll, ohne dass man es sieht.


lg,
n1ob

// Edit: will da jemand vielleicht n keylogger schreiben? ^^
 
Zuletzt bearbeitet:
Hallo,

auch im Tray bekommt er dann afaik nicht die gedrückte Taste mitgeteilt.

Dazu muss man sich beim Tastaturtreiber einhacken (hook) und eine Callback Funktion einrichten.

Schau dir mal auf meiner Seite Open CD, insbesondere die DLL, an.

N43
 
// Edit: will da jemand vielleicht n keylogger schreiben? ^^

Oh nein! Meine finsteren Pläne sind durchschaut worden! :lol:

Würd für mich wenig Sinn machen. Ich hab "Beziehungen" wo ich Keylogger wo FUD sind herkrieg ;ugl

Aber der Quelltext von OpenCD is zu hoch für mich (bin halt net so wirklich der C++ Chief).

Kann mir das einer mit denn Hooks und so ein bissl näher erklären oder mir nen gutes Tutorial zeigen?
 
Abend,

ich versuch mal den Code soweit ich mich erinner zu erklären.

Zunächst muss ein Callback eingerichtete werden.
Code:
hHook = SetWindowsHookEx (WH_KEYBOARD, (HOOKPROC)KeybHandler, hinstglob, 0); 
if(hHook==NULL)  {
   // Einhacken ist Fehlgeschlagen
}
Als Callback (Eine normale Funktion, die beim Eintreten des Ereignisses ausgeführt wird) wird KeybHandler eingerichtet.

Wenn das einhacken geklappt hat wird ab sofort immer die KeybHandler Funktion aufgerufen:
Code:
LRESULT CALLBACK DLL_EXP KeybHandler (int nCode, WORD wp, DWORD lp)
{
   if (nCode == HC_ACTION)  { 
      if ((wp == VK_F12) && (lp & 0x80000000))  { 
      }
   }

   return (int)CallNextHookEx(hHook,nCode,wp,lp);
}
Wofür die Variablen nCode und lp sind weiß ich nimmer. wp enthält auf jeden Fall die gedrückte Taste. Unter Windows sind das die Virtual Keys, musst mal nach den ganzen Konstanten (VK_*) googeln.


Über CallNextHookEx wird das Ereignis auch an alle anderen eingehackten Handler (bzw. das aktive Programm) geschickt.

Am Ende vom Programm muss der eingehackte Handler wieder entfernt werden.
Code:
// nur entfernen, wenn wir uns auch wirklich eingehackt hatten
if (hHook != NULL) { 
   UnhookWindowsHookEx (hHook); 
}
Ob man dazu wirklich eine DLL schreiben und in den Prozessraum laden muss weiß ich nicht, aber ich meine, dass es ohne nicht ging.

Hoffe die Erklärungen helfen ein bischen. Tut. dazu kenne ich keins, hab mir das damals an 'nem anderen Code abgeschaut.


N43
 
lp und wp stehen für LParam bzw WParam und enthalten die Daten zur Nachricht, und was es für eine Nachricht ist, bestimmt nCode.
 
bei mir klappt es immer so ich erstelle eine Win-App in Dev-C++ und entferne die Zeile ShowWindow(*); also * steht für die Bezeichnung des hWnd... so geht es eigtl auch =)
 
@w7: Ich mach meine Fenster ein bissl anders, als mit ShowWinodw().

Danke für die Codeerklärung. Ich versuch den Code mal für meinen "Keylogger" anzupassen. Mal gucken was drauß wird.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben