我正在创建一个允许您粘贴文本的程序,但它看起来就像您在粘贴时键入它一样,粘贴Typer。
我想使用Ctrl + b
来引发粘贴,但我遇到热键问题。
我认为我需要的是使用WH_KEYBOARD_LL
挂钩并包含该user32文件,但是当我添加它和命名空间时,我通常会收到错误。
我最接近这个:http://thedarkjoker94.cer33.com/?p=111 - 但它似乎不适用于Ctrl
,alt
和其他修饰符,即使我使用KeyData
也是如此。
我需要一种方法来制作一个即使程序不是活动窗口也能工作的热键。这是Microsoft Visual C#2010中的Windows窗体应用程序。
有很多StackOverlow主题但它们已经过时且不够完整,我无法运行。
答案 0 :(得分:5)
您在谈论HookManager吗?
我成功地使用它:
HookManager.KeyDown += new KeyEventHandler(HookManager_KeyDown);
和
void HookManager_KeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Keys.LWin)) // Is the Left-Windows Key down and ...
switch (e.KeyCode)
{
case Keys.O:
// ...
e.Handled = true;
break;
case Keys.H:
// ...
e.Handled = true;
break;
}
}
我在这里创建的Keyboard类是代码:
// Used: http://www.pinvoke.net/default.aspx/user32.getasynckeystate
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Win32.Devices
{
public class Keyboard
{
[DllImport("user32.dll")]
static extern ushort GetAsyncKeyState(Keys vKey);
public static bool IsKeyDown(Keys key)
{
return 0 != (GetAsyncKeyState(key) & 0x8000);
}
}
}