kostenloser Webspace werbefrei: lima-city


Tastenglobal abfragen.

lima-cityForumProgrammiersprachenProgrammieren mit .NET & Mono

  1. Autor dieses Themas

    valentinwinkelmann

    valentinwinkelmann hat kostenlosen Webspace.

    Hallo, ich hab den Auftrag für die schule ein kleines Überwachungsprogramm zu schreiben damit der lehrer sehen kann was die Schüler an den pc's treiben.
    ich hab da an ein Keylogger gedacht, der Lehrer wollte das ganze möglichst in VB gelöst haben, bin allerdings nicht sehr erfahren damit, möglichst sollte es nicht in der Taskleiste angezeigt werden sonst stört es aber in der kleineren leiste rechts wo Uhrzeit und so weiter angezeigt wird sollte ein Warnsymbol blinken Falls das Programm aktiv ist, dann wissen die Schüler von vorne herein schon das sie keine scheiße machen sollten.

    suche jetzt ein Script der einfach alle tasten mit protokolliert und beim herunterfahren dann eine Text Datei mit den verlauf auf den Schul-ftp Server senden. das Programm kann man dann ja einfach in den Autostart packen nehme ich an und das mit den Wahrnsymbol kann ich schon allein nur bei den tastenprotokolieren da komm ich einfach nicht weiter, würde mich sehr um Hilfe freuen.
    LG valentin.w
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich weiss nicht was du dir hier als Antwort erhoffst, den wenn du willst, dass jemand für dich so etwas schreibt (was doch nicht hoffe), dann könnte es schwer werden.
    Ich kann in deinem Beitrag leider keine einzige Fragen finden, von daher ist mir nicht klar, was du überhaupt willst.
    Willst du ein Fertiges Programm, einen Denkanstoss oder was?

    Hier einmal ein Verweis auf die Funktion um die Tasten abzufragen: http://www.vbarchiv.net/api/details.php?id=getasynckeystate
  4. Hi,

    eine globale Tastenabfrage kannst du leider nicht mit irgendwelchen Events von VB aus durchführen, da diese immer objektbezogen sind (auf ein Fenster oder ein Steuerelement wie ein Button).

    Da dein Programm vermutlich überhaupt kein sichtbares Fenster haben soll (soll ja nur in der Symbolleiste versteckt sein), musst du das über eine API-Funktion machen, die Microsoft glücklicherweise zur Verfügung stellt:

    Public Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer


    Wie man diese benutzt findest du in zahlreichen Tutorials raus. Es ist leider nicht so bequem und ganz so einfach wie mit Events, denn im Grunde musst du diese Funktion für alle Tasten immer und immer wieder abfragen und gucken, ob die Funktion per Rückgabewert sagt, ob die abgefragte Taste gedrückt ist oder nicht.

    Achso, achte darauf, dass der Übergabeparameter nVirtKey nix mit dem ASCII-Code zu tun hat (stimmt nur Teilweise überein)! So können dann auch Tasten wie STRG, ALT, F1-F12, ... abgefragt werden. Dafür gibt es in VB auf jeden Fall eine Enumeration, die du hier auf dieser Microsoft-Seite wiederfindest.

    So etwas in der Art habe ich auch mal programmiert. Jedoch zu einem anderen Zweck: habe mir einige Tastenkürzel definiert, mit denen ich Programme schnell starten kann, so eine Art QuickLaunch per Tastatur:-)

    Viele Grüße
  5. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    Ich Zitiere hier einfach mal ;)
    Re: Capturing Global Key Events Posted by pingpong on 25 Jun 2003 at 7:40 AM
    You need to write what they call a system wide hook.

    This involves using the SetWindowsHookEx API with the WH_KEYBOARD (or WH_KEYBOARD_LL) hook. You should put your code in a DLL (to be able to load it in any process space) and involves setting up a shared data segment.

    All the above is pure win32 system programming, I cannot see why you want to use C# with that. You might be able to pull it off with the appropriate PInvoke calls but your ".NET" DLL will be unmanaged and unsafe, so why bother? Stick with normal C/C++ and vanilla Win32 API.

    : Does anybody know how to capture global key events in c#? So that no matter what program is in focus, my program will be notified of all of the keys.
    :
    : My intention is to write a program similar to Project Dolphin, for those faimiliar with it ( http://project-dolphin.net ). It basically takes all keys hit and counts them, then periodically uploads that number to a central server so that people can compare the data to each other and whatnot.
    :

    Quelle: http://www.programmersheaven.com/mb/csharp/162240/197065/re-capturing-global-key-events/?S=B20000

    Habe ich übrigens nach 30 sekunden google-suche gefunden. Klick mal hier ;)

    lg
    Doomdrake
  6. heroes-of-legends schrieb:
    Quelle: http://www.programmersheaven.com/mb/csharp/162240/197065/re-capturing-global-key-events/?S=B20000

    Habe ich übrigens nach 30 sekunden google-suche gefunden. Klick mal hier ;)
    Du bist ein wirklich ein Held 'heroes-of-legends', da passt dein Name echt dazu. Was soll man mit diesem Zitat anfangen? Also ich könnte mich nicht sofort hinsetzen und wüsste was zu tun ist. Von daher kannst du dir solche Kommentare sparen.
  7. Autor dieses Themas

    valentinwinkelmann

    valentinwinkelmann hat kostenlosen Webspace.

    tangoal schrieb:
    Hi,

    eine globale Tastenabfrage kannst du leider nicht mit irgendwelchen Events von VB aus durchführen, da diese immer objektbezogen sind (auf ein Fenster oder ein Steuerelement wie ein Button).

    Da dein Programm vermutlich überhaupt kein sichtbares Fenster haben soll (soll ja nur in der Symbolleiste versteckt sein), musst du das über eine API-Funktion machen, die Microsoft glücklicherweise zur Verfügung stellt:

    Public Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer


    Wie man diese benutzt findest du in zahlreichen Tutorials raus. Es ist leider nicht so bequem und ganz so einfach wie mit Events, denn im Grunde musst du diese Funktion für alle Tasten immer und immer wieder abfragen und gucken, ob die Funktion per Rückgabewert sagt, ob die abgefragte Taste gedrückt ist oder nicht.

    Achso, achte darauf, dass der Übergabeparameter nVirtKey nix mit dem ASCII-Code zu tun hat (stimmt nur Teilweise überein)! So können dann auch Tasten wie STRG, ALT, F1-F12, ... abgefragt werden. Dafür gibt es in VB auf jeden Fall eine Enumeration, die du hier auf dieser Microsoft-Seite wiederfindest.

    So etwas in der Art habe ich auch mal programmiert. Jedoch zu einem anderen Zweck: habe mir einige Tastenkürzel definiert, mit denen ich Programme schnell starten kann, so eine Art QuickLaunch per Tastatur:-)

    Viele Grüße

    Danke das werde ich doch gleich mal austesten:) danke dir
  8. heroes-of-legends

    heroes-of-legends hat kostenlosen Webspace.

    tangoal schrieb:
    heroes-of-legends schrieb:
    Quelle: http://www.programmersheaven.com/mb/csharp/162240/197065/re-capturing-global-key-events/?S=B20000

    Habe ich übrigens nach 30 sekunden google-suche gefunden. Klick mal hier ;)
    Du bist ein wirklich ein Held 'heroes-of-legends', da passt dein Name echt dazu. Was soll man mit diesem Zitat anfangen? Also ich könnte mich nicht sofort hinsetzen und wüsste was zu tun ist. Von daher kannst du dir solche Kommentare sparen.

    Die Windows API ist ja auch nicht für Anfänger...... Man sollte schon etwas Erfahrung haben oder sich zumindest etwas detailierter belesen um damit umgehen zu können, es sind eben keine simplen Methodenaufrufe.
    Hier mal nen Link der das mit den Keyboard-Hooks etwas erklärt:
    http://www.developer.com/net/net/article.php/2193301/Managing-Low-Level-Keyboard-Hooks-in-VB-NET.htm

    Ein KeyboardHook arbeitet im Endeffekt ähnlich wie ein EventHandler, nur das er im gegensatz zu diesem theoretisch auch das Event verhindern kann, also hier zum Beispiel die Tastatureingabe abfangen, bevor Windows sie weiterverarbeitet.

    grüße
    Doomdrake
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!