hur.cn - 华软网

 热门搜索

keybd_event 模拟键盘输入的问题!

  作者:未知    来源:网络    更新时间:2015/11/25
发了很多次都说有非法词组,没办法,只好截图:


---华软 网友回答---
键盘消息会被发送到有输入焦点的窗口

::SetForegroundWindow(hEditWnd);
keybd_event(VK_LSHIFT, MapVirtualKey(VK_LSHIFT, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), 0, 0);
keybd_event(VK_LEFT, MapVirtualKey(VK_LEFT, 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_LSHIFT, MapVirtualKey(VK_LSHIFT, 0), KEYEVENTF_EXTENDEDKEY|KEYEVENTF_KEYUP, 0);

还可以发送消息 EM_SETSEL


---华软网友回复---
还是通过消息来设置吧

HWND    hWnd=NULL, hWndEdit=NULL;  
hWnd = ::FindWindow(NULL,_T("目标主窗口标题"));  
if(!hWnd)  
{   
return;  
}  
hWndEdit = ::FindWindowEx(hWnd,NULL,_T("Edit"),NULL);  
if(!hWndEdit)  
{  
return;  
}

//Sleep(5000);

//先发送EM_GETSEL消息获得目标edit控件中光标位置,如果edit控件中文本没有选中的情况下,lStart=lEnd=光标位置
long lStart=0,lEnd=0;
//同步获取
::SendMessage(hWndEdit,EM_GETSEL,(WPARAM)(&lStart),(LPARAM)(&lEnd));
//异步设置选中文本
::PostMessage(hWndEdit,EM_SETSEL,(WPARAM)(0),(LPARAM)(lEnd));

---华软网友回复---
有些系统按键,不一定能够触发      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。