我喜欢编写一个小应用程序来粘贴/插入当前光标位置的一些文本。
例如:我在Word中:在这里我想按CTRL + ALT + 1,它会在我的指针位置插入一些文字。或者我有一个开放的Internet-Explorer窗口,记事本,Adobe,......或任何其他应用程序
我开始使用global Keyboard hook library听取快捷方式。
热键的事件对我来说很好。但现在我卡住了,因为我发现没有办法将文本粘贴/插入光标的位置。我尝试使用 SendMessage / PostMessage 或 SendKeys 。
SendMessage的问题是我无法获取每个窗口而SendKeys会被多次触发,如果你使用它来修改Keyboard钩子库......
我有什么想法可以继续吗?
热键代码:
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...?
}
}
}
}