C 中匯入Win32 API函式

2022-01-15 03:46:09 字數 4415 閱讀 6282

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")]

public static extern int msgbox(intptr hwnd,string txt,string caption, int type);//名字不同了

setlasterror:

true

指示被呼叫方將呼叫 setlasterror

;否則為

false

。預設值為 false

。執行時管理器將呼叫 getlasterror

並快取返回的值,以防其被其他 api 呼叫覆蓋

3、匯入函式使用的**位置:在類的內部。不是在命名空間內。

4、引數型別在vc和vc#中的對應關係,從網上找到:

bool=system.int32

boolean=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操作 檢查訊號量的計數值是否大於零...