真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言mouse函數(shù)實(shí)例 c語(yǔ)言mouseevent

C語(yǔ)言openCV鼠標(biāo)選點(diǎn)void on_mouse函數(shù)的寫法,急?。。。。?/h2>

Int pointX;

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、電白ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的電白網(wǎng)站制作公司

int pointy;//全局

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

{

pointX = x;

pointy = y;

...

}

誰(shuí)能用c語(yǔ)言寫一個(gè)鉤子函數(shù)的例子

例子:

HWND hWnd = NULL; //定義成全局變量

HHOOK hKeyboard;

HHOOK hMouse;

LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lparam ) // 鼠標(biāo)鉤子函數(shù)

{

return 1; // 返回非零值表示已經(jīng)對(duì)當(dāng)前消息進(jìn)行了處理,這樣系統(tǒng)就不會(huì)再將這個(gè)消息傳遞給目標(biāo)窗口過(guò)程

}

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

if( VK_F4 == wParam (1 == (lparam291)) ) // 系統(tǒng)后門:Alt+F4鍵退出程序

{

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

定義鉤子函數(shù)

鉤子函數(shù)是一種特殊的回調(diào)函數(shù)。鉤子監(jiān)視的特定事件發(fā)生后,系統(tǒng)會(huì)調(diào)用鉤子函數(shù)進(jìn)行處理。不同事件的鉤子函數(shù)的形式是各不相同的。下面以鼠標(biāo)鉤子函數(shù)舉例說(shuō)明鉤子函數(shù)的原型:

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

參數(shù)wParam和 lParam包含所鉤消息的信息,比如鼠標(biāo)位置、狀態(tài),鍵盤按鍵等。nCode包含有關(guān)消息本身的信息,比如是否從消息隊(duì)列中移出。 我們先在鉤子函數(shù)中實(shí)現(xiàn)自定義的功能,然后調(diào)用函數(shù) CallNextHookEx.把鉤子信息傳遞給鉤子鏈的下一個(gè)鉤子函數(shù)。CallNextHookEx.的原型如下:

LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ) 參數(shù) hhk是鉤子句柄。nCode、wParam和lParam 是鉤子函數(shù)。

當(dāng)然也可以通過(guò)直接返回TRUE來(lái)丟棄該消息,就阻止了該消息的傳遞。

如何在C語(yǔ)言中返回一個(gè)鼠標(biāo)mouse_msg? 如果能舉一個(gè)程序段作為例子更好。 拒絕水財(cái)富值的。

時(shí)隔一年,我來(lái)到了大學(xué),選擇了直接最愛的軟件工程專業(yè),也有了充足的硬件設(shè)施可以利用,我還是和以前一樣,捧著書本、啃著語(yǔ)句、寫這代碼、調(diào)試這代碼…… 漸漸地,我脫離了老師的步伐,我直接一個(gè)人開了小灶,因?yàn)樽杂梢稽c(diǎn),時(shí)間多一點(diǎn),我學(xué)會(huì)了很多我自己沒有想到的事情和技術(shù)。 現(xiàn)在在大學(xué)里已經(jīng)有1你的時(shí)間了,我利用了所以的資源,為我自己的對(duì)C 語(yǔ)言的愛好更上一層樓,我找到了 一個(gè)更好的平臺(tái)——對(duì)C語(yǔ)言愛好者來(lái)說(shuō)——Linux操作系統(tǒng)。雖然我對(duì)Linux的接觸時(shí)間不是很長(zhǎng),但是我也了解這只是一個(gè)時(shí)間的問(wèn)題。我會(huì)加油的。

關(guān)于C語(yǔ)言鼠標(biāo)驅(qū)動(dòng)程序(高手請(qǐng)仔細(xì)看)

設(shè)置鼠標(biāo)的光標(biāo)形狀

設(shè)置鼠標(biāo)光標(biāo)需要三個(gè)方面信息:

鼠標(biāo)的外邊界:8*8點(diǎn)陣,16個(gè)整數(shù)

鼠標(biāo)的內(nèi)部形狀:8*8點(diǎn)陣,16個(gè)整數(shù)

以及鼠標(biāo)的熱點(diǎn)的相對(duì)坐標(biāo):int x,y

其中外邊界和內(nèi)邊界連續(xù)存放,為長(zhǎng)度為32的整型數(shù)組 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);

}

一些不同形狀的光標(biāo)數(shù)據(jù):

//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}};/*熱點(diǎn)*/

c語(yǔ)言:鼠標(biāo)和鍵盤函數(shù)的相關(guān)問(wèn)題

首先最簡(jiǎn)單的但可以后臺(tái)處理的有SendMessage()PostMessage() 發(fā)送鼠標(biāo), 鍵盤消息, 這個(gè)百度一搜n多了 然后中等級(jí)的模擬就是keyboard_eventmouse_event了這個(gè)比較用的比較多, 給個(gè)例子你 模擬鍵盤點(diǎn)擊void Press(UINT key)

{

keybd_event(key,MapVirtualKey(key, 0),0,0);

keybd_event(key,MapVirtualKey(key, 0),KEYEVENTF_KEYUP,0);

} 模擬 鼠標(biāo)左鍵單擊mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);

mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); 這里注意調(diào)用 keyboard_event 的時(shí)候一定要用MapVirtualKey 網(wǎng)上大部分的代碼都是沒用的, 這個(gè)函數(shù)時(shí)獲取 硬件掃描碼 的先說(shuō)下keybd_event();函數(shù)的參數(shù)keybd_event(要模擬按下的虛擬按鍵碼, 虛擬按鍵碼對(duì)應(yīng)的硬件掃描碼,0,0);網(wǎng)上的代碼大部分都有 虛擬按鍵碼, 當(dāng)然你運(yùn)行大部分都是沒問(wèn)題的, 因?yàn)閷?duì)于一般的程序而言是沒問(wèn)題的但有的程序?yàn)榱朔乐?外掛 或者 防止其他程序惡意修改什么的,會(huì)對(duì) 鼠標(biāo)鍵盤 消息進(jìn)行檢測(cè), 如果檢測(cè)到?jīng)]有硬件掃描碼會(huì)拒絕執(zhí)行的 然后還有比較高級(jí)的就是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 事件設(shè)定

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;// 指定 鍵盤 屬性結(jié)構(gòu)

inputKeyUP.ki = kUp; // 指定 鍵盤 屬性結(jié)構(gòu)

// v-code Clicked INPUT 事件設(shè)定完成

// 將 INPUT 事件送到 Root 視窗, 系統(tǒng)會(huì)根據(jù)視窗位置,送給目標(biāo)視窗

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 能區(qū)分大小寫

OnSendCharCode('A');

OnSendCharCode('a'); 不過(guò)還是有很多游戲,它是用 DirectX 技術(shù)去做的,這些大部分對(duì)他們沒用所以還有最最最高級(jí)的模擬, 就是 對(duì)硬件驅(qū)動(dòng)程序的模擬這個(gè)有個(gè)外國(guó)人寫的 winio.h 的頭文件, 有興趣可以去學(xué), 一般用不到的,


文章標(biāo)題:c語(yǔ)言mouse函數(shù)實(shí)例 c語(yǔ)言mouseevent
文章出自:http://weahome.cn/article/doddhsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部