當前位置:首頁 » 編程語言 » c語言滑鼠無效
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言滑鼠無效

發布時間: 2023-04-04 05:47:19

① 用VC6.0編寫c語言程序的時候,滑鼠游標會消失,怎麼回事

呃,兄弟,真心鄙視你還在用VC6.0。
好吧,若干年之前,記得從來沒出現過你說的那種情況。
建議你檢查一下系統的配置是不是有問題。
沒道理只是寫C的時候滑鼠唯鏈消失吧,到底是消失還是隱藏滑鼠,還有的就是,是寫敬拆代碼的時候滑鼠會消失還是一直都沒有指稿孫滑鼠指針,你說清楚點啊。

② 求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語言在控制台清屏之後滑鼠定位就不行了怎麼辦

樓主你好。
是因為程序卡在這里了:
Y=(int)pos.Y;
if
(inRec.EventType
==
MOUSE_EVENT
&&
inRec.Event.MouseEvent.dwButtonState
==
FROM_LEFT_1ST_BUTTON_PRESSED&&Y<=3&&Y>=1)
//滑鼠左鍵
break;
這里無法break出來。原因是Y<=3&&Y>=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語言滑鼠操作

我之前給別人寫過一個打地鼠的小游戲,就是用滑鼠操作的。發給你參考下。代碼很簡單。

主要函數我在下方說明了,但更多信息你必須自己網路看,一言兩語說不完。

SetConsoleCursorPosition函數可以定位游標位置,也就是文字內容顯示的起點。

ReadConsoleInput(HANDLE hConsoleInput,*INPUT_RECORD lpBuffer,DWORD nLength,
DWORD lpNumberOfEventsRead)函數可以獲取滑鼠的操作信息。

調用過上面函數後,lpBuffer由於是傳址,所以其地址里的值就包含了滑鼠信息。

lpBuffer.EventType == MOUSE_EVENT //判斷是滑鼠事件

lpBuffer.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED//判斷是滑鼠左鍵點擊

兩個判斷一起就是滑鼠左鍵點擊的判斷,其他事件參數你可以自己網上找。

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#include<malloc.h>
#definegSizek30//區域大小寬度
#definegSizeg20//區域大小高度
#definegBegin3//活動區域起始行
intmain()
{
intt=0,s0,s1,i,j,count=0,fen=0,row=0,clo=0;
chargameA[gSizeg][gSizek+1],fSave[10]={0};
SetConsoleTitle("打地鼠");
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//獲取標准輸入設備句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
p0.X=0;
p0.Y=0;

srand(time(0));
s0=time(NULL);
strcpy(gameA[0],"GAME");
strcpy(gameA[1],"未命中次數:0,計分:000000");
for(i=gBegin-1;i<gSizeg;i++)
{
for(j=0;j<gSizek+1;j++)
{
if(i>gBegin-1&&i<gSizeg-1&&j>0&&j<gSizek-1)
gameA[i][j]='';
else
gameA[i][j]=4;
if(j==gSizek)
gameA[i][j]=0;
}
}
for(i=0;i<gSizeg;i++)
printf("%s ",gameA[i]);

while(1)
{

if(t>=3)
{
if(row>0&&clo>0)
gameA[row][clo]='';
row=rand()%(gSizeg-1);
clo=rand()%(gSizek-1);
s0=time(NULL);
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);

if(row<3)
row=4;
if(clo<1)
clo=1;
gameA[row][clo]=2;
for(i=0;i<gSizeg;i++)
{
//gameA[i][gSizeg+1]=0;
printf("%s ",gameA[i]);
}

}
if(count==3)
{
p0.X=10;
p0.Y=8;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),p0);
printf("GAMEOVER!");
break;
}
s1=time(NULL);
t=s1-s0;
ReadConsoleInput(hInput,&inRec,1,&res);
if(inRec.EventType==MOUSE_EVENT&&inRec.Event.MouseEvent.dwButtonState==FROM_LEFT_1ST_BUTTON_PRESSED)//滑鼠左鍵
{
if(inRec.Event.MouseEvent.dwMousePosition.X==clo&&inRec.Event.MouseEvent.dwMousePosition.Y==row)
{

if(fen==0)
fen=1;
if(fen>999999)
fen=999999;
else
fen=fen*2;

sprintf(fSave,"%06d",fen);
gameA[1][18]=0;
strcat(gameA[1],fSave);
}
else
{
count++;
fen=0;
gameA[1][11]=count+'0';
}
t=4;
}
}
while(1);
return0;
}

⑤ C語言運行後,想要在新出來的dos窗口中復制word文檔的數據,該如何做 滑鼠右擊無效,ctrl+v無效,拜託了

滑鼠右鍵點窗口 出來菜單 點粘貼

或者滑鼠左鍵點窗口左鉛搏上角槐迅祥的圖標 然後相應選昌謹擇 編輯...粘貼

⑥ 二級c語言安裝完打不開 滑鼠轉圈圈 然後沒反應

右擊其快捷方式,點擊「屬性 - 兼容性」,設置Windows XP兼容,確定。再次打開

⑦ win10中c語言無法響應滑鼠函數

在控制台窗口,點擊滑鼠右鍵,選擇屬性,將瞎畢簡選項中的「快速編輯模式(Q)磨褲」關掉,
並選擇舊版數仿控制台,重新啟動即可。

⑧ c語言如何實現控制滑鼠

可以,需要調用windowsAPI函數。
頭文件windows.h。
簡單思路:
通過GetStdHandle獲取標准輸入句柄。
再通過ReadConsokeInput將輸入信息存儲到結構體類型INPUT_RECODE變數中。
再通過判斷,截取到滑鼠電擊的事件。
具體API函數、參數、功能還有很多。需要網上找資料可以學。
我這里就簡單寫一個,滑鼠點擊控制台任意位置,並在該位置列印字元串。

#include<stdio.h>
#include<windows.h>
intmain()
{
HANDLEhInput=GetStdHandle(STD_INPUT_HANDLE);//獲取標准輸入設備句柄
INPUT_RECORDinRec;
DWORDres;
COORDp0;
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("你在這里點擊的左鍵 ");
}
}

return0;
}

⑨ C語言 滑鼠問題

你哪裡不明白

⑩ c語言滑鼠中斷程序

沒有show函數吧