在C#/ .NET中将密钥发送到非活动应用程序

时间:2009-10-18 12:30:28

标签: c# .net sendkeys

我有一个带有combobox的应用程序,其中包含当前正在运行的应用程序的名称。据我从msdn库中了解到,SendKeys方法只能将密钥发送给活动应用程序。在.NET中是否有可能将密钥发送到非活动应用程序?或者至少在WinAPI中?

2 个答案:

答案 0 :(得分:1)

您可以使用SendMessage() API函数将键击发送到非活动窗口。

答案 1 :(得分:0)

使用C#< 3可能:D

不需要像你希望的那样成为活跃的窗口。

另外here 虚拟密钥代码

的有用列表
        [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

        [DllImport("user32.dll")]
        public static extern bool PostMessage(int hWnd, uint Msg, int wParam, int lParam);

        private void button1_Click(object sender, EventArgs e)
        {
            const int WM_SYSKEYDOWN = 0x0104;
            const int VK_KEY_A = 0x41;

            IntPtr WindowToFind = FindWindow(null, "Window Name");

          //In ur case u have to write a code that translates the combobox into Virtual Key Codes. Will take time but it shouls be easy

            PostMessage(WindowToFind, WM_SYSKEYDOWN, VK_KEY_A, 0);
          //PostMessage(WindowToFind, WM_SYSKEYDOWN, ((int)Keys.NumPad7), 0);
        }