b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

如何实现WindowsAPI函数来模拟键盘及鼠标按键用mouse_event函数

电脑杂谈  发布时间:2021-04-22 08:03:12  来源:网络整理

如今,当Windows流行时,大多数用户都欢迎Windows接口程序。这些程序的操作只不过是键盘输入控件和鼠标输入控件两种。有时,对于复杂或重复性的输入操作,是否可以通过编程代替手动输入并使用该程序模拟键盘和鼠标输入?答案是肯定的。这主要是通过两个Windows API函数来实现的。让我们以vc ++为例,介绍如何实现这两个功能。

本文中的示例代码

我们使用Keybd_event api函数模拟键盘,并使用mouse_event函数模拟鼠标按钮。在vc中调用api函数既简单又方便。

首先介绍Keybd_event函数。 Keybd_event可以触发按键事件,这意味着将生成WM_KEYDOWN或WM_KEYUP消息。当然,这两个消息也可以用于模拟击键,但是直接使用此功能并不方便。 Keybd_event共有四个参数,第一个是键的虚拟键值,例如Enter键是vk_return,而tab键是vk_tab。第二个参数是扫描代码。通常,您无需进行设置。替换为0。第三个参数是选项标志。如果为keydown,则将其设置为0。如果为keyup,则将其设置为“ KEYEVENTF_KEYUP”。通常将第四个参数设置为0即可。以下代码可用于模拟按下键,其中XX表示XX键的虚拟键值,这是与每个键相对应的键代码,例如``A''= 65

keybd_event(65,0,0,0);

keybd_event(65,0,KEYEVENTF_KEYUP,0); ...

mouse_event最好与SetCursorPos(x,y)函数一起使用。与Keybd_event相似,mouse_event具有五个参数,第一个是选项标志,当它是MOUSEEVENTF_LEFTDOWN时,表示按下左键,而MOUSEEVENTF_LEFTUP表示释放左键。发送相应的消息到系统。第二和第三参数分别代表x,y

相对位置,通常可以设置为0,0,第四和第五个参数并不重要,通常可以设置为0,0。要更详细地使用Keybd_event和mouse_event函数,可以参考msdn或delphi帮助。

以下是有关mouse_event的示例代码:

POINT lpPoint;

GetCursorPos(&lpPoint);

SetCursorPos(lpPoint.x,lpPoint.y);

mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

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

上面的代码代表双击鼠标。要表示一次单击,请使用两个mouse_events(一次释放,一次释放)。

注意,无论是模拟键盘事件还是鼠标事件,都必须注意还原,即按下后释放键,按下一次对应于一次按下;单击后释放鼠标,否则可能会影响程序的功能。

好的,我希望本文能使您对模拟键盘和鼠标按钮有一个初步的了解。如果您想更深入地了解,可以参考msdn联机帮助并进行更多练习。这可能对您有很大帮助。

玩keybd_event

DELPHI 2005-8-24 15:51

模拟键盘不是很常用,但是当调用某些快捷键以执行某些功能时,确实非常方便。你不相信吗看一下下面的实现,您会大喊:为什么不早点告诉我?哈哈,没有博客,所以我依靠这些来赚取积分。

1)显示桌面:

许多软件都具有显示桌面的功能,每个人的方法都是遍历窗口,然后将其最小化。实际上,win系统为我们提供了非常方便的WIN键(即键盘位于CTRL键和ALT键之间。带有win徽标的按钮),借助它,您可以轻松完成显示桌面的功能

keybd_event(VK_LWIN,0,0,0);

keybd_event('M',0,0,0);

keybd_event('M',0,KEYEVENTF_KEYUP,0);

keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);

其他操作类似,例如直接显示启动操作,只需将上面的'M'替换为'R'。

直接keybd_event(VK_LWIN,0,0,0);

keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);

直接显示“开始”对话框。

2)全部实现快速选择

怎么用键盘控制鼠标_如何用键盘控制鼠标xp_如何用键盘控制鼠标xp

例如,很多时候listctrl实现全选,您可以使用listctrl将每个项目的状态设置为selected,这是Dorotho的事情。尝试使用快捷键CTRL + A,与其他快捷键的用法相同,哈哈,你知道该怎么办吗?

