首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# SetForegroundWindow()有关问题

2014-01-12 
C# SetForegroundWindow()问题本帖最后由 mirbnbhdt01 于 2014-01-08 16:24:27 编辑[DllImport(user32.dl

C# SetForegroundWindow()问题
本帖最后由 mirbnbhdt01 于 2014-01-08 16:24:27 编辑         [DllImport("user32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);
        [DllImport("user32.dll")]
        private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        
        IntPtr ParenthWnd = FindWindow(null, "窗体名");
            if (ParenthWnd != IntPtr.Zero)
            {
                //选中当前的句柄窗口
                SetForegroundWindow(ParenthWnd);
                Console.WriteLine("暂停");
                Thread.Sleep(1000);
                SendKeys.SendWait(" ");
            }

我通过FindWindow 取得窗体的句柄 通过SetForegroundWindow()激活当前窗体  然后对该窗体发送一个空格事件  在32位系统下面能正常 但是64位系统里面之下 所选的窗体就不能激活 我应该怎么做才能在64位下激活指定的窗体呢
[解决办法]

ClickCharKey2(MainHwnd, 32);
private void ClickCharKey2(IntPtr hwnd, char key)
        {
            SystemApi.SendMessage(hwnd, SystemApi.WM_KEYDOWN, key, 0);
            Thread.Sleep(500);
            SystemApi.SendMessage(hwnd, SystemApi.WM_KEYUP, key, 0);
        }
public const int WM_KEYDOWN = 0x0100;
        public const int WM_KEYUP = 0x0101;
        public const int WM_CHAR = 0x0102;
        public const int WM_IME_KEYDOWN = 0x0290;//适用于tab键
DllImport("user32.dll", EntryPoint = "SendMessage")]
        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);


热点排行