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 ...
随机推荐
- Linq语句基础
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- [SQL SERVER系列]存储过程,游标和触发器实例[原创]
自己写的存储过程与游标结合使用的实例,与大家分享,也供自己查阅,仅供参考: --使用游标循环处理,删除重复的记录 declare @UserID int ) ) declare @UnitFlag i ...
- CROSS APPLY和 OUTER APPLY 区别
转 http://www.cnblogs.com/end/archive/2011/02/17/1957011.html FROM employees AS e join employee ...
- uva 10562
二叉树的先序遍历 这个还是比较简单的 ~~ /************************************************************************* &g ...
- 【leetcode】Divide Two Integers (middle)☆
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- linux 使用kill命令杀死进程的几个办法
常规篇: 首先,用ps查看进程,方法如下: $ ps -ef ……smx 1822 1 0 11:38 ? 00:00:49 gnome-terminalsmx ...
- 阿里云 EDAS-HSF 用户指南
阿里云 EDAS-HSF 用户指南 针对 EDAS v2.3.0©Alibaba EDAS 项目组2015/8/19 1 前言本文档旨在描述阿里云 EDAS 产品中应用服务化模块的基本概念,以及如何使 ...
- linux下添加PATH环境变量
添加PATH环境变量,第1种方法:[root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@lx ...
- D3DXCOLOR 和 D3DCOLOR 和 D3DCOLORVALUE
D3DCOLOR 是一个DWORD 型.第一个byte表示Alpha值,后面三个byte依次是r(红)g(绿)b(蓝)值.32位. 下面是一些关于D3DCOLOR 的宏: D3DCOLOR_ARGB( ...
- JVM运行机制
JVM启动流程