1.窗口

1.获取最前方的窗口句柄

GetForegroundWindow()

返回值:HWND类型。

调用方式:HWND hwnd=GetForegroundWindow();即hwnd就存着你的窗口句柄。

HWND不能用全局变量(我也不知道为什么)

2.隐藏/显示窗口

ShowWindow(HWND hwnd,bool f)

第一个参数为窗口句柄,第二个参数为一个bool类型,0表示隐藏,1表示显示。没有返回值。

2.键盘keybd_event

1.键盘键与虚拟键码对照表

      字母和数字键     数字小键盘的键       功能键         其它键 
      键   键码     键   键码       键   键码     键      键码 
      A   65       0   96        F1   112     Backspace    8 
      B   66       1   97        F2   113     Tab       9 
      C   67       2   98        F3   114     Clear      12 
      D   68       3   99        F4   115     Enter      13 
      E   69       4   100       F5   116     Shift      16 
      F   70       5   101       F6   117     Control     17 
      G   71       6   102       F7   118      Alt       18 
      H   72       7   103       F8   119     Caps Lock    20 
      I   73       8   104       F9   120     Esc       27 
      J   74       9   105       F10  121     Spacebar    32 
      K   75       *   106       F11  122     Page Up     33 
      L   76       +   107       F12  123     Page Down    34 
      M   77       Enter 108       --   --     End       35 
      N   78       -   109       --   --      Home      36 
      O   79       .   110       --   --      Left Arrow   37 
      P   80       /   111       --   --      Up Arrow    38 
      Q   81       --   --       --   --      Right Arrow   39 
      R   82       --   --       --   --      Down Arrow    40 
      S   83       --   --       --   --      Insert      45 
      T   84       --   --       --   --      Delete      46 
      U   85       --   --       --   --      Help       47 
      V   86       --   --       --   --      Num Lock     144 
      W   87          
      X   88      
      Y   89      
      Z   90      
      0   48      
      1   49      
      2   50       
      3   51       
      4   52       
      5   53       
      6   54       
      7   55       
      8   56       
      9   57  

2. 判断某个键是否被按下

#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)   

调用方式:KEY_DOWN(int x),x为你要判断的那个键的虚拟键值。返回值:按下返回1,未按下返回0。

3.模拟某个键点击

模拟按下:keybd_event(int x,0,0,0);x为你要按下的那个键的虚拟键值
模拟抬起:keybd_event(int x,0,KEYEVENTF_KEYUP,0);x为你要抬起的那个键的虚拟键值

3.鼠标

1.鼠标的虚拟键值

左键:MOUSE_MOVED 右键:MOUSE_EVENT 滚轮:MOUSE_WHEELED

2.获取鼠标在屏幕内的位置

GetCursorPos(LPPOINT lppoint)

typedef struct tagPOINT {
  LONG x;
  LONG y;
}*LPPOINT;

LPPOINT类型是一个指针。

调用该函数后,当前鼠标位置为(lppoint->x,lppoint->y)。屏幕左上角为(0,0)。

3.设置鼠标在屏幕中的位置

SetCursorPos(int x,int y);

x,y为你想要设置的鼠标位置。调用该函数后,鼠标会跑到位置(x,y)。屏幕左上角为(0,0)。

4.把鼠标在屏幕上的位置转化成在窗口的位置

ScreenToClient(HWND hwnd,LPPOINT lppoint)

第一个参数为窗口句柄,第二个参数为当前鼠标在屏幕中的位置。

调用该函数后,当前鼠标位置为(lppoint->x,lppoint->y)。窗口左上角为(0,0)。

5.把鼠标在窗口的位置转化成在屏幕上的位置

ClientToScreen(HWND hwnd,LPPOINT lppoint)

第一个参数为窗口句柄,第二个参数为当前鼠标在窗口中的位置。

调用该函数后,当前鼠标位置为(lppoint->x,lppoint->y)。屏幕左上角为(0,0)。

6.模拟鼠标点击

模拟鼠标左键按下:mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); 

模拟鼠标左键抬起:mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 

模拟鼠标右键按下:mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0); 

模拟鼠标右键抬起:mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0); 

#include<iostream>
#include<conio.h>
#include<cstdio>
#include<windows.h>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0) //必要的,我是背下来的
using namespace std;
int main(){
HWND hwnd,_hwnd=GetForegroundWindow();
printf("按F3开始左键点击\n");
printf("按F4开始右键点击\n");
printf("按F2停止点击\n");
printf("按F6隐藏窗口\n");
printf("按F7隐藏本exe\n");
printf("请确定一开始你要隐藏的窗口在最上方时,按F6确认,一次就好\n");
printf("请保证要隐藏的窗口已打开后,再关闭exe,否则一切后果自负\n");
bool f=false,_f=false;
while()
{
if(KEY_DOWN())
{
hwnd=GetForegroundWindow();//获取最前端的窗口的句柄
Sleep();
break;
}
}
char a;
int now=;
while(){
if(KEY_DOWN())//F7
{
ShowWindow(_hwnd,_f);//隐藏窗口 ,0表示隐藏
_f=-_f;
Sleep();
}
if(KEY_DOWN())//F6
{
ShowWindow(hwnd,f);//隐藏窗口 ,0表示隐藏
f=-f;
Sleep();
}
if(KEY_DOWN()){ //F2
now=;
Sleep();//你的手不会再一瞬间送开,所以要处理一下
}
if(KEY_DOWN()){ //F3
now=;
Sleep();
}
if(KEY_DOWN()){ //F4
now=;
Sleep();
}
if(now==){//模拟点击左键
mouse_event(MOUSEEVENTF_LEFTDOWN,,,,);
Sleep();//要留给某些应用的反应时间
mouse_event(MOUSEEVENTF_LEFTUP,,,,);
}
if(now==){//模拟点击右键
mouse_event(MOUSEEVENTF_RIGHTDOWN,,,,);
Sleep();
mouse_event(MOUSEEVENTF_RIGHTUP,,,,);
}
Sleep();//点击间隔 单位是毫秒
}
return ;
}

