我不清楚什么时候可以调用这个函数,据说MSDN上讲在消息队列有消息时,此函数可能调用失败。就算我将这个函数在定时器回调函数中调用,返回值还是0.以下是我的例子代码:LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
OutputDebugString(_T("键被按下\r\n"));
break;
case WM_KEYUP:
OutputDebugString(_T("键抬起\r\n"));
break;
case WM_RBUTTONDOWN:
{
KEYBDINPUT ki1,ki2;
ki1.wVk=ki2.wVk=VK_F4;
ki2.dwFlags=KEYEVENTF_KEYUP;
INPUT ip[2];
ip[0].type=INPUT_KEYBOARD;
ip[0].ki=ki1;
ip[1].type=INPUT_KEYBOARD;
ip[1].ki=ki2;
if(SendInput(2,ip,sizeof(INPUT)))
OutputDebugString(_T("发送消息成功\r\n"));
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}SendInput总是返回0,而且窗体过程也没有接受到WM_KEYDOWN,WM_KEYUP消息。我不清楚这个函数把消息发送到哪里了?哪位大侠清楚呀?
{
switch (message)
{
case WM_KEYDOWN:
OutputDebugString(_T("键被按下\r\n"));
break;
case WM_KEYUP:
OutputDebugString(_T("键抬起\r\n"));
break;
case WM_RBUTTONDOWN:
{
KEYBDINPUT ki1,ki2;
ki1.wVk=ki2.wVk=VK_F4;
ki2.dwFlags=KEYEVENTF_KEYUP;
INPUT ip[2];
ip[0].type=INPUT_KEYBOARD;
ip[0].ki=ki1;
ip[1].type=INPUT_KEYBOARD;
ip[1].ki=ki2;
if(SendInput(2,ip,sizeof(INPUT)))
OutputDebugString(_T("发送消息成功\r\n"));
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}SendInput总是返回0,而且窗体过程也没有接受到WM_KEYDOWN,WM_KEYUP消息。我不清楚这个函数把消息发送到哪里了?哪位大侠清楚呀?
解决方案 »
- 请问如何获取文件名,目录名,并保存到变量?
- 一个基本问题
- 如何实现HTTP上传文件,server 端用asp 或jsp或其他服务器脚本接收的那种.
- 要在VC集成开发环境中嵌入其他编译器,怎么实现?
- 请问怎么才能知道一个系统用户属于那个本地组?
- 求解——程序退出后不能读取上次保存的数据
- 为什么vc++写的程序要mfc42d.dll mfco42d.dll呢,有没有办法使写的程序不要这两个dll呢,需要设置什么呢
- vs2005开发程序在本机可正常使用,在其他机器无法运行(在线等)
- MFC下,怎么删除FlexGrid控件一个单元格中的数据
- 难题操作系统打开一个程序时发送什么消息?
- xsl 加入图片
- 如何在控制面板中调试DLL插件:下面是主管给我的方法,看不懂
Sleep(1000);
INPUT ip[2]={0};
KEYBDINPUT ki1={0},ki2={0};
ki1.wVk=ki2.wVk=VK_F7;
ki2.dwFlags=KEYEVENTF_KEYUP;
int a=SendInput(2,ip,sizeof(INPUT));
TCHAR szMessage[1024];
_stprintf(szMessage,_T("有%d个消息入队\r\n"),a);
OutputDebugString(szMessage);现在的函数调用成功了。但是窗体过程没有接受到WM_KEYUP消息。SendInput把消息发送到哪里了呢?
SendInput do NOT send the message to the window directly. You must active the window for receiving the user input message from the system.