c语言:鼠标和键盘函数的相关问题

作者&投稿:绽侵 (若有异议请与网页底部的电邮联系)
c语言:鼠标和键盘函数的相关问题~

通过调用API
mouse_event,SetCursorPos实现鼠标的模拟
给你点简单的代码自己研究下
想自己动手是好事
Private
Declare
Sub
mouse_event
Lib
"user32"
(ByVal
dwFlags
As
Long,
ByVal
dx
As
Long,
ByVal
dy
As
Long,
ByVal
cButtons
As
Long,
ByVal
dwExtraInfo
As
Long)
Private
Declare
Function
SetCursorPos
Lib
"user32"
(ByVal
x
As
Long,
ByVal
y
As
Long)
As
Long
Const
MOUSEEVENTF_LEFTDOWN
=
&H2
Const
MOUSEEVENTF_LEFTUP
=
&H4
Const
MOUSEEVENTF_MIDDLEDOWN
=
&H20
Const
MOUSEEVENTF_MIDDLEUP
=
&H40
Const
MOUSEEVENTF_MOVE
=
&H1
Const
MOUSEEVENTF_ABSOLUTE
=
&H8000
Const
MOUSEEVENTF_RIGHTDOWN
=
&H8
Const
MOUSEEVENTF_RIGHTUP
=
&H10
Private
Sub
Command1_Click()
SetCursorPos
Val(400),
Val(0)
mouse_event
MOUSEEVENTF_LEFTDOWN
Or
MOUSEEVENTF_LEFTUP,
0,
0,
0,
0
End
Sub
Private
Sub
Command2_Click()
mouse_event
MOUSEEVENTF_MOVE,
210,
200,
0,
0
SetCursorPos
Val(300),
Val(300)
mouse_event
MOUSEEVENTF_RIGHTDOWN
Or
MOUSEEVENTF_RIGHTUP,
0,
0,
0,
0
End
Sub

用bioskey()函数可以实现读取键盘的上下左右键

函数原型:int bioskey (int cmd)
说 明:bioskey()的函数原型在bios.h中,即必须包含头文件#include

读取方向键可以用下面的程序啊!

#include
#include
#define Key_Up 0x4800 // 向上方向键   
#define Key_Down 0x5000 // 向下方向键
#define Key_Right 0x4d00 // 向右方向键
#define Key_Left 0x4b00 // 向左方向键
void main()
{
int key=bioskey(0);   
switch(key)   
{
  case Key_Up : {printf(" 向上方向键被按下"); break;}  
  case Key_Down : {printf(" 向下方向键被按下"); break;}
   case Key_Left : {printf(" 向左方向键被按下"); break;}
   case Key_Right : {printf(" 向右方向键被按下"); break;}   
}
}