API函数的学习与运用的更多相关文章

  1. WINDOWS API 函数(超长,值得学习)

    一.隐藏和显示光标 函数: int ShowCursor ( BOOL bShow );  参数 bshow,为布尔型,bShow的值为False时隐藏光标,为True时显示光标:该函数的返回值为整型 ...

  2. Delphi内存操作API函数(备查,并一一学习)

    Delphi内存操作API函数System.IsMemoryManagerSet;System.Move;System.New;System.ReallocMem;System.ReallocMemo ...

  3. 学习angularjs的内置API函数

    angularjs的内置API函数有很多,如isString()判断给定的对象是否为字符串,如果是返回 true,反之返回false:isNumber()判断给定的对象是否为数字,如果是返回 true ...

  4. Drools API的使用学习

    Drools API的使用学习在 Drools 当中,规则的编译与运行要通过 Drools 提供的各种 API 来实现,这些 API 总体来讲可以分为三类:规则编译.规则收集和规则的执行.完成这些工作 ...

  5. Appium常用的API函数

    在学习应用一个框架之前,应该了解一下这个框架的整体结构或是相应的API函数.这篇文章还不错:http://blog.sina.com.cn/s/blog_68f262210102vzf9.html,就 ...

  6. 初识API函数

    我之前是一个只会编写数值计算的程序的OIer,但我并不甘于这种现状,于是我编写了我的第一个使用API函数的C++程序,开发平台是VS2012: // ConsoleApplication.cpp : ...

  7. 用Windows API函数(CreateFile/ReadFile/WriteFile/CloseHandle)完成文件拷贝程序(初级版)

    文件拷贝程序 程序类型:Console 参数:源文件名   目的文件名 要求:1.只能使用Windows API函数(CreateFile/ReadFile/WriteFile/CloseHandle ...

  8. 【API】API函数创建用户,添加到管理组

    1 学习目标 使用API添加用户可以绕过某些杀毒软件的限制. 2 编程思路 2.1 代码原理 使用NetUserAdd这个API添加普通权限的用户,NetLocalGroupAddMembers这个A ...

  9. hash算法搜索获得api函数地址的实现,"kernel32.dll", "CreateThread"

    我们一般要获得一个函数的地址,通常采用的是明文,例如定义一个api函数字符串"MessageBoxA",然后在GetProcAddress函数中一个字节一个字节进行比较.这样弊端很 ...

随机推荐

  1. 无序数组中第K大的数

    1. 排序法 时间复杂度 O(nlogn) 2. 使用一个大小为K的数组arr保存前K个最大的元素 遍历原数组,遇到大于arr最小值的元素时候,使用插入排序方法,插入这个元素 时间复杂度,遍历是 O( ...

  2. Python locale 多语言模块和我遇到的坑

    Table of Contents 1. locale遇到的问题 1.1. locale 简介 1.1.1. 什么是locale 1.1.2. locale 相关命令 1.2. Python loca ...

  3. 树&二叉树&哈夫曼树

    1.树 需要注意的两点:n(n>=0)表示结点的个数,m表示子树的个数 (1)n>0时,树的根节点是唯一的. (2)m>0时,子树的个数没有限制. 结点的度和树的度 (1)结点的度是 ...

  4. laravel5.5缓存系统

    目录 1 Redis的配置 1.1 安装PRedis 1.2 配置 1.2.1 配置redis数据库 1.2.2 更改session的配置 1.2.3 更改cache配置 1.3 使用redis 2 ...

  5. viewDidLoad dispatch_sync

    - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"1"); dispatch_sync(dispatch_get_main_qu ...

  6. 关于IOS下日期格式分隔符 - 、 /的问题

    之前我们项目有一个低价日历,服务端下发的时间格式为: "2014-07-21 09:45:12"  然后一直出不了数据,后来发现. IOS下无论chrome.safari还是Uc如 ...

  7. 为什么要搞vim

    一. 先得想清楚折腾vim受的这顿折磨值不值.值.零碎记录几点. 迫使我使用vim的原因如下: (1)之前实习的公司的开发机上只有vim,以后工作的公司也只有vim,同部门的同事大都用vim:如果不用 ...

  8. 用JAX-WS在Tomcat中发布WebService

    JDK中已经内置了Webservice发布,不过要用Tomcat等Web服务器发布WebService,还需要用第三方Webservice框架.Axis2和CXF是目前最流行的Webservice框架 ...

  9. C#向上转型与向下转型(转)

    原文地址:https://blog.csdn.net/wangqingbo0829/article/details/48474173 向上转型:将子类对象转为父类对象.此处父类对象可以是接口. 向下转 ...

  10. Edu 0空投合约源码

    https://etherscan.io/address/0xa0872ee815b8dd0f6937386fd77134720d953581#code pragma solidity ^0.4.18 ...