WebBrowser在通过HotKey调用时没有响应SendKeys

时间:2017-01-17 19:14:07

标签: c# focus webbrowser-control sendkeys

我目前正在尝试创建一个应用程序,我可以用它来播放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
    }

0 个答案:

没有答案