1
我使用Global MouseKeyHook来听取鼠标点击和按键,同时在VLC activeX控件中播放视频。鼠标点击侦听器触发很好,并按预期工作。但关键的按下/收听者不会触发。我附上了一些下面的代码,任何帮助将不胜感激。鼠标钥匙扣 - 钥匙听者没有触发
订阅事件
public void playVideo(string videoPath, bool loop)
{
stopTriggered = false;
this.loop = loop;
this.videoPath = videoPath;
this.WindowState = FormWindowState.Normal;
this.BringToFront();
m_GolbalHook = Hook.GlobalEvents();
m_GolbalHook.MouseClick += m_GolbalHook_MouseClick;
m_GolbalHook.KeyDown += m_GolbalHook_KeyDown;
axVLCPlugin21.Focus();
axVLCPlugin21.playlist.items.clear();
axVLCPlugin21.playlist.add("file:///" + videoPath);
axVLCPlugin21.AutoLoop = loop;
axVLCPlugin21_Pos = ScreenPositons.Screen1_Start;
axVLCPlugin21.playlist.play();
}
事件触发代码
private void m_GolbalHook_KeyDown(object sender, KeyEventArgs e)
{
//Not triggering at the moment
switch (e.KeyCode)
{
case Keys.Right:
shiftRight();
break;
case Keys.Left:
shiftLeft();
break;
}
}
您是否试过'Hook.AppEvents()'而不是'Hook.GlobalEvents()'? – Kilazur
我没有,而且那个作品,关键的听众现在开火了。但鼠标听众不会。我可以通过两个钩子,一个全球一个应用程序来解决这个问题。 感谢您的帮助!随意添加这个作为答案,我会标记它。否则,我会为该问题添加详细信息,以帮助任何有此问题的人。 – Sandwich
这看起来很奇怪,但不是那么多......实际上,键盘有一个焦点,所以如果它在你的应用程序上,那么全局钩子可能无法获得输入;至于鼠标,它没有焦点,所以应用程序钩子在获取输入时会遇到困难。这只是一个疯狂的猜测。 – Kilazur