2011-01-27 7 views
0

私のプログラムが投げた最後のイベントを確認するにはどうしたらいいですか?最後のイベントを取得する

たとえば、すべてのonClickイベントとonPaintイベント

+6

私は神があなたにそれを手伝ってくれるとは思わない。 –

+0

あなたがそれをあなた自身に入れない限り、これは可能ではないと思います... –

+0

おそらく、システムがあなたのプログラムに送信したイベントを見る方法を意味しますか?システムによって生成されたペイントとクリック。その場合は、VSツールのSpy ++ツールを使用して、プログラムウィンドウとスパイメッセージを選択することができます。 –

答えて

0

opは私の以前の記事で、オプションBに決定:

Application.AddMessageFilter(new MyMessageFilter()); 

class MyMessageFilter:IMessageFilter 
{ 
    void PreFilterMessage(ref Message m) 
    { 
     Control target=Control.FromHandle(m.HWnd); 
     //if(target!=null) 
     switch((WM)m.Msg) 
     { 
      case WM.LBUTTONDOWN://left mouse click 
      uint x=((uint)m.LParam)&0xFFFF; 
      uint y=((uint)m.LParam)>>16; 
      ... 
      break; 
     } 
    } 
} 

WM-列挙ここで見つけることができます:より多くのメッセージのための http://pinvoke.net/default.aspx/Enums/WindowsMessages.html

は、MSDNを見て:
- http://msdn.microsoft.com/en-us/library/ff468861%28v=VS.85%29.aspx
- http://msdn.microsoft.com/en-us/library/ff468877%28v=VS.85%29.aspx

+0

それは私に必要なもの.. ..ありがとう.. – unicorn

3

どのイベントが正確に異なりますか?コントロールからのイベントまたはすべてのイベントまたは何か?

4つの代替の方法があります
a)に使用すると、オブジェクトを自分で作成した場合 - >メッセージフィルタを登録
C - あなたは、クリック、塗料や気にいらないようなウィンドウイベントをしたい場合>)
B自分でイベントを登録)それが特別な種類のクラスであれば、マネージコードでコールをインターセプトするための文書化されていない方法があるかもしれませんが、それは本当に依存しています。
D)は、他の方法が存在しない場合、あなたはまだ、ポインタ(例えば、APIフックや気にいらを使用して周りにハックすることができます)

+0

私はオプションbが必要と思います。 – unicorn

+0

あなたはC#(C++ではない)でそれを行う方法を説明できますか? – unicorn

関連する問題