欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言鼠標功能函數(shù) c語言鼠標操作

c語言如何實現(xiàn)控制鼠標

可以,需要調(diào)用windowsAPI函數(shù)。

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

頭文件windows.h。

簡單思路:

通過GetStdHandle獲取標準輸入句柄。

再通過ReadConsokeInput將輸入信息存儲到結(jié)構(gòu)體類型INPUT_RECODE變量中。

再通過判斷,截取到鼠標電擊的事件。

具體API函數(shù)、參數(shù)、功能還有很多。需要網(wǎng)上找資料可以學(xué)。

我這里就簡單寫一個,鼠標點擊控制臺任意位置,并在該位置打印字符串。

#include?stdio.h

#include?windows.h

int?main()

{

HANDLE?hInput?=?GetStdHandle(STD_INPUT_HANDLE);?//?獲取標準輸入設(shè)備句柄

INPUT_RECORD?inRec;

DWORD?res;

COORD?p0;

while(1)

{

ReadConsoleInput(hInput,?inRec,?1,?res);

if?(inRec.EventType?==?MOUSE_EVENT??inRec.Event.MouseEvent.dwButtonState?==?FROM_LEFT_1ST_BUTTON_PRESSED)?//鼠標左鍵

{

p0.X=inRec.Event.MouseEvent.dwMousePosition.X;

p0.Y=inRec.Event.MouseEvent.dwMousePosition.Y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

printf("你在這里點擊的左鍵\n");

}

}

return?0;

}

c語言:鼠標和鍵盤函數(shù)的相關(guān)問題

首先最簡單的但可以后臺處理的有SendMessage()PostMessage()

發(fā)送鼠標,

鍵盤消息,

這個百度一搜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);

這里注意調(diào)用

keyboard_event

的時候一定要用MapVirtualKey

網(wǎng)上大部分的代碼都是沒用的,

這個函數(shù)時獲取

硬件掃描碼

的先說下keybd_event();函數(shù)的參數(shù)keybd_event(要模擬按下的虛擬按鍵碼,

虛擬按鍵碼對應(yīng)的硬件掃描碼,0,0);網(wǎng)上的代碼大部分都有

虛擬按鍵碼,

當然你運行大部分都是沒問題的,

因為對于一般的程序而言是沒問題的但有的程序為了防止

外掛

或者

防止其他程序惡意修改什么的,會對

鼠標鍵盤

消息進行檢測,

如果檢測到?jīng)]有硬件掃描碼會拒絕執(zhí)行的

然后還有比較高級的就是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)會根據(jù)視窗位置,送給目標視窗

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');

不過還是有很多游戲,它是用

DirectX

技術(shù)去做的,這些大部分對他們沒用所以還有最最最高級的模擬,

就是

對硬件驅(qū)動程序的模擬這個有個外國人寫的

winio.h

的頭文件,

有興趣可以去學(xué),

一般用不到的,

C語言怎樣用鼠標控制播放一首歌?

你是想問通過控制鼠標操作播放器播放歌(類似按鍵精靈那樣重復(fù)用戶操作)。還是直接播放音樂文件。

兩種都需要window API支持。

一、直接播放文件,可用函數(shù)playSound,頭文件windows.h和mmsystem.h。(注意不是支持所有文件格式)。

二、控制鼠標模擬操作:

1、鼠標點擊操作可用SendInput函數(shù)或keybd_event函數(shù)。

2、鼠標移動可用SetCursorPos或mouse_event。

三、通過FundWindow函數(shù)獲取播放軟件的窗口句柄,再通過FindWindowEx遍歷窗口下所有控件,直接對窗口控件發(fā)送消息。

C語言什么函數(shù)能發(fā)送鼠標移消息?postmessage能嗎

可以

B00L PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

關(guān)于后兩個類型:

typedef UINT WPARAM;

typedef LONG LPARAM;

都是4字節(jié)

hWnd--要發(fā)給的程序句柄

Msg:

Msg=WM_MOUSEMOVE..鼠標移動事件

wParam:

MK_CONTROL ctrl鍵按下.

MK_LBUTTON 鼠標左鍵鍵按下.

MK_MBUTTON 鼠標中間鍵按下.

MK_RBUTTON 鼠標右鍵按下.

MK_SHIFT shift鍵按下.

lParam--高位當前鼠標y坐標,低位當前鼠標x坐標

比如給句柄為hWnd的程序隊列發(fā)送一個鼠標移動信息,同時鼠標左鍵和中間處于按下狀態(tài),鼠標坐標為(120,100)

PostMessage(hWnd, WM_MOUSEMOVE ,MK_LBUTTON|MK_MBUTTON,(16100)|120);

如果是要發(fā)送數(shù)據(jù),然后你在程序端自己處理的話,推薦用sendmessage函數(shù),因為PostMessage只是把消息發(fā)送到程序的消息隊列去,程序自動處理.就是說,如果接收消息的程序是你自己寫,用sendmessage就可以,如果是別人寫的程序,你要仿真一個事件給那個程序,那么就用PostMessage

如果用

SendMessage(Hwnd, WM_MOUSEMOVE , x, y);

其中

x:wParam,取值范圍

MK_CONTROL Set if the ctrl key is down.

MK_LBUTTON Set if the left mouse button is down.

MK_MBUTTON Set if the middle mouse button is down.

MK_RBUTTON Set if the right mouse button is down.

MK_SHIFT Set if the shift key is down.

y:lParam,鼠標的坐標

xPos = LOWORD(lParam); //horizontal position of cursor

yPos = HIWORD(lParam); //vertical position of cursor

你就可以在程序里重載虛函數(shù)LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)

switch(message)

{

case WM_MOUSEMOVE:

//寫你要在鼠標移動時做的處理

break;

.....

}

CDialog::WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);

}

CDialog::WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);是MFC自己的處理函數(shù),最好加上,不然會很麻煩

很簡單的SendMessage和postmessage一樣使用方法

網(wǎng)頁題目:c語言鼠標功能函數(shù) c語言鼠標操作
文章來源:http://chinadenli.net/article34/hpepse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航動態(tài)網(wǎng)站、標簽優(yōu)化Google、云服務(wù)器網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化