一下来自VC++驿站:点击打开VC++驿站链接
1
代码实现:
HWND hWnd=::FindWindow(_T("Notepad"),_T("新建文本文档.txt - 记事本"));
if (hWnd!=NULL)
{
::ShowWindow(hWnd,SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
BOOL bToggled=IsKeyToggled(VK_CAPITAL);
if (bToggled)
{
keybd_event(VK_CAPITAL,0,0,0);
Sleep(100);
keybd_event(VK_CAPITAL,0,KEYEVENTF_KEYUP,0);
}
CString str=_T("aBcD");
for (int i=0;i<str.GetLength();i++)
{
TCHAR ch=str.GetAt(i);
if (_istlower(ch))
{
keybd_event(_totupper(ch),0,0,0);
Sleep(20);
keybd_event(_totupper(ch),0,KEYEVENTF_KEYUP,0);
}
else
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(ch, 0, 0, 0);
Sleep(20);
keybd_event(ch, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
Sleep(50);
}
if (bToggled)
{
keybd_event( VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY, 0);
Sleep(20);
keybd_event( VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
}
2
其中:
#define IsKeyToggled(nVirtKey) ((GetKeyState(nVirtKey) & 1) != 0)
说明:keybd_event 第一个参数传递大写字母,实际输入小写字母;
keybd_event 第一个参数传递小写字母,实际输出对应的数字。
---------是不正确的
所以,传进小写字母,并且要显示小写字母,就要转换到大写字母进行传入,
传进大写字母,并且要显示大写字母,要借助于 Shift 键+大写字母进行传入。