#includewindows.h
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、遂川ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的遂川網(wǎng)站制作公司
voidhidecursor()
{
console_cursor_infocursor_info={1,0};
setconsolecursorinfo(getstdhandle(std_output_handle),cursor_info);
}
函數(shù)和結(jié)構(gòu)體都在windows.h中定義,函數(shù)用法簡單就不說了。
console_cursor_info結(jié)構(gòu)體定義如下:
typedefstruct
{dworddwsize;
boolbvisible;//為0時光標(biāo)不可見
}console_cursor_info,*pconsole_cursor_info;
vc,mingw中均沒問題。
不明白直接hi。
C語言里面有g(shù)otoxy(x,y)函數(shù)來定位光標(biāo)位置;
但在VC下面沒有conio.h,也就沒有g(shù)otoxy(),只在tc,bc中才有
下面是別人構(gòu)造的一個:
includewindows.h
#includeiostream
using namespace std;
void gotoxy(int x, int y) {
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
int main()
{
gotoxy(20,12);
std::cout"Hello world!"endl;
return 0;
}
其中的COORD和SetConsoleCursorPosition定義在wincon.h中~
SetConsoleCursorPosition用于在相應(yīng)的設(shè)備設(shè)置光標(biāo)的位置,兩個參數(shù)分別是設(shè)備句柄和光標(biāo)位置結(jié)構(gòu)。GetStdHandle定義在winbase.h上用于獲得標(biāo)準(zhǔn)輸入、輸出、錯誤輸出句柄
當(dāng)參數(shù)標(biāo)識為STD_OUTPUT_HANDLE時獲得標(biāo)準(zhǔn)輸出句柄
善于使用搜索引擎,搜到的
首先最簡單的但可以后臺處理的有SendMessage()PostMessage()
發(fā)送鼠標(biāo),
鍵盤消息,
這個百度一搜n多了
然后中等級的模擬就是keyboard_eventmouse_event了這個比較用的比較多,
給個例子你
模擬鍵盤點(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
的時候一定要用MapVirtualKey
網(wǎng)上大部分的代碼都是沒用的,
這個函數(shù)時獲取
硬件掃描碼
的先說下keybd_event();函數(shù)的參數(shù)keybd_event(要模擬按下的虛擬按鍵碼,
虛擬按鍵碼對應(yīng)的硬件掃描碼,0,0);網(wǎng)上的代碼大部分都有
虛擬按鍵碼,
當(dāng)然你運(yùn)行大部分都是沒問題的,
因?yàn)閷τ谝话愕某绦蚨允菦]問題的但有的程序?yàn)榱朔乐?/p>
外掛
或者
防止其他程序惡意修改什么的,會對
鼠標(biāo)鍵盤
消息進(jìn)行檢測,
如果檢測到?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ù)視窗位置,送給目標(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');
不過還是有很多游戲,它是用
DirectX
技術(shù)去做的,這些大部分對他們沒用所以還有最最最高級的模擬,
就是
對硬件驅(qū)動程序的模擬這個有個外國人寫的
winio.h
的頭文件,
有興趣可以去學(xué),
一般用不到的,
函數(shù)名:gotoxy
原型:extern void gotoxy(int x, int y);
用法:#include system.h
功能:將光標(biāo)移動來到指定自位置
說明:gotoxy(x,y)將光標(biāo)移動到指定行y和列x。設(shè)置光標(biāo)到文本屏幕的指定位置,其知中參數(shù)x,y為文本屏幕的坐標(biāo),gotoxy(0,0)將光標(biāo)移動到屏幕左上角。
擴(kuò)展資料:
用法舉例
#include conio.h
int main(void)
{ /*gotoxy()的用法*/
//clrscr(); //清除文本模式的窗口
gotoxy(2,1);//在文本窗口中設(shè)置光標(biāo)用(列,行)
cprintf("Hello world");//送格式化輸出至屏幕
getch();
return 0;
}
參考資料來源:百度百科-gotoxy
我估計(jì)你分?jǐn)?shù)給的在高也沒人回答。來個這樣的代碼太麻煩了。而且百度金幣用處也不大。
不過,我可以寫幾個鼠標(biāo)函數(shù)給你參考一下。
首先了解一下鼠標(biāo)的中斷。
_ax=0x01
表示顯示光標(biāo)
_ax=0x02
停止顯示光標(biāo)
_ax=0x03
讀取光標(biāo)位置與案件
_ax=0x04
設(shè)置光標(biāo)位置
所以啊。根據(jù)這四個中斷,有以下幾個函數(shù)
----------------------------------------------------
void
mouseon(void)//鼠標(biāo)光標(biāo)顯示
{
_ax
=
0x01;
geninterrupt(0x33);
}
----------------------------------------------------
void
mouseoff(void)//鼠標(biāo)光標(biāo)隱藏
{
_ax
=
0x02;
geninterrupt(0x33);
}
---------------------------------------------------
void
mousesetxy(int
x,int
y)//設(shè)置當(dāng)前位置
{
_cx
=
x,
_cd
=
y;
_ax
=
0x04;
geninterrupt(0x33);
}
---------------------------------------------------
int
leftpress(void)//鼠標(biāo)左鍵按下
{
_ax
=
0x33;
geninterrupt(0x33);
return(_bx1);
}
-----------------------------------------------------
鼠標(biāo)右鍵的應(yīng)該也會了吧。不過要return(_bx2);
-----------------------------------------------------
void
mousegetxy(void)//得到當(dāng)前位置
{
_ax
=
0x33;
geninterrupt(0x33);
mousex
=
_cx;
mousey
=
_dx;
}
---------------------------------------------------------------
最好要復(fù)制粘貼,打字打得手疼。