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

2021-05-25 05:39:10 字數 3772 閱讀 6404

第三十個

createtoolhelp32snapshot

給當前程序拍乙個照

//記住這種格式就行了,返回的控制代碼,儲存有程序資訊,可以用

process32firs

函式找出來。

第三十乙個process32first

根據createtoolhelp32snapshot函式返回的控制代碼獲取程序資訊

結合process32next函式使用,有點像檔案尋找函式。

看完整例子:顯示系統程序名,以及程序id號

#include

#include//宣告快照函式的標頭檔案

#include

int main()

return 0;}

第三十二個

openprocess

根據程序id號獲得程序控制代碼,控制代碼通過函式返回

函式定義:handleopenprocess( dworddwdesiredaccess, boolbinherithandle, dworddwprocessid);

第乙個引數不要管它,填process_all_access,第二個引數也一樣,填false,那最後乙個引數就是程序id號。

第三十三個

terminateprocess

結束乙個程序(需程序控制代碼做引數)

該函式只有兩個引數,第乙個是程序控制代碼,第二個填0就行了。

現在給個例子:假設當前有乙個程序名為abc.exe的程序正在執行,編乙個程式結束它。

#include

#include//宣告快照函式的標頭檔案

int main(int argc,char *argv)

bmore=::process32next(hprocesssnap,&pe32);//尋找下乙個

}return 0;}

上面的這個例子,只能結束普通許可權程序,如果為系統程序的話,則沒有用,結束不了。在後面的提公升許可權函式,會有例子說明如何結束系統程序。

第三十四個createpen建立乙個畫筆(返回畫筆控制代碼)

函式定義:bool createpen(int npenstyle, int nwidth, colorref crcolor);

第乙個引數,表示是什麼型別的線,取值有以下:

如建立乙個畫筆:hpen pen=createpen(ps_solid,3,rgb(255,78,99));

ps_solid  畫筆畫出的是實線   ps_dash 畫筆畫出的是虛線(nwidth必須是1) ps_dot 畫筆畫出的是點線(nwidth必須是1)

ps_dashdot 畫筆畫出的是點劃線(nwidth必須是1) ps_dashdotdot 畫筆畫出的是點-點-劃線(nwidth必須是1)

第二個引數是畫筆的寬度,第三個引數是畫筆的顏色,colorref型別可以rgb來獲得如rgb(233,128,88);分別是紅綠藍。

第三十五個

createsolidbrush

建立乙個畫刷

只有乙個colorref型別的引數

hbrush brush=createsolidbrush(rgb(22,182,111));

第三十六

個selectobject

把gdi物件選入相應的dc中

像畫筆(控制代碼hpen),畫刷(hbursh),位圖(hbitmap)等都是gid物件。因為畫圖函式,如畫圓,畫矩形,畫直線,它們所畫出圖形,預設屬性都是不變的,如線的寬度。那麼想要改變畫出來時線的寬度,比如我想畫出來的圖形它的線條寬度為5(畫素),那麼就要建立乙個寬度為5的畫筆,然後再通過selectobject函式,給這個畫筆選入,就可以了.

接下舉個例子:selectobject應用

#include "stdafx.h"

#include

lresult callback winsunproc(hwnd hwnd,uint umsg,wparam wparam,lparam lparam)

else if(umsg==wm_close)//使用者關閉了視窗

destroywindow(hwnd);//銷毀視窗,並傳送wm_destroy訊息

else if(umsg==wm_destroy)//如果視窗被銷毀

postquitmessage(0);//讓程序退出

return defwindowproc(hwnd,umsg,wparam,lparam); //未處理的訊息通過defwindowproc函式交給系統處理

}int apientry winmain(hinstance hinstance,

hinstance hprevinstance,

lpstr     lpcmdline,

int       ncmdshow)

return 0;

}必須先讓這個程式執行,然後根據輸出的位址值,才能在下面的程式填入位址值。

讀取的程式**如下:

#include

#include

#include

int main()

return 0;

}寫入的**如下:

return 0;

}第三十九個

createthread建立乙個執行緒(多執行緒)

執行緒是什麼意思呢,**是由執行緒來執行的,乙個程式預設只有乙個執行緒(主線程),打個比方,執行緒就好比乙個人,而不同功能的**或函式就好是一件件不同的事情,如洗碗,洗衣服,擦地。乙個人要把這幾種事情做完,可以有好幾種方案,第一種就是,洗完碗,就去洗衣服,衣服洗完了,再去擦地。第二種就是:洗一分鐘碗,再去洗一分鐘衣服,再去擦一分鐘,然後又去洗一分鐘衣服.......直到做完。好了,現在你可以再創造乙個人幫你做事,創造這個人後,你就叫他洗衣服,而你就洗碗,這樣兩件事就可以同時被做了。而這裡的創造乙個人指的就是createthread函式。

函式定義:handle createthread(lpsecurity_attributes lpthreadattributes,dword dwstacksize,lpthread_start_routine lpstartaddress,lpvoid lpparameter,dword dwcreationflags,lpdword lpthreadid);

該函式有六個引數,第乙個引數不用管它,填null,第二個引數dwstacksize用於新執行緒的初始堆疊大小,預設為0,第三個lpstartaddress填函式名(指標),但這個函式必須是這種固定格式的dword _stdcall threadproc(lpvoid lpparameter),新的執行緒將會執行這個函式裡面的**,直到函式結束,執行緒死亡。第四個lpparameter是一自定義引數,使用者可以通過這個引數,傳遞需要的型別,這個引數與執行緒函式的引數相對應。第五個dwcreationflags填0表示立即執行,如果是create_suspended表示掛起,直到用resumethread函式喚醒。第六個lpthreadid填null就行了。

現舉個例子,兩個執行緒同時每隔一秒輸出乙個數字,也就是一秒會有兩數字輸出。

#include

#include

dword _stdcall threadproc(lpvoid lpparameter)//執行緒執行函式

return 0;

}int main()

return 0;

}第四十個getcurrentprocessid獲得當前程序id

dword currentpid;

currentpid=::getcurrentprocessid();//返回程序id號

cout<

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

第乙個 findwindow 根據視窗類名或視窗標題名來獲得視窗的控制代碼,該函式返回視窗的控制代碼,這個函式的定義是這樣的hwnd winapi findwindow lpcstr lpclassname lpcstr lpwindowname 第乙個引數填視窗的類名,第二個填視窗的標題名,其實是...

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移動乙個檔案指標的位置 移動乙個檔案指標的位置有什麼用呢,作用是讀取乙個檔案裡指定位置的資料,比如我只要讀取檔案中第四個位元組到第七個位元組這一...