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 ...
随机推荐
- Xcode8 重新配置 CocoaPods -替换阿里源
一.CocoaPods是什么? CocoaPods是一个负责管理iOS项目中第三方开源库的工具.CocoaPods的项目源码在Github上管理.该项目开始于2011年8月12日,在这两年多的时间里, ...
- 自己开发开源jquery插件--给jquery.treeview加上checkbox
很多时候需要把树状的数据显示除来,比如分类,中国省份.城市信息,等,因此这方面的javascript插件也有很多.比如性能优异的jquery.treeview和国人开发的功能强大的zTree. 我最近 ...
- spoj 227
留着 #include <cstdio> #include <cstring> #include <cstdlib> #define lson l, m, rt & ...
- uva 10369
数组开小了 还RE了一遍....... 最小生成树 按费用从小到大排... #include <iostream> #include <algorithm> #inc ...
- Win32 DLL和MFC DLL 中封装对话框
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题.这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题. ...
- 【POJ 3335】 Rotating Scoreboard (多边形的核- - 半平面交应用)
Rotating Scoreboard Description This year, ACM/ICPC World finals will be held in a hall in form of a ...
- 174. Dungeon Game
题目: The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dung ...
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!
W3C DOM2样式规范 现在这边贴出本章要的源代码,注意要结合前面用到的ADS库http://vdisk.weibo.com/s/Dq8NU CSSStyleSheet对象属性: type :始终是 ...
- Extension Method[上篇]
在C#3.0中,引入了一些列新的特性,比如: Implicitly typed local variable, Extension method,Lambda expression, Object i ...
- vmware-tools安装指南
为什么要安装VMware Tools? 因为它可以改善Virtual Machine 的运行性能,可以让鼠标能在本地主机和虚拟机中随意出入,而且Host OS 和Guest OS可以 互通有无,实现文 ...