12 个解决方案
#1
模拟键盘操作
#2
麻烦您具体点,谢谢!
#3
FindWindow
然后 SendMessage
然后 SendMessage
#4
1.模拟鼠标键盘输入,类似于按键精灵的形式,优点,代码编写简单,缺点,如果目标窗口被遮挡或最小化,则会模拟失败。
移动鼠标:
SetCursorPos()
模拟点击:
mouse_event()
模拟键盘输入:
keybd_event()
或:
SendInput()
2.发Windows消息,优点,目标窗口被遮挡,最小化,隐藏,也能成功模拟操作,缺点,代码编写较麻烦,需要了解Windows的各种消息,少部分程序由于它做了防范措施,对这些程序模拟无效。
查找目标窗口上的文本框句柄:
FindWindow()
FindWindowEx()
找到文本框句柄后用SendMessage()给它发WM_SETTEXT消息,就实现了给它的文本框输入内容
模拟点击按钮和菜单,就发WM_COMMAND消息,模拟点击鼠标就发WM_LBUTTONDOWN WM_LBUTTONUP消息
模拟键盘就发WM_KEYDOWN WM_KEYUP消息,等等
移动鼠标:
SetCursorPos()
模拟点击:
mouse_event()
模拟键盘输入:
keybd_event()
或:
SendInput()
2.发Windows消息,优点,目标窗口被遮挡,最小化,隐藏,也能成功模拟操作,缺点,代码编写较麻烦,需要了解Windows的各种消息,少部分程序由于它做了防范措施,对这些程序模拟无效。
查找目标窗口上的文本框句柄:
FindWindow()
FindWindowEx()
找到文本框句柄后用SendMessage()给它发WM_SETTEXT消息,就实现了给它的文本框输入内容
模拟点击按钮和菜单,就发WM_COMMAND消息,模拟点击鼠标就发WM_LBUTTONDOWN WM_LBUTTONUP消息
模拟键盘就发WM_KEYDOWN WM_KEYUP消息,等等
#5
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
#7
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
#8
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
#9
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
#10
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
所以说不要异想天开,按msdn上的来。
#11
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
所以说不要异想天开,按msdn上的来。
非常感谢
#12
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(LPCTSTR)strUserName);
#1
模拟键盘操作
#2
模拟键盘操作
#3
FindWindow
然后 SendMessage
然后 SendMessage
#4
1.模拟鼠标键盘输入,类似于按键精灵的形式,优点,代码编写简单,缺点,如果目标窗口被遮挡或最小化,则会模拟失败。
移动鼠标:
SetCursorPos()
模拟点击:
mouse_event()
模拟键盘输入:
keybd_event()
或:
SendInput()
2.发Windows消息,优点,目标窗口被遮挡,最小化,隐藏,也能成功模拟操作,缺点,代码编写较麻烦,需要了解Windows的各种消息,少部分程序由于它做了防范措施,对这些程序模拟无效。
查找目标窗口上的文本框句柄:
FindWindow()
FindWindowEx()
找到文本框句柄后用SendMessage()给它发WM_SETTEXT消息,就实现了给它的文本框输入内容
模拟点击按钮和菜单,就发WM_COMMAND消息,模拟点击鼠标就发WM_LBUTTONDOWN WM_LBUTTONUP消息
模拟键盘就发WM_KEYDOWN WM_KEYUP消息,等等
移动鼠标:
SetCursorPos()
模拟点击:
mouse_event()
模拟键盘输入:
keybd_event()
或:
SendInput()
2.发Windows消息,优点,目标窗口被遮挡,最小化,隐藏,也能成功模拟操作,缺点,代码编写较麻烦,需要了解Windows的各种消息,少部分程序由于它做了防范措施,对这些程序模拟无效。
查找目标窗口上的文本框句柄:
FindWindow()
FindWindowEx()
找到文本框句柄后用SendMessage()给它发WM_SETTEXT消息,就实现了给它的文本框输入内容
模拟点击按钮和菜单,就发WM_COMMAND消息,模拟点击鼠标就发WM_LBUTTONDOWN WM_LBUTTONUP消息
模拟键盘就发WM_KEYDOWN WM_KEYUP消息,等等
#5
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
#6
#7
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
#8
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
#9
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
#10
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
所以说不要异想天开,按msdn上的来。
#11
1、FindWindow找到目标窗口
2、EnumChildWindows或者FindWindowEx找到目标文本输入框窗口,最好配合SPY++工具
3、向文本输入框发送WM_SETTEXT消息
首先非常感谢您的回答,我按照您的方法做,已经完美解决。但是还有一个小问题,第三步的时候我是定义了一个字符串指针然后用做sendmessage的消息参数,但是如果我定义的是一个CString的对象呢?我该如何把CString对象中的字符发送出去(因为我觉得CString对象对字符串的操作要比简单的字符串方便得多)
理论上也可以的啊:
CString strUserName = _T("苍老师");
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(&strUserName));
但是还是用字符串数组吧,因为msdn上说的很清楚了:
lParam
A pointer to a null-terminated string that is the window text
时间证明确实不行,发送过去的就是乱码了,哈哈!
所以说不要异想天开,按msdn上的来。
非常感谢
#12
::SendMessage(hWndUserID,WM_SETTEXT,0,(LPARAM)(LPCTSTR)strUserName);