2011-04-08 2 views
1

내 클래스도 양식도 Control에서 상 속됨 (그것의 DLL)C#에서 OS 메시지 듣기

protected override void WndProc(ref System.Windows.Forms.Message m) 
    { 
     switch (m.Msg) 
     { 
      // listen os messages 


      // Ueye Message 
      case uEye.IS_UEYE_MESSAGE: 
       //fetch frame 
       break; 
     } 
     base.WndProc(ref m); 
    } 
때문에의 WndProc를 사용하는 은어 OS이나 메시지를들을 WndProc 메서드와 유사한 C#에서 어떤 방법이 있나요 특정 메시지를 수신 할 경우
+0

잘 모르겠지만이 내용을 덧글로 달았습니다.하지만 WMI를 사용할 수있을 것 같습니다. 나는 그것을 어딘가에 제거 할 수있는 USB 드라이브를 듣기 위해 사용했습니다. –

+0

@JonasVan은 몇 가지 링크를 제공 할 수 있습니까? 어떻게 사용할 수 있습니까? (예제) ... 감사합니다. –

+0

제가 작업하고있는 프로젝트를 알려 드리겠습니다. –

답변

0

당신은 할 것 승리 API

1

WMI에 액세스 할 수 Windows.Interop

를 사용해야합니다. 한 번만 USB 드라이브를 제거하고 WMI가 올바르게 작동하는 프로젝트 (질문에 대한 의견 참조)가있었습니다.

interop도 사용할 수 있지만 난잡하지만 YMMV를 찾습니다.

0

보이는 창이없는 경우 Windows 메시지를받는 표준 방법은 메시지를 수신 할 수있는 보이지 않는 창을 만드는 것입니다.

+0

내 클래스에 더미 양식을 만들었지 만 WndProc을 재정의 할 적절한 방법이 없다고 ...? 보이지 않는 방법 양식과 recieved? 고맙습니다. –

+0

글쎄, 필자는 항상 win32 API에 대해 작성하고 CreateWindow를 호출하지만 의심의 여지가 없습니다. –

0

양식이 있거나 보이는 경우 Form.WndProc을 확인하십시오.

그렇지 않은 경우 Application.AddMessageFilter을 사용하여 Windows 메시지를 모니터링하는 메시지 필터를 추가 할 수 있습니다.

+0

것은 DLL에서 가져와야합니다 ... WinForm 프로젝트가 아닙니다 –

+0

@Sisya - 네 WinForms, WPF 또는 관리되지 않는 MessageReplication이있는 Application.AddMessageFilter가 포함 된 응용 프로그램에서 DLL을 호출하면 가능합니다. 어쨌든 시도할만한 가치가 있습니다. – Joe