c#中匯入win32 api的方法:
1、引用命名空間
using system.net.security;
using system.runtime.interopservices;
2、
[dllimport("wininet.dll", charset = charset.auto, setlasterror =true]static extern boolean internetgetcookieex(string pchurl, string pchcookiename, stringbuilder pchcookiedata, ref system.uint32 pcchcookiedata, int dwflags, intptr lpreserved);
把一些引數型別做相應的轉化。
關於匯入時引數的說明:
charset:
列舉型別,
ansi : 以多位元組字串的形式封送字串。
unicode : 以 unicode 2 位元組字元形式封送字串。
auto : 針對目標作業系統適當地自動封送字串。 在 windows nt、windows 2000、windows xp 和 windows server 2003 系列上,預設值為 unicode;在 windows 98 和 windows me 上,預設值為 ansi。 儘管公共語言執行時預設值為 auto,但使用語言可重寫此預設值。 例如,預設情況下,c# 將所有方法和型別都標記為 ansi。
[dllimport("user32.dll",charset="charset.auto",entrypoint="messagebox")]setlasterror:public static extern int msgbox(intptr hwnd,string txt,string caption, int type);//名字不同了
true
指示被呼叫方將呼叫 setlasterror
;否則為
false
。預設值為 false
。執行時管理器將呼叫 getlasterror
並快取返回的值,以防其被其他 api 呼叫覆蓋
3、匯入函式使用的**位置:在類的內部。不是在命名空間內。
4、引數型別在vc和vc#中的對應關係,從網上找到:
bool=system.int32boolean=system.int32
byte=system.uint16
char=system.int16
colorref=system.uint32
dword=system.uint32
dword32=system.uint32
dword64=system.uint64
float=system.float
haccel=system.intptr
handle=system.intptr
hbitmap=system.intptr
hbrush=system.intptr
hconv=system.intptr
hconvlist=system.intptr
hcursor=system.intptr
hdc=system.intptr
hddedata=system.intptr
hdesk=system.intptr
hdrop=system.intptr
hdwp=system.intptr
henhmetafile=system.intptr
hfile=system.intptr
hfont=system.intptr
hgdiobj=system.intptr
hglobal=system.intptr
hhook=system.intptr
hicon=system.intptr
himagelist=system.intptr
himc=system.intptr
hinstance=system.intptr
hkey=system.intptr
hlocal=system.intptr
hmenu=system.intptr
hmetafile=system.intptr
hmodule=system.intptr
hmonitor=system.intptr
hpalette=system.intptr
hpen=system.intptr
hrgn=system.intptr
hrsrc=system.intptr
hsz=system.intptr
hwinsta=system.intptr
hwnd=system.intptr
int=system.int32
int32=system.int32
int64=system.int64
long=system.int32
long32=system.int32
long64=system.int64
longlong=system.int64
lparam=system.intptr
lpbool=system.int16
lpbyte=system.uint16
lpcolorref=system.uint32
lpcstr=system.string
lpctstr=system.string
lpcvoid=system.uint32
lpcwstr=system.string
lpdword=system.uint32
lphandle=system.uint32
lpint=system.int32
lplong=system.int32
lpstr=system.string
lptstr=system.string
lpvoid=system.uint32
lpword=system.int32
lpwstr=system.string
lresult=system.intptr
pbool=system.int16
pboolean=system.int16
pbyte=system.uint16
pchar=system.char
pcstr=system.string
pctstr=system.string
pcwch=system.uint32
pcwstr=system.uint32
pdword=system.int32
pfloat=system.float
phandle=system.uint32
phkey=system.uint32
pint=system.int32
plcid=system.uint32
plong=system.int32
pluid=system.uint32
pshort=system.int16
pstr=system.string
ptbyte=system.char
ptchar=system.char
ptstr=system.string
puchar=system.char
puint=system.uint32
pulong=system.uint32
pushort=system.uint16
pvoid=system.uint32
pwchar=system.char
pword=system.int16
pwstr=system.string
regsam=system.uint32
sc_handle=system.intptr
sc_lock=system.intptr
short=system.int16
size_t=system.uint32
ssize_=system.uint32
tbyte=system.char
tchar=system.char
uchar=system.byte
uint=system.uint32
uint32=system.uint32
uint64=system.uint64
ulong=system.uint32
ulong32=system.uint32
ulong64=system.uint64
ulonglong=system.uint64
ushort=system.uint16
word=system.uint16
wparam=system.intptr
Win32 API講座 視窗函式
位。windows是用乙個長整形的資料的位設定方式來記錄類和視窗的樣式的。其中,視窗樣式由乙個32位樣式以及另乙個32 位擴充套件樣式來構成。類樣式操作由上述列表中的getclasslong以及getclasslong來進行,視窗樣式操作由getwindowlong 以及setwindowlong來...
Win32 API訊息函式 GetMessage
函式功能 該函式從呼叫執行緒的訊息佇列裡取得乙個訊息並將其放於指定的結構。此函式可取得與指定視窗聯絡的訊息和由postthreadmesssge寄送的執行緒訊息。此函式接收一定範圍的訊息值。getmessage不接收屬於其他執行緒或應用程式的訊息。函式原型 bool getmessage lpmsg...
訊號量 win32 API函式
一 關於訊號量 1 在訊號量中有乙個內建的計數值,用於對資源進行計數 同時它通過內建的互斥機制保證在有多個執行緒試圖對計數值進行修改時,在任一時刻只有乙個執行緒對計數值進行修改。2 訊號量的兩個核心操作是up操作 提高計數值 和down操作 降低計數值 1 down操作 檢查訊號量的計數值是否大於零...