2014-03-03 11 views
3

我對C#總體上有點新,而且我正在開發一個小程序來處理我空閒時積壓的CAD內容。我使用的MouseKeyboardActivityMonitor庫在這裏找到:https://globalmousekeyhook.codeplex.com/,但有一些主要問題,例如啓動程序時輸入凍結,並且從那裏沒有用戶輸入被鉤子檢測到。我使用的是Windows 8.1 x64和編譯DLL和我自己對.NET 4.0從空閒到使用GlobalMouseKeyHook(C#)的動作

注可執行:我使用的是項目

第3版這是我的代碼(只是掛鉤的一個小的測試) :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using MouseKeyboardActivityMonitor; 
using MouseKeyboardActivityMonitor.WinApi; 
using System.Windows.Forms; 

namespace HookTest1 
{ 
class Program 
{ 
    static MouseHookListener mouseListener; 
    static KeyboardHookListener keyListener; 

    static void Main(string[] args) 
    { 
     Activate(); 

     while (true) 
     { 
      System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); 
     } 
    } 

    private static void OnUserActivity() 
    { 
     Console.Write("UserAct"); 
    } 

    private static void Activate() 
    { 
     mouseListener = new MouseHookListener(new GlobalHooker()); 
     mouseListener.Enabled = true; 
     mouseListener.MouseDown += OnMouseActivity; 
     mouseListener.MouseMove += OnMouseActivity; 
     mouseListener.MouseWheel += OnMouseActivity; 

     keyListener = new KeyboardHookListener(new GlobalHooker()); 
     mouseListener.Enabled = true; 
     keyListener.KeyDown += OnKeyActivity; 
    } 

    private static void OnMouseActivity(Object sender, System.Windows.Forms.MouseEventArgs e) 
    { 
     OnUserActivity(); 
    } 

    private static void OnKeyActivity(Object sender, System.Windows.Forms.KeyEventArgs e) 
    { 
     OnUserActivity(); 
    } 
} 
} 

感謝您的任何和所有幫助!

回答

1

你可能已經加入這個地方,只是刪除了你的樣品中......但你在主叫

Application.Run(); 

()?據我所知,你正在試圖鉤住窗口事件而沒有消息循環。 Application.Run會讓它運行。

+0

嘿男人!非常感謝回覆!我一定錯過了。似乎已經工作。 – Wenzel745