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. P1219 N皇后

    P1219 N皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序 ...

  2. python—— 文件的打开模式和文件对象方法 & os、os.path 模块中关于文件、目录常用的函数使用方法

    引用自“鱼c工作室”     文件的打开模式和文件对象方法  : https://fishc.com.cn/forum.php?mod=viewthread&tid=45279&ext ...

  3. Aizu:0189-Convenient Location

    Convenient Location Time limit 1000 ms Memory limit 131072 kB Problem Description 明年毕业的A为就业而搬家.就职的公司 ...

  4. 笔记-scrapy-signal

    笔记-scrapy-signal 1.      scrapy singal 1.1.    信号机制 scrapy的信号机制主要由三个模块完成 signals.py 定义信号量 signalmana ...

  5. 4 Django简介

    MVC与MTV模型 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务 ...

  6. I2C中24C02从地址设置

    从设备地址 首先,先看一下AT24C02的芯片资料,我们会发现AT24C02有三个地址A0,A1,A2.同时,我们会在资料的Device Address介绍发现I2C器件一共有七位地址码,还有一位是读 ...

  7. laravel5.5任务调度

    目录 1. 定义调度 1.1 使用Closure 1.2 Artisan 命令调度 1.3 队列任务调度 1.4 Shell 命令调度 1.5 调度频率设置 1.6 闭包测试限制 1.7 避免任务重复 ...

  8. Ubuntu设置root密码[repost]

    From: http://hi.baidu.com/busybox/item/283e7d31433db7179cc65ef3 安装完Ubuntu后在终端使用命令:su -然后输入密码,总是不正确.原 ...

  9. 剑指Offer - 九度1385 - 重建二叉树

    剑指Offer - 九度1385 - 重建二叉树2013-11-23 23:53 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的 ...

  10. java中多态的概念

    概念: 简答来说,多态(Polymorphism)是具有表现多种形态的能力的特征.    更专业的说法是:同一个实现接口,使用不同的实例而执行不同的操作. 好处: 通过多态可以减少类中代码量,可以提高 ...