首先最简单的但可以后台处理的有SendMessage()PostMessage() 发送鼠标, 键盘消息, 这个百度一搜n多了 然后中等级的模拟就是keyboard_eventmouse_event了这个比较用的比较多, 给个例子你 模拟键盘点击void Press(UINT key)
{
keybd_event(key,MapVirtualKey(key, 0),0,0);
keybd_event(key,MapVirtualKey(key, 0),KEYEVENTF_KEYUP,0);
} 模拟 鼠标左键单击mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 这里注意调用 keyboard_event 的时候一定要用MapVirtualKey 网上大部分的代码都是没用的, 这个函数时获取 硬件扫描码 的先说下keybd_event();函数的参数keybd_event(要模拟按下的虚拟按键码, 虚拟按键码对应的硬件扫描码,0,0);网上的代码大部分都有 虚拟按键码, 当然你运行大部分都是没问题的, 因为对于一般的程序而言是没问题的但有的程序为了防止 外挂 或者 防止其他程序恶意修改什么的,会对 鼠标键盘 消息进行检测, 如果检测到没有硬件扫描码会拒绝执行的 然后还有比较高级的就是SendInput模拟了void OnSendCharCode(unsigned short unicode = 0,unsigned short vcode = 0,bool bDown = false,bool bUnicode = true);
void OnSendCharCode(unsigned short unicode,unsigned short vcode,bool bDown,bool bUnicode)
{
unsigned short uNum = 0;
// v-code Clicked INPUT 事件设定
KEYBDINPUT kDown;
KEYBDINPUT kUp;
if(!bUnicode)
{
// 'A'; (Virtual Code 只有大写), 要输入小写
// Enter: 13, Backspace: 8, Up:38
kDown.wVk = kUp.wVk = vcode;
kDown.wScan = kUp.wScan = ::MapVirtualKey(kDown.wVk,0);
//kDown.dwFlags = KEYEVENTF_EXTENDEDKEY;
kUp.dwFlags = KEYEVENTF_KEYUP;
}else{
kDown.wVk = kUp.wVk = 0;
kDown.wScan = kUp.wScan = unicode;
kDown.dwFlags = KEYEVENTF_UNICODE;
kUp.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
}
// 建立 KeyDown 事件 建立 KeyUP 事件
INPUT inputKeyDown, inputKeyUP;
inputKeyDown.type = inputKeyUP.type = INPUT_KEYBOARD; // 指定 input 为 keyboard
kDown.time = kUp.time = 0; // the system will provide its own time stamp.
kDown.dwExtraInfo = kUp.dwExtraInfo = (WORD)::GetMessageExtraInfo();
inputKeyDown.ki = kDown;// 指定 键盘 属性结构
inputKeyUP.ki = kUp; // 指定 键盘 属性结构
// v-code Clicked INPUT 事件设定完成
// 将 INPUT 事件送到 Root 视窗, 系统会根据视窗位置,送给目标视窗
if(bDown)
{
INPUT event[1] = {inputKeyDown};
uNum = ::SendInput(1,event, sizeof(INPUT));

}else{
INPUT event[2] = {inputKeyDown,inputKeyUP};
uNum = ::SendInput(2,event, sizeof(INPUT));
}
}
//例子:
OnSendCharCode(0,VK_SHIFT,true,false);
OnSendCharCode(0,'A',false,false);
OnSendCharCode(0,VK_SHIFT,false,false);
OnSendCharCode(0,'A',false,false);
//KEYEVENTF_UNICODE 能区分大小写
OnSendCharCode('A');
OnSendCharCode('a'); 不过还是有很多游戏,它是用 DirectX 技术去做的,这些大部分对他们没用所以还有最最最高级的模拟, 就是 对硬件驱动程序的模拟这个有个外国人写的 winio.h 的头文件, 有兴趣可以去学, 一般用不到的,

通过调用API mouse_event,SetCursorPos实现鼠标的模拟 给你点简单的代码自己研究下 想自己动手是好事Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub Command1_Click()

SetCursorPos Val(400), Val(0)
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End SubPrivate Sub Command2_Click()
mouse_event MOUSEEVENTF_MOVE, 210, 200, 0, 0
SetCursorPos Val(300), Val(300)
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub


谁教我做劲舞团按键精灵的脚本
在编写脚本时,你需要使用按键精灵的脚本语言,这种语言通常包括一系列命令和函数,用于模拟鼠标和键盘操作。例如,你可以使用“MoveTo”命令来移动鼠标到指定位置,使用“LeftClick”命令来模拟鼠标左键点击。通过组合这些命令,你可以编写出一段能够自动完成劲舞团游戏操作的脚本。下面是一个简单的劲舞团按键...

c++键盘鼠标录制实现原理
键盘录制原理。1、在Windows操作系统中,可以使用GetAsyncKeyState函数来获取当前键盘按键的状态。2、通过循环遍历所有可能的键盘按键,判断每个按键是否被按下。3、将按下的按键信息记录下来,例如键码、按键类型(按下、松开)和时间戳。

