| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3283 人关注过本帖
标题:怎么判断某个进程的输入法状态
只看楼主 加入收藏
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
怎么判断某个进程的输入法状态
怎么判断某个进程的输入法状态?
例如,玩游戏时(全屏游戏),切换输入法后怎么判断这个游戏的输入法状态。
win32 API里有个  ‘AttachThreadInput 连接线程输入函数 ’
说明 :
    通常,系统内的每个线程都有自己的输入队列。本函数(既“连接线程输入函数”)允许线程和进程共享输入队列。连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状态以及输入队列状态都会进入共享状态
返回值 :
    Long,非零表示成功,零表示失败,会设置会GetLastError
参数表
参数             类型及说明
idAttach Long,欲连接线程的标识符(ID)
idAttachTo Long,与idAttach线程连接的另一个线程的标识符
fAttach Long,TRUE(非零)连接,FALSE撤消连接
搜索更多相关主题的帖子: win32 输入法 进程 
2009-08-16 13:18
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:14 
这个跟C#有什么关系吗?

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-08-16 14:49
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
应该用到了WIN32 函数。

QQ:491697374  Mail:vxbb@
2009-08-16 16:47
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
     问题解决了。   
程序代码:
        /// <summary> 
        /// 改键方法 
        /// </summary> 
        /// <param name="Vk_num"></param> 
        /// <returns></returns> 
        private int ChangeKey(byte Vk_num) 
        { 
            //获得魔兽程序的句柄 
            IntPtr wcHandle = Win32API.FindWindow(null, "Warcraft III"); 
            //获取魔兽进程的ID 
            IntPtr threadid = Win32API.GetWindowThreadProcessId(wcHandle, IntPtr.Zero); 
            //取得一个句柄,描述指定应用程序的键盘布局,  经比较中文输入法都小于0 
            int num = Win32API.GetKeyboardLayout(threadid); 
            //如果钩子有效并且不是中文输入法 
            if (wcHandle != IntPtr.Zero && num > 0) 
            { 
                //设置游戏窗口到最前 
                Win32API.SetForegroundWindow(wcHandle); 
                if (!KeyBoard_Press) 
                { 
                    Win32API.keybd_event(Vk_num, 0, 0, 0);//按下小键盘 
                    KeyBoard_Press = true; 
                } 
                else 
                { 
                    Win32API.keybd_event(Vk_num, 0, KEYEVENTF_KEYUP, 0); //松开小键盘 
                    KeyBoard_Press = false; 
                } 
                return 1; 
            } 
            return 0; 
        }

QQ:491697374  Mail:vxbb@
2009-08-16 19:30
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
这个方法最终是什么目的啊?
魔兽改快捷键?

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-08-16 19:37
vxbb
Rank: 6Rank: 6
等 级:侠之大者
帖 子:163
专家分:440
注 册:2008-8-18
收藏
得分:0 
回复 5楼 jedypjd

是啊,打3C的
能识别输入法状态了。不必每次聊天就关一次改键了。

QQ:491697374  Mail:vxbb@
2009-08-16 20:16
快速回复:怎么判断某个进程的输入法状态
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015575 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved