我目前正在尝试创建一个应用程序,我可以用它来播放YouTube视频并使用系统范围的热键静音。 热键的检测工作正常,当我使用表单上的按钮调用时,切换视频播放的方法也可以正常工作。 然而,当我从“protected override void WndProc(ref Message m)”调用togglePlayback()方法时,它将调用该方法,但浏览器不会响应我的调用。
在尝试查明发生了什么时,我使用MessageBox来显示一些值。猜猜是什么,在消息框出现后我的方法调用有效?!
所以我猜这与显示的msgBox将整个程序带回“焦点”并注册的事实有关。
但我想让浏览器随时回复假输入(例如当我在游戏中时)
方法:
//Used to deal with the Message you recive when a registered hotkey is pressed
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0312 && m.WParam.ToInt32() == 1)
{
// Hotkey with id == 1 has been activated!
button2_Click(button2, new MouseEventArgs(MouseButtons.Left, 1, 12, 12, 5));
}
base.WndProc(ref m);
}
//Calling this method by clicking the button on the forms works, faking the call will add the text to the textbox but wont toggle anything
private void button2_Click(object sender, EventArgs e)
{
debugTextBox.Text += sender.ToString() + " -|- " + e.ToString() + "\n";
togglePlayback();
}
private void togglePlayback()
{
//If you let this msgBox pop up it will work...
//MessageBox.Show(webBrowser1.CanSelect?"True":"False");
debugTextBox.Text += "Playback Toggle!\n";
webBrowser1.Document.Focus();
SendKeys.Send("K"); //Pressing 'K' toggles pause
}