seraph 怎么实现后台
设置鼠标和键盘模拟输入的方式。语法 SetInputMode(Mode)Mode 鼠标键盘模拟输入的方式 0 全局输入方式,以屏幕左上角为原点,输入将会影响所有的程序 1 窗口消息输入方式,以某一窗口左上角为原点,输入将只影响这个程序(脚本可以在后台运行)2 驱动级输入方式。此方式从硬件上模拟键盘鼠标的操作,当有...

<初窥门径>求教一些读取键盘和鼠标操作的函数
C++标准库没有这些函数,因为鼠标不是标准输入设备。像你要的这种函数在windows下有一个api函数GetCursorPos可以得到鼠标的位置,但不能用于其他操作系统。函数用法你上网查查吧。

vb驱动级模拟鼠标和键盘操作15分 vb驱动级模拟鼠标和键盘操作 希望能得...
WinIOI驱动级模拟 Sub MyKeyUp(ByVal vKeyCoad As Long)'这个用来模拟释放键,参数vKeyCoad传入按键的虚拟码 Dim btScancode As Long btScancode = MapVirtualKey(vKeyCoad, 0)KBCWait4IBE '等待键盘缓冲区为空 SetPortVal KBC_KEY_CMD, &HD2, 1 '发送键盘写入命令 KBCWait4IBE SetPor...

MFC怎样处理键盘事件。想用mfc写个游戏,不知道怎样用键盘控制。
MFC有个OnKeyDown函数,具体有三个参数。afx_msg void OnKeyDown(UINT nChar,UINT nRepCnt,UINT nFlags );其中,第一个参数表示哪个按键。nChar Specifies the virtual key code of the given key. For a list of of standard virtual key codes, see Winuser.h 这些虚拟键值,有一些是系统常量,...

