本文目錄一覽:
c語言如何實現控制滑鼠
可以,需要調用windowsAPI函數。
頭文件windows.h。
簡單思路:
通過GetStdHandle獲取標準輸入句柄。
再通過ReadConsokeInput將輸入信息存儲到結構體類型INPUT_RECODE變數中。
再通過判斷,截取到滑鼠電擊的事件。
具體API函數、參數、功能還有很多。需要網上找資料可以學。
我這裡就簡單寫一個,滑鼠點擊控制台任意位置,並在該位置列印字元串。
#include stdio.h
#include windows.h
int main()
{
HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE); // 獲取標準輸入設備句柄
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語言來實現滑鼠移動。
#include stdio.h
int main (void)
{
SetCursorPos(1,1);
return 0;
}
C語言怎麼實現滑鼠操作
VOID keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, DWORD dwExtraInfo ); 4個參數都是輸入參數。 bVk:鍵名,例如: VK_NUMPAD7,VK_BACK, VK_TAB,VK_SHIFT,VK_F1,。。。 keybd_event(VK_MENU,0xb8,0 , 0); — 按下Alt 鍵 keybd_event(VK_MENU,0xb8,KEYEVENTF_KEYUP,0); — 放開 Alt 鍵 (複位,彈上來) === 下面程序模擬按 notepad 編輯器。等於C語言 system(“notepad”); 彈出 記事本。
C語言下怎麼用滑鼠啊
/*這個我確實不會,直接找了一篇你看下,估計有所參考*/
#include dos.h
#include bios.h
#include malloc.h
#include stdlib.h
#include stdio.h
#include “graphics.h”
#define R 15 /*滑鼠的形態*/
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
initgraph(gd, gm, “”);
}
/*獲取滑鼠位置和按鍵,key=1是左鍵,key=2是右鍵*/
void getmouse(int *x,int *y,int *key)
{
union REGS inregs,outregs;
inregs.x.ax=3; /*獲取滑鼠位置和狀態也可以用3*/
int86(0x33,inregs,outregs); /*中斷調用*/
*x=outregs.x.cx; /*cx寄存器中存的是橫坐標*/
*y=outregs.x.dx; /*dx寄存器中存的是列坐標*/
*key=outregs.x.bx; /*bx寄存器是按鍵狀態*/
}
void visbilemouse()
{
union REGS inregs,outregs;
inregs.x.ax=0x01; /*顯示滑鼠*/
int86(0x33,inregs,outregs);
}
/*按鍵後,返回當前滑鼠的x,y和按鍵狀態,知道按鍵後才返回*/
void mouse(int *x,int *y,int *z) /*畫滑鼠是利用將一個空矩形存入內存中,然後再在該空矩形中畫滑鼠形狀*/
{
int a=0,b=0,c=0,a_old=0,b_old=0; /*a,b的值可以隨便*/
int *ball; /*定義指向內存的存儲圖形的指針*/
ball=malloc(imagesize(a,b,a+R,b+R)); /*返回矩形的大小*/
getimage(a,b,a+R,b+R,ball); /*第一次將圖形(一個空矩形)存入到內存中,內存中存入的是一個空矩形*/
/*setcolor(GREEN);
setlinestyle(0,0,1);
line(a,b,a+R,b+R/2);
line(a,b,a+R/2,b+R);
line(a+R,b+R/2,a+R/2,b+R);
line(a+R*3/4,b+R*3/4,a+R,b+R); 同樣可要可不要,畫滑鼠*/
while(c==0) /*直到按鍵後才返回,不按鍵一直循環*/
{
getmouse(a,b,c); /*a,為橫坐標,b,為列坐標,c為按鍵狀態*/
if(a0) a=0; /*保證滑鼠左邊不出界*/
if(b0) b=0; /*保證上面不出界*/
if(agetmaxx()-R) a=getmaxx()-R; /*保證右邊不出界*/
if(bgetmaxy()-R) b=getmaxy()-R; /*保證下邊不出界*/
if(a!=a_old || b!=b_old) /*當滑鼠移動時*/
{
putimage(a_old,b_old,ball,0); /*在a_old,b_old輸出圖形,用來擦掉原來的滑鼠*/
getimage(a,b,a+R,b+R,ball); /*這條語句是將目前滑鼠所在位置的圖形存貯到ball裡面試著看著有無這條語句的區別*/
/*不需要在獲取了*/
setcolor(GREEN);
setlinestyle(0,0,1);
line(a,b,a+R,b+R/2);
line(a,b,a+R/2,b+R);
line(a+R,b+R/2,a+R/2,b+R);
line(a+R*3/4,b+R*3/4,a+R,b+R); /*畫滑鼠*/
}
a_old=a;b_old=b;
} /*while()結束*/
*x=a;*y=b;*z=c; /*返回按鍵後滑鼠的位置*/
putimage(a,b,ball,0); /*將滑鼠擦掉,因為存在ball裡面的是一個背景為預設狀態下的一個空矩形*/
free(ball);
}
/*主要思想是通過getimage,putimage,imagesize圖形的存貯一個當前的圖形來擦拭掉以前的滑鼠圖形,也可以用清屏部分屏幕來實現*/
void main()
{
int x,y,z;
initgr();
visbilemouse();
do
{
setcolor(WHITE);
rectangle(175,8,220,25);
outtextxy(180,10,”exit”);
mouse(x,y,z);
if(z==1)
{
setlinestyle(0,0,1);
setcolor(12);
circle(x,y,1);
}
if(z==2)
{setfillstyle(1,BLACK);
bar(0,0,getmaxx(),getmaxy());
}
}while(x175 || x220 || y8 || y25);
closegraph();
}
C語言中怎樣做滑鼠編程?
dos模式下需要先載入滑鼠驅動程序,然後用調用int33H中斷(好像是的,希望我沒記錯)。很複雜的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291837.html