两个问题,SendInput和字符转换

myj870517 2011-04-27 08:36:35

//第一个动作:模拟鼠标移动到指定位置
// INPUT MyMouseInput;
// MyMouseInput.type = INPUT_MOUSE;
// MyMouseInput.mi.dx = 0;
// MyMouseInput.mi.dy = 0;
// MyMouseInput.mi.dwFlags = MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE; //加上
// MyMouseInput.mi.mouseData = NULL;
// MyMouseInput.mi.dwExtraInfo = NULL;
// MyMouseInput.mi.time = NULL;

// //第二个动作:模拟鼠标左键按下
// MyMouseInput.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
// SendInput(1, &MyMouseInput, sizeof(INPUT));

// //第三个动作:模拟鼠标左键释放
// MyMouseInput.mi.dwFlags = MOUSEEVENTF_LEFTUP;
// SendInput(1, &MyMouseInput, sizeof(INPUT));

INPUT mouseInput[2];
memset(mouseInput, 0, 2 * sizeof(INPUT));

mouseInput[0].type = INPUT_MOUSE;
mouseInput[0].mi.dx = 0;
mouseInput[0].mi.dy = 0;
mouseInput[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
mouseInput[0].mi.mouseData = NULL;
mouseInput[0].mi.dwExtraInfo = NULL;
mouseInput[0].mi.time = NULL;

mouseInput[1].type = INPUT_MOUSE;
mouseInput[1].mi.dx = 0;
mouseInput[1].mi.dy = 0;
mouseInput[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
mouseInput[1].mi.mouseData = NULL;
mouseInput[1].mi.dwExtraInfo = NULL;
mouseInput[1].mi.time = NULL;

SendInput(2, mouseInput, sizeof(INPUT));

////
//打印错误代码
DWORD dw = GetLastError();
TCHAR szBuf[128];
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);

wsprintf(szBuf, _T("%s 出错信息 (出错码=%d): %s"), _T("CreateDirectory"), dw, lpMsgBuf);

LocalFree(lpMsgBuf);
OutputDebugString(szBuf);


1.SendInput注释掉的可以正常工作,没注释的不行,研究了半天也不知道哪里不对.

2.wsprintf(szBuf, _T("%s 出错信息 (出错码=%d): %s"), _T("CreateDirectory"), dw, lpMsgBuf); 这句编译时报错说
cannot convert const char* to const wchar* form argument 2....
我在VS下这句是可以运行的,是编码问题?貌似加了_T了.
感谢.
...全文
97 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
myj870517 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 duduqq 的回复:]
我现在不用SetInput了,直接用mousr_event
然后把winuser.h里面的相关的结构体都复制到自己的代码里面,就搞掂了.
[/Quote]mousr_event是可以的,,,但是API说早过时了,,呵呵
duduqq 2011-04-29
  • 打赏
  • 举报
回复
我现在不用SetInput了,直接用mousr_event
然后把winuser.h里面的相关的结构体都复制到自己的代码里面,就搞掂了.
myj870517 2011-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duduqq 的回复:]

我也遇到SetInput的问题,要添加
#include <windows.h>
#include <winuser.h>
这个头文件,但是还会有INPUT 没有定义的问题
[/Quote]能编译头文件肯定没问题的吧.
duduqq 2011-04-28
  • 打赏
  • 举报
回复
我也遇到SetInput的问题,要添加
#include <windows.h>
#include <winuser.h>
这个头文件,但是还会有INPUT 没有定义的问题
myj870517 2011-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 comfanter 的回复:]
这个貌似和Qt没有关系,MFC?
[/Quote]QT里引用的windows的代码...
CrazyWind 2011-04-27
  • 打赏
  • 举报
回复
这个貌似和Qt没有关系,MFC?

21,489

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