当前位置: 首页 > wzjs >正文

合作做网站的总结和心得苏州seo营销

合作做网站的总结和心得,苏州seo营销,推广平台有哪些?,厦门做公司网站相关函数解释 GetAsyncKeyState 是 Windows API 中的一个函数,用于判断某个虚拟键是否被按下。GetAsyncKeyState(VK_ESCAPE) 专门用于检测 Esc 键的状态。下面为你详细介绍其用法: 函数原型 cpp SHORT GetAsyncKeyState( int vKey ); 参数 vKey&a…

相关函数解释

GetAsyncKeyState 是 Windows API 中的一个函数,用于判断某个虚拟键是否被按下。GetAsyncKeyState(VK_ESCAPE) 专门用于检测 Esc 键的状态。下面为你详细介绍其用法:

函数原型

cpp

SHORT GetAsyncKeyState(

  int vKey

);

参数

vKey:虚拟键码,对于 Esc 键,使用 VK_ESCAPE 作为参数。

返回值

返回一个 SHORT 类型的值,其含义如下:

最高位(第 15 位)为 1 时,表示该键当前处于按下状态;为 0 时,表示该键当前处于释放状态。

最低位(第 0 位)为 1 时,表示该键在最近一次调用 GetAsyncKeyState 之后被按下过;为 0 时,表示该键在最近一次调用之后没有被按下过。

示例代码

以下是一个简单的 C++ 示例,展示了如何使用 GetAsyncKeyState(VK_ESCAPE) 来检测 Esc 键的状态:

cpp

#include <iostream>

#include <windows.h>

