我喜欢编写一个小应用程序来在我当前的光标位置粘贴/插入一些文本。
例如:我在 Word 中:在这里我喜欢按 CTRL+ALT+1,它会在我的指针位置插入一些文本。或者我有一个打开的 Internet-Explorer 窗口、记事本、Adobe、...或任何其他应用程序
我从使用全局键盘挂钩库收听快捷键开始。
热键事件对我来说效果很好。但是现在我被卡住了,因为我找不到在光标位置粘贴/插入文本的方法。我尝试使用SendMessage/PostMessage或SendKeys。
SendMessage 的问题在于,如果您将它与键盘挂钩库一起使用,我无法获取每个窗口,并且 SendKeys 会被多次触发......
有什么想法可以继续吗?
热键代码:
namespace Developper_Dashboard
{
public partial class Form1 : Form
{
globalKeyboardHook gkh = new globalKeyboardHook();
private bool IsADown = false;
private bool IsBDown = false;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// Hide the MainForm
this.Opacity = 0;
// Listening Keys
gkh.HookedKeys.Add(Keys.LControlKey);
gkh.HookedKeys.Add(Keys.LMenu);
gkh.HookedKeys.Add(Keys.NumPad1);
gkh.KeyDown += new KeyEventHandler(gkh_KeyDown);
gkh.KeyUp += new KeyEventHandler(gkh_KeyUp);
}
void gkh_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.LControlKey)
{
IsADown = false;
}
if (e.KeyCode == Keys.LMenu)
{
IsBDown = false;
}
if (!IsADown | !IsBDown)
{
this.Opacity = 0;
}
//e.Handled = true;
}
void gkh_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.LControlKey)
{
IsADown = true;
}
if (e.KeyCode == Keys.LMenu)
{
IsBDown = true;
}
if (IsADown && IsBDown)
{
this.Opacity = 1;
}
if (IsADown && IsBDown && e.KeyCode == Keys.NumPad1)
{
// Here the code for paste/insert...?
}
}
}
}