现在我所在项目是做一个软件键盘,现在遇到一个问题,问题是这样的:
1。在这个软件键盘里面,安装了一个全局钩子,以捕获WM_SETFOCUS消息,钩子捕获到这个消息之后,就判断这个窗口是否是可输入的窗口,也就是我发送WM_IME_CHAR消息,这个窗口能不能把我发送的文字显示出来,但问题是,得用什么方法来判断一个窗口是可输入的呢?,打个比方:Edit可以,按钮不可以接受输入。
2。在Word或者在Excel里面用VBA做了一个UserForm,再这个UserForm里面放了几个文本输入框,怎样当我已经得到了UserForm的句柄的前提下,给在这个UserForm中当前有输入焦点的文本输入框用程序输入文字。比如通过发送WM_IME_CHAR消息。先谢谢大家了!!!!!
1。在这个软件键盘里面,安装了一个全局钩子,以捕获WM_SETFOCUS消息,钩子捕获到这个消息之后,就判断这个窗口是否是可输入的窗口,也就是我发送WM_IME_CHAR消息,这个窗口能不能把我发送的文字显示出来,但问题是,得用什么方法来判断一个窗口是可输入的呢?,打个比方:Edit可以,按钮不可以接受输入。
2。在Word或者在Excel里面用VBA做了一个UserForm,再这个UserForm里面放了几个文本输入框,怎样当我已经得到了UserForm的句柄的前提下,给在这个UserForm中当前有输入焦点的文本输入框用程序输入文字。比如通过发送WM_IME_CHAR消息。先谢谢大家了!!!!!
char temp[100]; GetClassName(hWnd, temp, sizeof(temp));
long l =GetWindowLong(hWnd, GWL_STYLE);
if(l & ES_PASSWORD) //普通密码输入框
return 1;
if(!strcmp(temp,_T("Edit")))// Edit输入框
return 2;
else if(!strcmp(temp,_T("ComboBox")))//ComboBox
return 3;
else if(!strcmp(temp,_T("ListBox")))//ListBox
return 4;
else
return 0;
2.get parent hwnd ,then you can use EnumChildWindow to get child window handle.
也无法得到当前有焦点的窗口。
第一种方法也不太好,总不能把所有空间都判断以下吧?再说,有些应用程序根本不是用标准空间来提供输入的,比如,Word, UE等.