今天给大家带来,模拟键盘与鼠标操作的C++代码
都是独立的函数模块
废话不多说,直接上代码
#include "stdafx.h"
#include "Shunli.h"
#include "conio.h"
#include <iostream>
#include <sstream>
#include <string>
#include <algorithm>
#include <vector>
#include <imm.h>
#include <stdio.h>
#include <Windows.h>
#include <atlstr.h>
#include <cmath>
#include <TlHelp32.h>
#include <Psapi.h>
#pragma comment (lib ,"imm32.lib")
using namespace std;
//单击
int SingleClick()
{
try
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
return 0;
}
catch (char)
{
return -1;
}
}
//双击
int DoubleClick()
{
try
{
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
return 0;
}
catch (char)
{
return -1;
}
}
//回车
int Enter()
{
try
{
keybd_event(0x0D, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(0x0D, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
catch (char)
{
return -1;
}
}
//回退
int Back()
{
try
{
keybd_event(VK_BACK, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_BACK, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
catch (char)
{
return -1;
}
}
//Tab
int Tab()
{
try
{
keybd_event(VK_TAB, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
catch (char)
{
return -1;
}
}
//小写
int CapslockMin()
{
try
{
if (GetKeyState(VK_CAPITAL))
{
keybd_event(VK_CAPITAL, 0, 0, 0);
Sleep(10);
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
Sleep(10);
}
return 0;
}
catch (char)
{
return -1;
}
}
//大写
int CapslockMax()
{
try
{
if (GetKeyState(VK_CAPITAL))
{
return 0;
}
else
{
keybd_event(VK_CAPITAL, 0, 0, 0);
Sleep(10);
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
Sleep(10);
}
return 0;
}
catch (char)
{
return -1;
}
}
//根据窗体名字获取窗体句柄
extern "C" SHUNLI_API int ShowMainHWND(char* MainName, HWND *HWnd)
{
try
{
HWND hWnd = FindWindow(NULL, MainName);
if (hWnd != NULL)
{
*HWnd = hWnd;
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//根据坐标获取窗体句柄
extern "C" SHUNLI_API int ShowXYHWND(int X, int Y, HWND *HWnd)
{
try
{
POINT Position = {X,Y};
HWND hWnd = WindowFromPoint(Position);
if (hWnd != NULL)
{
*HWnd = hWnd;
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//移动窗体
extern "C" SHUNLI_API int MoveMain(HWND hWnd, int X, int Y, int Width, int Height)
{
try
{
if (MoveWindow(hWnd, X, Y, Width, Height, true))
{
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//移动鼠标
extern "C" SHUNLI_API int MobileMouse(int X, int Y)
{
try
{
if (SetCursorPos(X, Y))//更改鼠标坐标
{
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//0单击 1双击 2回车 3换行 4回退 5输入法大写 6输入法小写 7按下ctrl+v 8切换系统键盘为美式键盘
extern "C" SHUNLI_API int KeyboardAndMouseOperation(int KeyboardAndMouseType)
{
int RetData = -1;
switch (KeyboardAndMouseType)
{
//单击
case 0:
RetData = SingleClick();
break;
//双击
case 1:
RetData = DoubleClick();
break;
//回车
case 2:
RetData = Enter();
break;
//换行
case 3:
RetData = Tab();
break;
//回退
case 4:
RetData = Back();
break;
case 5://输入法大写
RetData = CapslockMax();
break;
case 6://输入法小写
RetData = CapslockMin();
break;
case 7://按下 ctrl+V
keybd_event(VK_CONTROL, 0, 0, 0);
Sleep(10);
keybd_event('V', 0, 0, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
break;
case 8://输入法切换成美式键盘
LoadKeyboardLayout("0x409", KLF_ACTIVATE | KLF_SETFORPROCESS);
break;
}
return RetData;
}
//按下
int PressDown(string Info)
{
try
{
if (Info == "A")
{
CapslockMax();
keybd_event('A', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "B")
{
CapslockMax();
keybd_event('B', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('B', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "C")
{
CapslockMax();
keybd_event('C', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "D")
{
CapslockMax();
keybd_event('D', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('D', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "E")
{
CapslockMax();
keybd_event('E', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('E', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "F")
{
CapslockMax();
keybd_event('F', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('F', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "G")
{
CapslockMax();
keybd_event('G', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('G', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "H")
{
CapslockMax();
keybd_event('H', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('H', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "I")
{
CapslockMax();
keybd_event('I', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('I', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "J")
{
CapslockMax();
keybd_event('J', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('J', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "K")
{
CapslockMax();
keybd_event('K', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('K', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "L")
{
CapslockMax();
keybd_event('L', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('L', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "M")
{
CapslockMax();
keybd_event('M', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('M', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "N")
{
CapslockMax();
keybd_event('N', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('N', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "O")
{
CapslockMax();
keybd_event('O', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('O', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "P")
{
CapslockMax();
keybd_event('P', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('P', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "Q")
{
CapslockMax();
keybd_event('Q', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Q', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "R")
{
CapslockMax();
keybd_event('R', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('R', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "S")
{
CapslockMax();
keybd_event('S', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "T")
{
CapslockMax();
keybd_event('T', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('T', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "U")
{
CapslockMax();
keybd_event('U', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('U', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "V")
{
CapslockMax();
keybd_event('V', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "W")
{
CapslockMax();
keybd_event('W', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('W', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "X")
{
CapslockMax();
keybd_event('X', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('X', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "Y")
{
CapslockMax();
keybd_event('Y', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Y', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "Z")
{
CapslockMax();
keybd_event('Z', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Z', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "a")
{
CapslockMin();
keybd_event('A', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('A', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "b")
{
CapslockMin();
keybd_event('B', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('B', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "c")
{
CapslockMin();
keybd_event('C', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('C', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "d")
{
CapslockMin();
keybd_event('D', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('D', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "e")
{
CapslockMin();
keybd_event('E', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('E', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "f")
{
CapslockMin();
keybd_event('F', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('F', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "G")
{
CapslockMin();
keybd_event('G', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('G', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "h")
{
CapslockMin();
keybd_event('H', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('H', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "i")
{
CapslockMin();
keybd_event('I', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('I', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "j")
{
CapslockMin();
keybd_event('J', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('J', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "k")
{
CapslockMin();
keybd_event('K', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('K', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "l")
{
keybd_event('L', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('L', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "m")
{
CapslockMin();
keybd_event('M', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('M', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "n")
{
CapslockMin();
keybd_event('N', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('N', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "o")
{
CapslockMin();
keybd_event('O', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('O', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "p")
{
CapslockMin();
keybd_event('P', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('P', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "q")
{
CapslockMin();
keybd_event('Q', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Q', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "r")
{
CapslockMin();
keybd_event('R', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('R', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "s")
{
CapslockMin();
keybd_event('S', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('S', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "t")
{
CapslockMin();
keybd_event('T', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('T', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "u")
{
CapslockMin();
keybd_event('U', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('U', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "v")
{
CapslockMin();
keybd_event('V', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "w")
{
CapslockMin();
keybd_event('W', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('W', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "x")
{
CapslockMin();
keybd_event('X', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('X', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "y")
{
CapslockMin();
keybd_event('Y', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Y', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "z")
{
CapslockMin();
keybd_event('Z', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('Z', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "0")
{
keybd_event('0', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('0', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "1")
{
keybd_event('1', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('1', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "2")
{
keybd_event('2', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('2', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "3")
{
keybd_event('3', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('3', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "4")
{
keybd_event('4', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('4', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "5")
{
keybd_event('5', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('5', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "6")
{
keybd_event('6', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('6', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "7")
{
keybd_event('7', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('7', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "8")
{
keybd_event('8', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('8', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "9")
{
keybd_event('9', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('9', 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == ".")
{
keybd_event(VK_OEM_PERIOD, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_PERIOD, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
else if (Info =="+")
{
keybd_event(VK_OEM_PLUS, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_PLUS, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
else if (Info == "-")
{
keybd_event(VK_OEM_MINUS, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_MINUS, 0, KEYEVENTF_KEYUP, 0);
return 0;
}
else
{
if (Info == "*")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('8', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('8', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "~")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_OEM_3, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_3, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "`")
{
keybd_event(VK_OEM_3, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_3, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "!")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('1', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('1', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "@")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('2', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('2', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "#")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('3', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('3', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "$")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('4', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('4', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "%")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('5', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('5', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "^")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('6', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('6', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "&")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('7', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('7', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "(")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('9', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('9', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == ")")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event('0', 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event('0', 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "|")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_OEM_5, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_5, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "\\")
{
keybd_event(VK_OEM_5, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_5, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "{")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_OEM_4, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_4, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "}")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_OEM_6, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_6, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "[")
{
keybd_event(VK_OEM_4, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_4, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "]")
{
keybd_event(VK_OEM_6, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_6, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "?")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_OEM_2, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_2, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == "/")
{
keybd_event(VK_OEM_2, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_OEM_2, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == ":")
{
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_HANGUL, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_HANGUL, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
}
else if (Info == ";")//【"】
{
keybd_event(VK_HANGUL, 0, 0, 0);
Sleep(10);//要留给某些应用的反应时间
keybd_event(VK_HANGUL, 0, KEYEVENTF_KEYUP, 0);
}
return 0;
}
return -1;
}
catch (char)
{
return -1;
}
}
//转大写
void StringToUpper(string &str)
{
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
}
//转小写
void StringToLower(string &str)
{
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
}
//判断是不是数字
bool isNum(string str)
{
stringstream sin(str);
double d;
char c;
if (!(sin >> d))
{
return false;
}
if (sin >> c)
{
return false;
}
return true;
}
//按下数字与字母 ,大小写得外部区分
extern "C" SHUNLI_API int Input(char* Info)
{
try
{
string _Data = Info;
for (size_t i = 0; i < _Data.length(); i++)
{
string Data = _Data.substr(i,1);
PressDown(Data);
}
return 0;
}
catch (char)
{
return -1;
}
}
//获取指定坐标颜色
extern "C" SHUNLI_API int ShowColour(int X, int Y, int *Red, int *Green, int *Blue)
{
try
{
HWND hWnd = ::GetDesktopWindow();
HDC hdc = ::GetDC(hWnd);
COLORREF pixel = ::GetPixel(hdc, X, Y);
if (pixel != CLR_INVALID)
{
*Red = GetRValue(pixel);
*Green = GetGValue(pixel);
*Blue = GetBValue(pixel);
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//复制粘贴
extern "C" SHUNLI_API int CopyPaste(CString source)
{
try
{
if (OpenClipboard(NULL) || EmptyClipboard())
{
//防止非ASCII语言复制到剪切板为乱码
int buff_size = source.GetLength();
CStringW strWide = CStringW(source);
int nLen = strWide.GetLength();
//将剪切板置空
EmptyClipboard();
HANDLE clipbuffer = GlobalAlloc(GMEM_DDESHARE, (nLen + 1) * 2);
if (!clipbuffer)
{
CloseClipboard();
return -1;
}
char* buffer = (char*)::GlobalLock(clipbuffer);
memset(buffer, 0, (nLen + 1) * 2);
memcpy_s(buffer, nLen * 2, strWide.GetBuffer(0), nLen * 2);
strWide.ReleaseBuffer();
GlobalUnlock(clipbuffer);
SetClipboardData(CF_UNICODETEXT, clipbuffer);
CloseClipboard();
//按下CTRL+V
KeyboardAndMouseOperation(7);
return 0;
}
else
{
return -1;
}
}
catch (char)
{
return -1;
}
}
//隐藏指定窗口
extern "C" SHUNLI_API int HideWindows(HWND hwnd, char * FormName)
{
try
{
char wtitle[512];
GetWindowText(hwnd, wtitle, sizeof(wtitle));
if (strstr(wtitle, FormName))
{
ShowWindow(hwnd, SW_HIDE);
}
return 0;
}
catch (char)
{
return -1;
}
}
//隐藏指定窗口
extern "C" SHUNLI_API int ShowWindows(HWND hwnd, char * FormName)
{
try
{
char wtitle[512];
GetWindowText(hwnd, wtitle, sizeof(wtitle));
if (strstr(wtitle, FormName))
{
ShowWindow(hwnd, SW_SHOW);
}
return 0;
}
catch (char)
{
return -1;
}
}