2017-11-18 8 views
0

포 그라운드 응용 프로그램이 아니더라도 항상 장치 (예 : 키보드 및 마우스)에서 입력을받는 첫 번째 응용 프로그램이되는 방법이 있습니까? 레지스트리를 조정할 필요없이 독립 실행 형 응용 프로그램으로이 작업을 수행 할 수 있습니까?포 그라운드 응용 프로그램이 아니더라도 C#을 사용하여 포 그라운드 응용 프로그램이 아닌 응용 프로그램에서 입력을 수신하는 방법은 무엇입니까?

+3

에서

nuget install MouseKeyHook

: https://msdn.microsoft.com/en-us/library/windows /desktop/ms644959(v=vs.85).aspx – Dai

+0

키보드 부분의 경우 배경 키 누를 수신기를 찾고 있습니다. 다음은 C#을 사용한 예제입니다. https://stackoverflow.com/questions/5852455/background-key-press-listener – Ergwun

+0

이 라이브러리는 도움이 될만한 것으로 보입니다 : https://github.com/gmamaladze/globalmousekeyhook – Ergwun

답변

0

그에 대한 nuget package있다 : 키보드 후크와 project's readme

private IKeyboardMouseEvents m_GlobalHook; 

public void Subscribe() 
{ 
    // Note: for the application hook, use the Hook.AppEvents() instead 
    m_GlobalHook = Hook.GlobalEvents(); 

    m_GlobalHook.MouseDownExt += GlobalHookMouseDownExt; 
    m_GlobalHook.KeyPress += GlobalHookKeyPress; 
} 

private void GlobalHookKeyPress(object sender, KeyPressEventArgs e) 
{ 
    Console.WriteLine("KeyPress: \t{0}", e.KeyChar); 
} 

private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e) 
{ 
    Console.WriteLine("MouseDown: \t{0}; \t System Timestamp: \t{1}", e.Button, e.Timestamp); 

    // uncommenting the following line will suppress the middle mouse button click 
    // if (e.Buttons == MouseButtons.Middle) { e.Handled = true; } 
} 

public void Unsubscribe() 
{ 
    m_GlobalHook.MouseDownExt -= GlobalHookMouseDownExt; 
    m_GlobalHook.KeyPress -= GlobalHookKeyPress; 

    //It is recommened to dispose it 
    m_GlobalHook.Dispose(); 
} 
관련 문제