int main() {std::cout << "Press the Esc key to exit..." << std::endl;while (true) {// 检测 Esc 键的状态SHORT state = GetAsyncKeyState(VK_ESCAPE);// 检查最高位是否为 1,即 Esc 键是否被按下if (state & 0x8000) {std::cout << "Esc key is pressed. Exiting..." << std::endl;break;}// 可以在这里添加其他代码,处理其他任务Sleep(10); // 短暂休眠,减少 CPU 占用}return 0;}

代码解释

引入必要的头文件:windows.h 包含了 GetAsyncKeyState 函数的声明,iostream 用于输入输出操作。

进入循环:在 while (true) 循环中不断检测 Esc 键的状态。

检测 Esc 键状态:调用 GetAsyncKeyState(VK_ESCAPE) 函数获取 Esc 键的状态,并将结果存储在 state 变量中。

检查最高位:使用按位与运算符 & 检查 state 的最高位是否为 1。如果为 1,则表示 Esc 键被按下,输出提示信息并退出循环。

短暂休眠:使用 Sleep(10) 函数让程序暂停 10 毫秒,减少 CPU 占用。

注意事项

GetAsyncKeyState 是异步的,它返回的是调用时键的状态,而不是在某个特定消息处理过程中的状态。

由于该函数是异步的,可能会出现按键抖动的问题。在实际应用中,可以根据需要添加防抖处理。

虚拟键码  对应值 对应键

对应键值

VK_LBUTTON  1 鼠标左键VK_RBUTTON  2 鼠标右键VK_CANCEL 3 CancelVK_MBUTTON  4 鼠标中键VK_XBUTTON1 5VK_XBUTTON2 6VK_BACK 8 BackspaceVK_TAB  9 TabVK_CLEAR  12  Clear13  EnterVK_SHIFT  16  ShiftVK_CONTROL  17  CtrlVK_MENU 18  AltVK_PAUSE  19  PauseVK_CAPITAL  20  Caps LockVK_KANA 21  VK_HANGUL 21  VK_JUNJA  23  VK_FINAL  24  VK_HANJA  25  VK_KANJI  25*VK_ESCAPE 27  EscVK_CONVERT  28  VK_NONCONVERT 29  VK_ACCEPT 30  VK_MODECHANGE 31  VK_SPACE  32  SpaceVK_PRIOR  33  Page UpVK_NEXT 34  Page DownVK_END  35  EndVK_HOME 36  HomeVK_LEFT 37  Left ArrowVK_UP 38  Up ArrowVK_RIGHT  39  Right ArrowVK_DOWN 40  Down ArrowVK_SELECT 41  SelectVK_PRINT  42  PrintVK_EXECUTE  43  ExecuteVK_SNAPSHOT 44  SnapshotVK_INSERT 45  InsertVK_DELETE 46  DeleteVK_HELP 47  Help48  049  150  251  352  453  554  655  756  857  965  A66  B67  C68  D69  E70  F71  G72  H73  I74  J75  K76  L77  M78  N79  O80  P81  Q82  R83  S84  T85  U86  V87  W88  X89  Y90  ZVK_LWIN 91  VK_RWIN 92  VK_APPS 93  VK_SLEEP  95  VK_NUMPAD0  96  小键盘 0VK_NUMPAD1  97  小键盘 1VK_NUMPAD2  98  小键盘 2VK_NUMPAD3  99  小键盘 3VK_NUMPAD4  100 小键盘 4VK_NUMPAD5  101 小键盘 5VK_NUMPAD6  102 小键盘 6VK_NUMPAD7  103 小键盘 7VK_NUMPAD8  104 小键盘 8VK_NUMPAD9  105 小键盘 9VK_MULTIPLY 106 小键盘 *VK_ADD  107 小键盘 +VK_SEPARATOR  108 小键盘 EnterVK_SUBTRACT 109 小键盘 -VK_DECIMAL  110 小键盘 .VK_DIVIDE 111 小键盘 /VK_F1 112 F1VK_F2 113 F2VK_F3 114 F3VK_F4 115 F4VK_F5 116 F5VK_F6 117 F6VK_F7 118 F7VK_F8 119 F8VK_F9 120 F9VK_F10  121 F10VK_F11  122 F11VK_F12  123 F12VK_F13  124VK_F14  125VK_F15  126VK_F16  127VK_F17  128VK_F18  129VK_F19  130VK_F20  131VK_F21  132VK_F22  133VK_F23  134VK_F24  135VK_NUMLOCK  144 Num LockVK_SCROLL 145 ScrollVK_LSHIFT 160VK_RSHIFT 161VK_LCONTROL 162VK_RCONTROL 163VK_LMENU  164VK_RMENU  165VK_BROWSER_BACK 166VK_BROWSER_FORWARD  167VK_BROWSER_REFRESH  168VK_BROWSER_STOP 169VK_BROWSER_SEARCH 170VK_BROWSER_FAVORITES  171VK_BROWSER_HOME 172VK_VOLUME_MUTE  173 VolumeMuteVK_VOLUME_DOWN  174 VolumeDownVK_VOLUME_UP  175 VolumeUpVK_MEDIA_NEXT_TRACK 176VK_MEDIA_PREV_TRACK 177VK_MEDIA_STOP 178VK_MEDIA_PLAY_PAUSE 179VK_LAUNCH_MAIL  180VK_LAUNCH_MEDIA_SELECT  181VK_LAUNCH_APP1  182VK_LAUNCH_APP2  183VK_OEM_1  186 ; :VK_OEM_PLUS 187 = +VK_OEM_COMMA  188VK_OEM_MINUS  189 - _VK_OEM_PERIOD 190VK_OEM_2  191 / ?VK_OEM_3  192 ` ~VK_OEM_4  219 [ {VK_OEM_5  220 \VK_OEM_6  221 ] }VK_OEM_7  222 引号VK_OEM_8  223VK_OEM_102  226VK_PACKET 231VK_PROCESSKEY 229VK_ATTN 246VK_CRSEL  247VK_EXSEL  248VK_EREOF  249VK_PLAY 250VK_ZOOM 251VK_NONAME 252VK_PA1  253VK_OEM_CLEAR  254

代码块

模拟按键而实际使用模拟按键只需按下和放下(有时需要在这两个操作之中放入延时)#include<stdio.h>;#include<windows.h>keybd_event(122, 0, 0, 0);keybd_event(122, 0, KEYEVENTF_KEYUP, 0);组合键keybd_event(VK_LWIN, 0, 0 ,0);keybd_event('R', 0, 0 ,0);keybd_event('R', 0, KEYEVENTF_KEYUP ,0);keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);以及上述这四行用于win + 各种键的组合键!!

鼠标操作

POINT p;

  SetCursorPos(1577, 346);

  mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

鼠标滑动操作

#include <windows.h>#include <stdio.h>#include<unistd.h>#include<conio.h>#include <math.h>int zx(int x1,int y1,int x2,int y2){POINT p;int x;SetConsoleTitle("5082.txt");usleep(200000);SetCursorPos(x1, y1);mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);usleep(200000);SetCursorPos(x2,y2);mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);}int main(){zx(1577,346,1125,685);zx(1135,304,1557,801);return 0;}

若keybd_event函数已被系统弃用,则使用SendInput函数

SendInput 函数是 Windows API 中的一个重要函数,用于模拟用户输入事件,包括键盘和鼠标操作。它比旧的 keybd_event 和 mouse_event 函数更强大、更可靠,并且在现代 Windows 系统中被推荐使用。下面将对 SendInput 函数进行详细介绍。

函数原型

c

UINT SendInput(

  UINT    cInputs,

  LPINPUT pInputs,

  int     cbSize

);

参数说明

cInputs

类型:UINT

描述:pInputs 数组中 INPUT 结构体的数量,即要模拟的输入事件的数量。

pInputs

类型:LPINPUT(指向 INPUT 结构体数组的指针)

描述:一个指向 INPUT 结构体数组的指针,每个 INPUT 结构体代表一个输入事件,如键盘按键、鼠标移动或鼠标点击等。

cbSize

类型:int

描述:INPUT 结构体的大小,通常使用 sizeof(INPUT) 来获取。

返回值

类型:UINT

描述:函数返回实际插入到输入队列中的输入事件的数量。如果返回值与 cInputs 不相等,则表示出现了错误。可以使用 GetLastError 函数来获取具体的错误代码。

INPUT 结构体

INPUT 结构体用于描述一个输入事件,其定义如下:

c

typedef struct tagINPUT {

  DWORD type;

  union {

    MOUSEINPUT    mi;

    KEYBDINPUT    ki;

    HARDWAREINPUT hi;

  };

} INPUT, *PINPUT, *LPINPUT;

type:指定输入事件的类型,可以是以下值之一:

INPUT_MOUSE:表示鼠标事件。

INPUT_KEYBOARD:表示键盘事件。

INPUT_HARDWARE:表示硬件事件,通常很少使用。

联合部分:根据 type 的值,使用不同的结构体来描述具体的输入事件。

MOUSEINPUT:用于描述鼠标事件,如鼠标移动、鼠标点击等。

KEYBDINPUT:用于描述键盘事件,如按键按下、按键释放等。

HARDWAREINPUT:用于描述硬件事件。

示例代码

模拟键盘按键

c

#include <windows.h>

#include <stdio.h>

重点就在于这两个函数的使用

// 模拟按键按下

// 模拟按键按下

void pressKey(WORD keyCode) {INPUT input = {0};input.type = INPUT_KEYBOARD;input.ki.wVk = keyCode;SendInput(1, &input, sizeof(INPUT));}// 模拟按键释放void releaseKey(WORD keyCode) {INPUT input = {0};input.type = INPUT_KEYBOARD;input.ki.wVk = keyCode;input.ki.dwFlags = KEYEVENTF_KEYUP;SendInput(1, &input, sizeof(INPUT));}int main() {// 按下 'A' 键pressKey('A');// 等待一段时间Sleep(500);// 释放 'A' 键releaseKey('A');return 0;}模拟鼠标点击c#include <windows.h>#include <stdio.h>int main() {INPUT input = {0};input.type = INPUT_MOUSE;input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;// 按下鼠标左键SendInput(1, &input, sizeof(INPUT));Sleep(500);input.mi.dwFlags = MOUSEEVENTF_LEFTUP;// 释放鼠标左键SendInput(1, &input, sizeof(INPUT));return 0;}

注意事项

权限问题:在某些情况下,模拟输入事件可能需要管理员权限,特别是在系统受保护的区域或应用程序中。

兼容性:SendInput 函数在现代 Windows 系统中具有良好的兼容性,但在一些特殊环境或虚拟机中可能会受到限制。

错误处理:在使用 SendInput 函数时,建议检查返回值并使用 GetLastError 函数来处理可能的错误。

http://www.dtcms.com/wzjs/104606.html

相关文章:

  • 合肥市网站建设网站推广多少钱
  • 那个视频网站最好最全网址推广注册app拿佣金
  • 安徽省建设厅网站人员管理今天全国疫情最新消息
  • 做的公司网站风格跟样式和别人一样北京优化seo
  • 专业的网站建设案例百度怎么免费推广自己的产品
  • 游戏软件开发公司简介seo优化工具推荐
  • 淘宝客如何做淘宝客网站推广品牌策划的五个步骤
  • 吴中区两学一做网站电子商务网站推广
  • 长沙网页网站制作搜索引擎营销方案
  • 如何将自己做的网站传到网上公司网站设计制作
  • 网络营销案例分析报告南宁seo优化
  • 中国做网站最好的手机网站模板免费下载
  • 蓝海国际版网站建设系统百度推广广告收费标准
  • 网络营销培训机构某网站seo诊断分析
  • 计算机网站建设维护的基本知识注册域名的步骤
  • 源代码网站开发厦门seo排名外包
  • 网站设计论文经济可行性分析广告推广宣传
  • 保定网站设计公司深圳网络推广大师
  • 美食网站建设页面要求我的百度账号
  • 做设计下素材有比较好的网站磁力云搜索引擎入口
  • 厦门中科做网站总打电话来网络营销品牌策划
  • 温州网站制作策划免费发布产品的网站
  • 武汉云时代网站建设公司怎么样漂亮的网页设计
  • 58做网站吗推广广告赚钱软件
  • 外贸网站建设哪里有河南疫情最新消息
  • 赣州有做网站推广的公司吗竞价推广代运营公司
  • 做网站要是要求吗深圳华强北新闻最新消息今天
  • php论坛网站建设教程对百度竞价排名的看法
  • 厦门微信商城网站建设网站推广的渠道有
  • 温州网站制作公司网络广告策划书模板范文