keybd_event(VK_CONTROL,(BYTE)0,0,0);

keybd_event('A',(BYTE)0,0,0); //您可以在此处使用'A',(BYTE)65,使用'a'不起作用。

keybd_event('A',(BYTE)0,KEYEVENTF_KEYUP,0);

keybd_event(VK_CONTROL,(BYTE)0,KEYEVENTF_KEYUP,0);

3)执行一些特殊键,例如数字键,大小写,以下是数字键的示例

bool bState = true; // true表示按NumLock,否则返回false

BYTE keyState [256];

GetKeyboardState((LPBYTE)&keyState);

if((bState &&!(keyState [VK_NUMLOCK]&1))||

(!bState &&(keyState [VK_NUMLOCK]&1)))

{

//模拟按键操作

keybd_event(VK_NUMLOCK,

0x45,

KEYEVENTF_EXTENDEDKEY | 0,

0);

//模拟密钥释放

keybd_event(VK_NUMLOCK,

0x45,

KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,

0);

}

4)您要同时按CTRL + ALT + DELETE,

keybd_event(VK_CONTROL,0,0,0);

keybd_event(VK_MENU,0,0,0);

keybd_event(VK_DELETE,0,0,0);

keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);

keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);

keybd_event(VK_DELETE,0,KEYEVENTF_KEYUP,0);

呵呵,它行不通,因为这些键被操作系统直接拦截并执行,并且模拟键盘只能发送到应用程序,因此此方法不起作用(如果要显示锁,对话框中,使用LockWorkStation();)

5) Window2000 / NT / XP不再主张使用此功能。上面的方法只是为了让您拓宽思路。怎么更换呢?哈哈,请看下面的内容,这样就可以完成以上所有代码

//在2000年以下,请改用它,包括“ winable.h”

INPUT输入[4];

memset(input,0,sizeof(input));

input [0] .type =输入[1] .type =输入[2] .type =输入[3] .type = INPUT_KEYBOARD;

input [0] .ki.wVk =输入[3] .ki.wVk = VK_LWIN;

input [1] .ki.wVk =输入[2] .ki.wVk ='R';

//接下来释放它很重要。

input [2] .ki.dwFlags = input [3] .ki.dwFlags = KEYEVENTF_KEYUP;

input [0] .ki.time =输入[1] .ki.time =输入[2] .ki.time =输入[3] .ki.time = GetTickCount();

SendInput(4,input,sizeof(INPUT));

感觉比罗索好一点,哈哈。

===================

一些带有WIN键的快捷键:

WIN key + D =快速剪切到桌面,再次单击以返回

WIN key + E =快速打开资源管理器

WIN键+ R =“运行”。

WIN键+ M =最小化所有窗口。

WIN键+ Shift + M =取消所有窗口的最小化。

WIN键+ F1 =帮助。

WIN键+ F =“查找”。

WIN键+ Ctrl + F =显示“查找计算机”。

WIN key + Tab =切换任务栏的程序。

WIN key + Break =显示系统内容。

键盘键和虚拟键代码的比较表

字母和数字键数字键盘键功能键其他键

键密钥代码密钥密钥代码密钥密钥密钥密钥代码

A65 0 96 F1 112退格8

B66 1 97 F2 113表9

C67 2 98 F3 114透明12

D68 3 99 F4 115输入13

E69 4 100F5 116 Shift 16

F70 5 101F6 117控件17

G71 6 102F7 118 Alt 18

H72 7 103F8 119大写锁定20

I73 8 104F9 120 Esc 27

J74 9 105F10121空格键32

K75 * 106F11122上一页33

L76 + 107F12123下一页34

M77输入108---结束35

N78-109---Home36

O79。 110---向左箭头37

P80 / 111---向上箭头38

Q81------右箭头39

R82------向下箭头40

S83------插入45

T84------删除46

U85------帮助47

V86------Num Lock 144

W87

X88

Y89

Z90

048

149

250

351

452

553

654

755

856

957


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-370046-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 董婷
        董婷

        全面备战搞点气势出来

      热点图片
      拼命载入中...