【发布时间】:2015-08-20 13:30:52
【问题描述】:
我正在使用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()吗? -
我没有,这有效,关键监听器现在触发。但是鼠标侦听器没有。我可以通过两个钩子,一个全局的一个应用程序来解决这个问题。谢谢您的帮助!随意添加这个作为答案,我会标记它。否则,我会在问题中添加详细信息,以帮助遇到此问题的其他人。
-
这看起来很奇怪,但其实没那么多……实际上,键盘有一个焦点,所以如果它在你的应用程序上,可能全局钩子无法获取输入;至于鼠标,它没有焦点,因此应用程序挂钩将无法获取其输入。这只是一个疯狂的猜测。
-
或者,你知道,我不再说废话了,stackoverflow.com/questions/30326187/…
标签: c# mousekeyhook