使用后台C#应用程序在Windows系统上的光标位置粘贴或插入文本

时间:2013-06-23 14:31:41

标签: c# .net copy-paste hotkeys

我喜欢编写一个小应用程序来粘贴/插入当前光标位置的一些文本。

例如:我在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...?
            }
        }

    }
}

0 个答案:

没有答案