资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言mouse函数实例 c语言mouseevent

C语言openCV鼠标选点void on_mouse函数的写法,急!!!!!

Int pointX;

我们提供的服务有:成都做网站、成都网站制作、微信公众号开发、网站优化、网站认证、电白ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的电白网站制作公司

int pointy;//全局

void on_mouse( int event, int x, int y, int flags,void* param)

{

pointX = x;

pointy = y;

...

}

谁能用c语言写一个钩子函数的例子

例子:

HWND hWnd = NULL; //定义成全局变量

HHOOK hKeyboard;

HHOOK hMouse;

LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lparam ) // 鼠标钩子函数

{

return 1; // 返回非零值表示已经对当前消息进行了处理,这样系统就不会再将这个消息传递给目标窗口过程

}

LRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lparam )

if( VK_F4 == wParam (1 == (lparam291)) ) // 系统后门:Alt+F4键退出程序

{

::SendMessageA( hWnd, WM_CLOSE, 0, 0 );

定义钩子函数

钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进行处理。不同事件的钩子函数的形式是各不相同的。下面以鼠标钩子函数举例说明钩子函数的原型:

LRESULT CALLBACK HookProc(int nCode ,WPARAM wParam,LPARAM lParam)

参数wParam和 lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键等。nCode包含有关消息本身的信息,比如是否从消息队列中移出。 我们先在钩子函数中实现自定义的功能,然后调用函数 CallNextHookEx.把钩子信息传递给钩子链的下一个钩子函数。CallNextHookEx.的原型如下:

LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ) 参数 hhk是钩子句柄。nCode、wParam和lParam 是钩子函数。

当然也可以通过直接返回TRUE来丢弃该消息,就阻止了该消息的传递。

如何在C语言中返回一个鼠标mouse_msg? 如果能举一个程序段作为例子更好。 拒绝水财富值的。

时隔一年,我来到了大学,选择了直接最爱的软件工程专业,也有了充足的硬件设施可以利用,我还是和以前一样,捧着书本、啃着语句、写这代码、调试这代码…… 渐渐地,我脱离了老师的步伐,我直接一个人开了小灶,因为自由一点,时间多一点,我学会了很多我自己没有想到的事情和技术。 现在在大学里已经有1你的时间了,我利用了所以的资源,为我自己的对C 语言的爱好更上一层楼,我找到了 一个更好的平台——对C语言爱好者来说——Linux操作系统。虽然我对Linux的接触时间不是很长,但是我也了解这只是一个时间的问题。我会加油的。

关于C语言鼠标驱动程序(高手请仔细看)

设置鼠标的光标形状

设置鼠标光标需要三个方面信息:

鼠标的外边界:8*8点阵,16个整数

鼠标的内部形状:8*8点阵,16个整数

以及鼠标的热点的相对坐标:int x,y

其中外边界和内边界连续存放,为长度为32的整型数组 int marks[32] SetCurs(unsigned masks[32],x,y)

{ union REGS regs; struct SREGS sregs;

regs.x.ax=9;

regs.x.bx=x; regs.x.cx=y;/* hot spot*/

regs.x.dx=(unsigned)masks;

segread(sregs); int86(0x33,(r)gs,(r)gs);

}

一些不同形状的光标数据:

//mouse

{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, //Cursor mask

0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1000, 0x13c0,

0x3ff0, 0x7ff8, 0xfff8, 0xfff8, 0x0824, 0x0822, 0x1ce2, 0x0000},

//empty hand

{0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,

0x0c00, 0x1200, 0x1200, 0x1200, 0x13fe, 0x1249, 0x1249, 0x1249,

0x7249, 0x9001, 0x9001, 0x9001, 0x8001, 0x8001, 0x4002, 0x3ffc},

//full arrow

{0x3fff, 0x1fff, 0x0fff, 0x07ff, 0x03ff, 0x01ff, 0x00ff, 0x007f,

0x003f, 0x00ff, 0x01ff, 0x10ff, 0x30ff, 0xf87f, 0xf87f, 0xfc3f,

0x0000, 0x4000, 0x6000, 0x7000, 0x7800, 0x7c00, 0x7e00, 0x7f00,

0x7f80, 0x7e00, 0x7c00, 0x4600, 0x0600, 0x0300, 0x0300, 0x0180},

//full hand

{0xf3ff, 0xe1ff, 0xe1ff, 0xe1ff, 0xe001, 0xe000, 0xe000, 0xe000,

0x8000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8001, 0xc003,

0x0c00, 0x1200, 0x1200, 0x1200, 0x13fe, 0x1249, 0x1249, 0x1249,

0x7249, 0x9001, 0x9001, 0x9001, 0x8001, 0x8001, 0x4002, 0x3ffc}

};

Point hotspot[]={{0,11},{4,0},{0,0},{4,0}};/*热点*/

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

首先最简单的但可以后台处理的有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 的头文件, 有兴趣可以去学, 一般用不到的,


网站名称:c语言mouse函数实例 c语言mouseevent
文章路径:http://cdkjz.cn/article/doddhsd.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220