VC API常用函式簡單例子大全一

2021-05-25 03:01:40 字數 3628 閱讀 1227

第乙個:findwindow

根據視窗類名或視窗標題名來獲得視窗的控制代碼,該函式返回視窗的控制代碼,

這個函式的定義是這樣的hwnd winapi findwindow(lpcstr lpclassname ,lpcstr lpwindowname);第乙個引數填視窗的類名,第二個填視窗的標題名,其實是不需要同時填兩個引數的,也就是說,你只要知道視窗的類名或視窗的標題就可以了,沒有的那個就用null代替。比如現在有乙個視窗名為"無標題.txt - 記事本"的記事本程式。那麼我就可以用上面的函式獲得這個視窗的控制代碼,那獲得了這個視窗的控制代碼我可以幹什麼呢?作用可大了,因為很多操作視窗的函式,都需要視窗控制代碼作引數,如移動、改變視窗大小的movewindow函式,在這裡舉個例子,大家就更能體會到這個findwindow的用法、用處。

findwindow

例子:已知乙個視窗名稱,寫乙個程式關閉該視窗,假設當前電腦正有乙個視窗名為"無標題.txt - 記事本"的記事本程式執行

#include//apii

函式的標頭檔案

int main()

如果要根據視窗類名來獲得視窗控制代碼話,只要給函式的第乙個引數填類名,第二個引數視窗名填null,即可,用spy++可檢視視窗類名。

第二個:sendmessage

根據視窗控制代碼傳送乙個訊息給視窗

函式定義:lresult sendmessage(hwnd hwnd,uint msg,wparam wparam,lparam iparam);

第乙個引數是視窗控制代碼,第二引數個是訊息型別,下面的訊息表列舉了所有訊息,第三,四個引數是訊息附帶資訊,解釋依賴於訊息型別,比如乙個字元訊息(wm_char),那麼第三個引數就儲存有乙個字元的ascii碼。

訊息機制大家都應該知道吧,windows是基於訊息的系統,滑鼠移動鍵盤按鍵都會產生訊息。

接下來舉乙個例子,傳送乙個wm_char訊息給視窗,也就是模仿鍵盤按鍵,接收訊息的視窗依舊以"無標題.txt - 記事本"為例:

sendmessage

例子:模仿鍵盤按鍵

#include

int main()

return 0;

}呵呵上面的例子是不是沒用,這是為什麼呢,**出錯了嗎?錯倒是沒有錯,只是視窗控制代碼有問題,訊息傳送給了主視窗。接收訊息的視窗不對。記事本視窗介面有些有什麼東西呢?選單,編輯框,狀態列等控制項,控制項也是視窗,既然是視窗,那當然它們也有視窗控制代碼,而在記事本裡是在**打字的?編輯框控制項裡打字的嘛!所以訊息應該傳送編輯框控制項,那如何獲得記事本裡編輯框控制項的視窗控制代碼呢?用findwindow嗎?不知道編輯框視窗標題名,類名也不知道,當然也有其它方法獲取編輯框視窗標題名和視窗類名,如spy++。關於如何獲得編輯框控制代碼,將在以後的函式中會有介紹,這裡我們就用windowfrompoint這個函式來獲取,這個函式獲取視窗控制代碼的方法比較笨,(相對於我這個例子來說),這個函式是根據什麼來獲取視窗控制代碼的呢?根據螢幕座標點,如螢幕座標點20,20,當前是哪個視窗占有,就返回哪個視窗的控制代碼。有了這個函式,我們還需要乙個函式getcursorpos獲取滑鼠當前位置(針對於螢幕);

可行的例子:模仿鍵盤按鍵:

#include

int main()

}這個程式一執行後,只要把滑鼠指向要輸入字元的視窗控制代碼,那麼就相當於鍵盤每三分之一秒按了乙個g鍵,試試吧!

sendmessage(wnd,wm_rbuttondown,0,0);//

滑鼠右鍵按下,第三,四個引數說明了滑鼠按下時的位置

sleep(100);//

間隔100毫秒

sendmessage(wnd,wm_rbuttonup,0,0);//

滑鼠右鍵鬆開

