一部のウィンドウ (私の場合は VLC プレーヤー ウィンドウ) から送信された Windows システム メッセージ (WM_SETTEXT など) をトラップするにはどうすればよいですか? NativeWindow クラスを継承し、次のように WndProc をオーバーライドしようとしました。
class VLCFilter : NativeWindow
{
System.IntPtr iHandle;
const int WM_SETTEXT = 0x000C;
public VLCFilter()
{
Process p = Process.GetProcessesByName("vlc")[0];
iHandle = p.MainWindowHandle;
}
protected override void WndProc(ref Message aMessage)
{
base.WndProc(ref aMessage);
if (aMessage.HWnd != iHandle)
return false;
if (aMessage.Msg == WM_SETTEXT)
{
MessageBox.Show("VLC window text changed!");
}
}
}
WM_SETTEXT メッセージが VLC プレーヤーによって送信されることを Microsoft Spy++ で確認しましたが、私のコードでは作業が完了していないようです。私は主に参照しました: http://www.codeproject.com/kb/dotnet/devicevolumemonitor.aspx
私はこれをしばらくの間成功させようとしています。私は何を間違っていますか?私がしていないことは何ですか?多分これを行う簡単な方法はありますか?
私の最初の目標は、VLCプレーヤー(バックグラウンドのどこかで再生され、アプリケーションに埋め込まれていない可能性があります)が再生を繰り返すときにキャッチすることです(WM_SETTEXTメッセージが送信されることに気づき、このように見つけようとしています) .