C++模拟键盘鼠标消息
- #include <Windows.h>
- /*
- * === FUNCTION ======================================================================
- * Name: LeftClick
- * Description: 左键按下消息
- * =====================================================================================
- */
- void LeftClick ( )
- {
- INPUT Input={0};
- // left down
- Input.type = INPUT_MOUSE;
- Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
- ::SendInput(1,&Input,sizeof(INPUT));
- // left up
- ::ZeroMemory(&Input,sizeof(INPUT));
- Input.type = INPUT_MOUSE;
- Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
- ::SendInput(1,&Input,sizeof(INPUT));
- }
- /*
- * === FUNCTION ======================================================================
- * Name: RightClick
- * Description: 右键按下消息
- * =====================================================================================
- */
- void RightClick ( )
- {
- INPUT Input={0};
- // right down
- Input.type = INPUT_MOUSE;
- Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;
- ::SendInput(1,&Input,sizeof(INPUT));
- // right up
- ::ZeroMemory(&Input,sizeof(INPUT));
- Input.type = INPUT_MOUSE;
- Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;
- ::SendInput(1,&Input,sizeof(INPUT));
- }
- /*
- * === FUNCTION ======================================================================
- * Name: 鼠标移动消息
- * Description:
- * =====================================================================================
- */
- void MouseMove (int x, int y )
- {
- double fScreenWidth = ::GetSystemMetrics( SM_CXSCREEN )-1;
- double fScreenHeight = ::GetSystemMetrics( SM_CYSCREEN )-1;
- double fx = x*(65535.0f/fScreenWidth);
- double fy = y*(65535.0f/fScreenHeight);
- INPUT Input={0};
- Input.type = INPUT_MOUSE;
- Input.mi.dwFlags = MOUSEEVENTF_MOVE|MOUSEEVENTF_ABSOLUTE;
- Input.mi.dx = fx;
- Input.mi.dy = fy;
- ::SendInput(1,&Input,sizeof(INPUT));
- }
- int main(){
- while(true)
- {
- MouseMove(0,100);
- Sleep(5000);
- MouseMove(200,0);
- Sleep(5000);
- }
- //RightClick ( );
- //LeftClick ( );
- return 0;
- }
以上是使用sendinput函数
以下是使用keybd_event函数
- //#include <Windows.h>
- #include <afxwin.h>
- int main()
- {
- //CWnd *pWnd = CWnd::FromHandle(FindWindow("ConsolWindowClass", NULL)); GetConsoleWindow(void);
- CWnd *pWnd = CWnd::FromHandle(GetConsoleWindow()); //本控制台程序发送按键消息
- if (pWnd->GetSafeHwnd())
- {
- pWnd->ShowWindow(SW_NORMAL);
- pWnd->SetForegroundWindow();
- //keybd_event(VK_CONTROL, 0, 0 ,0);
- keybd_event('E', 0, 0 ,0);
- keybd_event('E', 0, KEYEVENTF_KEYUP ,0);
- //keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
- }
- return 0;
- }
demo
- /*
- * =====================================================================================
- *
- * Filename: get_message.cpp
- *
- * Description: 子线程产生按键消息,主线程等待输入,并输出
- *
- * Version: 1.0
- * Created: 2013/10/1 10:33:36
- * Revision: none
- * Compiler: gcc
- *
- * Author: @礼杨_HDU, yuliyang@qq.com
- * Organization:
- *
- * =====================================================================================
- */
- #include <iostream>
- #include <Windows.h>
- using namespace std;
- DWORD WINAPI ThreadFunction(LPVOID lpParameter)
- {
- printf("in thread......");
- while (TRUE){
- //your code
- INPUT Input1 = { };
- Input1.type = INPUT_KEYBOARD;
- Input1.mi.dwFlags = KEYEVENTF_EXTENDEDKEY;
- Input1.ki.wVk = 0x30; //
- SendInput( , &Input1, sizeof( INPUT ) );
- INPUT Input2 = { };
- Input2.type = INPUT_KEYBOARD;
- Input2.mi.dwFlags = KEYEVENTF_EXTENDEDKEY;
- Input2.ki.wVk = 0x0d; // 回车
- SendInput( , &Input2, sizeof( INPUT ) );
- Sleep();
- Input1.type = INPUT_KEYBOARD;
- Input1.mi.dwFlags = KEYEVENTF_EXTENDEDKEY;
- Input1.ki.wVk = 0x31; //
- SendInput( , &Input1, sizeof( INPUT ) );
- Input2.type = INPUT_KEYBOARD;
- Input2.mi.dwFlags = KEYEVENTF_EXTENDEDKEY;
- Input2.ki.wVk = 0x0d; // 回车
- SendInput( , &Input2, sizeof( INPUT ) );
- }
- return true;
- }
- int main(){
- HANDLE hT=CreateThread(NULL,,ThreadFunction,NULL,,NULL);
- char m_char;
- while (cin>>m_char)
- {
- printf("%c\n",m_char);
- }
- return ;
- }
C++模拟键盘鼠标消息的更多相关文章
- (转)C#模拟键盘鼠标事件
原文 1.模拟键盘事件System.Windows.Forms.SendKeys以下是 SendKeys 的一些特殊键代码表. 键 代码 BACKSPACE {BA ...
- 判断软件的闲置时间(使用Application.OnMessage过滤所有键盘鼠标消息)
GetLastInputInfo是检测系统输入的,应用到某个程序中不合适! 此问题有二种解法来监控输入消息: 1.用线程级HOOK,钩上MOUSEHOOK与KEYBOARDHOOK 2.在Applic ...
- 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)
引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...
- Android查询:模拟键盘鼠标事件(adb shell 实现)
1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE ...
- C# winform 模拟键盘鼠标操作
1.获取鼠标位置 private void timer1_Tick(object sender, EventArgs e) { // timer1.Stop(); // int x = Control ...
- C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)
使用 SendKeys 将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用 Send.若要等待键击启动的任何进程,请使用 SendWait. 每个键都 ...
- C++模拟键盘消息
实现功能:在现有DLL程序中向特定的EXE窗口中发送模拟键盘的消息 使用API根据窗口标题递归查找特定的窗口句柄,之后模拟调用. 注意:keybd_event函数不能在VS下使用,所以用SendInp ...
- C# winform 加载网页 模拟键盘输入自动接入访问网络
声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html 转载请注明出处. 背景: 由于所在办公室网络限制,笔者每天都使用网络 ...
- 【转】C# winform 加载网页 模拟键盘输入自动接入访问网络
[转]C# winform 加载网页 模拟键盘输入自动接入访问网络 声明: 本文原创,首发于博客园 http://www.cnblogs.com/EasyInvoice/p/6070563.html ...
随机推荐
- 滚珠菜单动效-b
原型从网上找的,动效使用了CAAnimation和UIDynamic物理引擎. gitHub :https://github.com/BearRan/FlowMenuAnimation 大致步骤如 ...
- C# DateTime和DateTime?格式化时间
DateTime: <%= Model.CreateTime.ToString("yyyy年MM月dd日 H时m分s秒")%> DateTime?: <%= ...
- hdu 4712 Hamming Distance(随机函数暴力)
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- E437: terminal capability "cm" required
执行 vi 的时候出现:E437: terminal capability "cm" required 临时解决: export TERM=xterm
- js页面刷新一次
// var str = document.location.hash, // index = str.indexOf("#"); // if(index == 0){ // wi ...
- Ubuntu的挂起和休眠
Ubuntu的挂起和休眠 之前一直没关注过这方面的信息,因为以前只是在台式机上面用Ubuntu,笔记本一直都是Windows.随着Windows越来越傻冒,最近决定将常用系统转为Ubuntu,才注意到 ...
- Android 控制ScrollView滚动到底部
scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部 scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部 ...
- EXPORT_SYMBOL的作用是什么
http://www.cnblogs.com/riskyer/p/3221805.html EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动 导入到 ...
- javaweb学习总结(四十七)——监听器(Listener)在开发中的应用
监听器在JavaWeb开发中用得比较多,下面说一下监听器(Listener)在开发中的常见应用 一.统计当前在线人数 在JavaWeb应用开发中,有时候我们需要统计当前在线的用户数,此时就可以使用监听 ...
- thinkphp框架 中 ajax 的应用
在thinkphp中,内置了ajax的方法,即: ajaxReturn("data","info","status"); data:传递的数 ...