C++获取光标所在位置的句柄,并向光标处发送数据,用PostMessage(),要...
具体操作方法:运行程序,让后将鼠标指针移动至其他窗口之上,最好是在标题栏上;然后按下键盘上的任意按键(推荐按字母键)。在VC++6.0“文件”菜单中,新建一个空的“Win32 AppLication”工程。然后新建一个.cpp源文件,在源文件中写入如下代码:include <windows.h>LRESULT CALLBACK WindowProc(HWND...

电脑操作系统工作是什么原理 比如说我用鼠标点一下 计算机图标 啪 打开...
很简单,像你说的我用鼠标点一下计算机图标就打开了某个程序。其实就是函数调用的过程,系统软件或应用软件要完成某个功能,都是以函数调用的形式实现的。函数就是表示每个输入值对应唯一输出值的一种对应关系,即x=y这样。在程序中是通过对函数的调用来执行函数体的。函数体是用花括号括起来的若干语句...

Java问题我现在用Robot对象写了一个鼠标能自己移动,点击,键盘能自动输 ...
一: 使用Java自带的Robot实现对鼠标和键盘的控制, 都是前台的,显示的.二: 使用Java的 JNI\/JNA技术,可以实现后台模拟操作. 不会真实的移动鼠标,点击等..三: JNI和JNA 里面涉及一些C语言的知识, 就是利用Java去调用windows API 比如,找到浏览器的窗口句柄HWND ,发送消息PostMessage ,去实现键鼠的操作...

python实现微信甜蜜信息轰炸机
首先需要导入这两个包,一个是控制键盘的,一个是控制鼠标的 Wechat_expression=["爱你哟","么么哒","xxxx"]这里填写轰炸信息,自己写上就行。键盘控制函数defkeyboardInput(string):keyboard=KB()keyboard.type(string)#鼠标控制函数defmouseClick():mouse=Controller()mouse.press(Button.left)mouse....

保德县19210277041: c语言 获取鼠标键盘事件 -
宗圣具易瑞: 我估计你分数给的在高也没人回答.来个这样的代码太麻烦了.而且百度金币用处也不大.不过,我可以写几个鼠标函数给你参考一下.首先了解一下鼠标的中断._AX=0x01 表示显示光标 _AX=0x02 停止显示光标 _AX=0x03 读取光标位置与案...

保德县19210277041: 如何实现C语言中用键盘控制光标移动?
宗圣具易瑞: 几个库函数:函数名: bioskey 功 能: 直接使用BIOS服务的键盘接口 用 法: int bioskey(int cmd); 程序例: #include#include#include#define RIGHT 0x01 #define LEFT 0x02 #define CTRL 0x04 #define ALT 0x08 int main(void) { int key, ...

保德县19210277041: 我那程序就差最后一步了,C语言中怎么让光标随着键盘的方向键移动啊?? -
宗圣具易瑞: 如果是控制台应用程序的话,用 SetConsoleCursorPosition( ) 函数可以控制插入符的位置 如果是 Windows 应用程序的话,用 SetCaretPos( ) 函数来控制插入符的位置

保德县19210277041: 谁有c语言的鼠标操作函数集 -
宗圣具易瑞: 我给你个程序,里面涉及到鼠标操作,具体你可以下载《DOS编程大全》这本书,有关于鼠标的.还不懂,加我QQ(先声明我也是菜鸟):410224746.注明:C语言#include<dos.h>#include<graphics.h>#include<conio.h>#include<stdio.h> ...

保德县19210277041: C语言中的键盘输入函数... -
宗圣具易瑞: k=k&0xff?0x00ff:k>>8;其实就是if(k&0xff) { k=0x00ff;}else { k=k>>8;}的简写.其实0xff和0x00ff是一样的,都表示同一个十六进制的值.书上这么写,没有错;至于为什么,就不好说了.可能是让你多学点知识,也可能是现在很多书其实在编写时并不是很认真的.毕竟尽信书不如无书!后面的k>>8是把0xff的值右移8位,达到计算的目的(具体什么目的要看具体内容)

保德县19210277041: win10中c语言无法响应鼠标函数 -
宗圣具易瑞: 在控制台窗口,点击鼠标右键,选择属性,将选项中的“快速编辑模式(Q)”关掉,并选择旧版控制台,重新启动即可.

保德县19210277041: C语言找到窗口句柄,然后进行后台鼠标键盘操作
宗圣具易瑞: 鼠标:窗口处理函数中加入WM_MOUSEMOVE消息,然后编写鼠标消息处理函数OnMouseMove,当然,鼠标消息不止这一个,具体请查看msdn 键盘:添加WM_KEYDOWN/WM_KEYUP/WM_CHAR消息,这三个消息的具体请查看msdn,然后就可以编写消息消息处理函数了!

保德县19210277041: C语言 通过键盘对输入的数字和字符进行控制 -
宗圣具易瑞: 就是说,要求输入数据时,如果你键盘上点的不是数字,就没反应或者提示错误信息,要求只输入0和1时,键盘上按其他键就没反应或者提示错误信息,这个C语言里面有个函数可以检测键盘按下时的按的哪个键的,网上查一下吧,我记不太清楚了

保德县19210277041: c语言键盘响应 -
宗圣具易瑞: c语言有专门的函数啊,比如bioskey()函数,用它可以获得键盘上按键的键值,获得键值之后,把它们记住,或者用宏定义,就可以为以后的 判断语句使用,for example:#include void main(void) { int key=0; clrscr(); while(key != 0x11b) /*0x11b就是ESC键的键值,用它来判断结束,这是我事先知道的,方法是一样的*/ { key = bioskey(0); printf("%x ",key);/*把获得的键值用16进制显示*/ } }

保德县19210277041: 在C语言中怎么通过按键来做出选择 -
宗圣具易瑞: c语言可以调用windows的api函数 有检测鼠标活动的函数 GetAsyncKeyState 这个不但可以检测键盘的按下,还能检测鼠标的按下 其实,类似的api很多,只要调用就行了 这个函数的用法百度百科有

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网