本文目錄一覽:
用C語言怎麼判斷滑鼠在窗口的位置?
用API函數GetCursorPos()可以得到滑鼠現在的位置:
//—————————————————————————
#include stdio.h
#include windows.h
int main(void)
{
POINT pt;
GetCursorPos(pt);
printf(“%ld %ld\n”,pt.x,pt.y);
return 0;
}
//—————————————————————————
C語言在控制台清屏之後滑鼠定位就不行了怎麼辦
樓主你好。
是因為程序卡在這裡了:
Y=(int)pos.Y;
if
(inRec.EventType
==
MOUSE_EVENT
inRec.Event.MouseEvent.dwButtonState
==
FROM_LEFT_1ST_BUTTON_PRESSEDY=3Y=1)
//滑鼠左鍵
break;
這裡無法break出來。原因是Y=3Y=1這個條件無法滿足。
程序還在調試中。
【舊代碼省略】
以上調試程序可以看到只要不system(“cls”)就可以持續讀入滑鼠事件,但是只要取消system(“cls”)的注釋,在清屏一次之後就會無法讀入滑鼠事件,程序卡在ReadConsoleInput處,只能讀入鍵盤和聚焦事件什麼的。暫時分析到這裡。
我用clrscr()代替system(“cls”)成功了!(clrscr你可以查查百度百科)
#include
windows.h
#include
conio.h
#include
stdlib.h
#include
stdio.h
#define
PERR(bSuccess,
api){if(!(bSuccess))
printf(“%s:Error
%d
from
%s
on
line
%d\n”,
__FILE__,
GetLastError(),
api,
__LINE__);}
void
MyCls(HANDLE)
;
void
clrscr(void)
{
HANDLE
hStdOut=GetStdHandle(STD_OUTPUT_HANDLE);
MyCls(hStdOut);
return;
}
void
MyCls(HANDLE
hConsole)
{
COORD
coordScreen={0,0};//設置清屏後游標返回的屏幕左上角坐標
BOOL
bSuccess;
DWORD
cCharsWritten;
CONSOLE_SCREEN_BUFFER_INFO
csbi;//保存緩衝區信息
DWORD
dwConSize;//當前緩衝區可容納的字元數
bSuccess=GetConsoleScreenBufferInfo(hConsole,csbi);//獲得緩衝區信息
PERR(bSuccess,”GetConsoleScreenBufferInfo”);
dwConSize=csbi.dwSize.X
*
csbi.dwSize.Y;//緩衝區容納字元數目
//用空格填充緩衝區
bSuccess=FillConsoleOutputCharacter(hConsole,(TCHAR)’
‘,dwConSize,coordScreen,cCharsWritten);
PERR(bSuccess,”FillConsoleOutputCharacter”);
bSuccess=GetConsoleScreenBufferInfo(hConsole,csbi);//獲得緩衝區信息
PERR(bSuccess,”ConsoleScreenBufferInfo”);
//填充緩衝區屬性
bSuccess=FillConsoleOutputAttribute(hConsole,csbi.wAttributes,dwConSize,coordScreen,cCharsWritten);
PERR(bSuccess,”FillConsoleOutputAttribute”);
//游標返回屏幕左上角坐標
bSuccess=SetConsoleCursorPosition(hConsole,coordScreen);
PERR(bSuccess,”SetConsoleCursorPosition”);
return;
}
void
main()
{
int
fh();
int
ret;
HANDLE
hInput
=
GetStdHandle(STD_INPUT_HANDLE);;
//
獲取標準輸入設備句柄
for(;;)
{
printf(“請點擊滑鼠左鍵\n”);
ret
=
fh(hInput);
printf(“%d\n”,ret);
Sleep(200);
clrscr();
}
}
int
fh(HANDLE
hInput)
{
INPUT_RECORD
inRec;
DWORD
res;
int
Y;
COORD
pos
=
{0,
0};
for(;;)
{
ReadConsoleInput(hInput,
inRec,
1,
res);
pos
=
inRec.Event.MouseEvent.dwMousePosition;
Y=(int)pos.Y;
if
(inRec.EventType
==MOUSE_EVENT
inRec.Event.MouseEvent.dwButtonState
==
FROM_LEFT_1ST_BUTTON_PRESSED){
//滑鼠左鍵
break;
}
}
return
Y;
}
c語言里怎麼定位游標
設置CMD窗口游標位置
void setxy(int x, int y) //x,y為游標座標
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
c語言滑鼠定時點擊指定位置
c語言滑鼠定時點擊指定位置需要模擬滑鼠在遠程桌面中進行移動。定時模擬點擊屏幕坐標位置工具,程序採用c語言編寫,可以自定義設置時間,設置屏幕坐標,到時間滑鼠會自動根據坐標的位置點擊一次。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/297951.html