同樣,也有乙個專門模仿滑鼠動作的函式,mouse_event這個函式,可以模仿滑鼠的移動,單擊,雙擊等。以後會有專門介紹。

第三個:getcursorpos

獲取滑鼠當前位置(螢幕)

這個函式在sendmessage函式有介紹,這裡僅舉乙個例子,在介面裡不停的輸出滑鼠當前位置。

#include

#include

int main()

}第四個:windowfrompoint

根據座標點獲得對應的視窗控制代碼

在sendmessage有解釋,這裡僅舉乙個例子,滑鼠指向哪個視窗,就關閉哪個視窗。

#include

int main()

}第五個movewindow

根據視窗控制代碼移動視窗,改變視窗大小

函式定義:bool movewindow( hwnd hwnd, int x, int y, int nwidth, int nheight, bool brepaint );

hwnd

是要改變大小的視窗的控制代碼,x,y相對於螢幕的座標,視窗左上角的位置與之相對應,nwidth和nheight是視窗新的寬高,brepaint指定視窗是否重畫。

這裡依舊以"無標題.txt - 記事本"為例子,改變這個視窗大小,並把視窗移到左上角去。

#include

int main()

第六個showwindow

設定視窗顯示狀態,如隱藏,最大化,最小化

函式定義bool showwinow(hwnd hwnd,int ncmdshow);

sw_hide

:隱藏視窗並啟用其他視窗。第乙個引數hwnd指明了視窗控制代碼,第二個引數指明了視窗的狀態,現在給出第二個引數常用取值範圍:

sw_maximize:最大化指定的視窗。

sw_minimize:最小化指定的視窗並且啟用在z序中的下乙個頂層視窗。

sw_restore:啟用並顯示視窗。如果視窗最小化或最大化,則系統將視窗恢復到原來的尺寸和位置。在恢復最小化視窗時,應用程式應該指定這個標誌。

sw_show

:在視窗原來的位置以原來的尺寸啟用和顯示視窗。

showwindow

例子:程式執行後,在桌面上隱藏乙個指定的視窗,並在4秒後再將其顯示

#include

int main()

第七個setcursorpos

設定滑鼠的位置、把滑鼠移動到指定的位置

函式定義:bool setcursorpos(int x,int y);

這個函式的兩個引數我想大家應該知道是什麼意思吧,螢幕的座標點。

直接看例子:

#include

int main()

return 0;

}第八個copyfile

複製乙個檔案

如何複製乙個檔案,比如,我要把e盤的abb.txt的文字檔案複製到d盤的zhengyong.txt,則呼叫語句

copyfile("e:","d:",false);

即可。第三個引數有以下說明:

如果設為true(非零),那麼一旦目標檔案已經存在,則函式呼叫會失敗。否則目標檔案會被覆蓋掉。

第九個deletefile

刪除乙個檔案

如何刪除乙個檔案,語句:deletefile("e");既是刪除

如果目標為隱藏或唯讀,則無用。

第十個createdirectory

建立乙個資料夾(目錄)

假如e盤下什麼檔案也沒有

createdirectory("e://aaa//bbb",null);

這樣是錯的,不能同時建兩個檔案,除非e盤下已經有了個aaa資料夾了。

這樣是對的createdirectory("e://aaa",null);

VC API常用函式簡單例子大全二

第十乙個 getclientrect獲得視窗大小 客戶區 看例子 include include int main int argc,char argv 第十二個 getwindowrect獲得視窗大小 相對螢幕 例子 include include int main int argc,char a...

VC API常用函式簡單例子大全九

第八十乙個writefile根據檔案控制代碼,寫入一段資料到檔案中 include include int main 第八十二個setfilepointer移動乙個檔案指標的位置 移動乙個檔案指標的位置有什麼用呢,作用是讀取乙個檔案裡指定位置的資料,比如我只要讀取檔案中第四個位元組到第七個位元組這一...

C API常用函式簡單例子大全四

第三十個 createtoolhelp32snapshot 給當前程序拍乙個照 記住這種格式就行了,返回的控制代碼,儲存有程序資訊,可以用 process32firs 函式找出來。第三十乙個process32first 根據createtoolhelp32snapshot函式返回的控制代碼獲取程序資...