windows api是對windows作業系統的api函式,在c#中呼叫windows api的實質是託管**對非託管**的呼叫。
主要使用的格式就是:
usingsystem.runtime.interopservices;
namespace
testwinapi1
[dllimport(
"kernel32
", charset
=charset.ansi)]
public
static
extern
bool
beep(
intfrequery,
intduration);}}
其中的beep就是win api的呼叫,使用[dllimport("kernel32")]屬性進行呼叫。
這個函式在msdn中的原本定義是:
c++bool winapi beep(
__in dword dwfreq,
__in dword dwduration);
我們想要呼叫beepapi,就必須:
1.將dword對應為c#中的int,相應的引數個數和位置設定正確
2.呼叫的函式名和winapi中的函式名一致
這樣,我們在c#中就可以使用win api對windows進行操作。
這裡幾個資源是使用windowsapi不可或缺的:
msdn:
推薦的入門教程:
使用winapi的難點:
1.c++中的各個資料型別如何對應到c#中?
使用c#中的那個資料型別對應那個c++的資料型別沒有唯一的規定,但是應該站在記憶體使用的角度,選擇記憶體占用大小一致。
當c++中存在指標的時候,我們可以使用ref來傳遞指標
2.如果c++中定義了資料結構如何操作?
我們也應該在c#中定義與之儲存結構一致的資料結構
以下是用winapi 模擬滑鼠定位和單機左鍵的操作:
namespacetestwinapi1
class
program
[dllimport(
"user32.dll
", charset
=charset.auto)]
public
static
extern
bool
getcursorpos(
refpoint point);
[dllimport(
"user32.dll
", charset
=charset.auto, exactspelling
=true
)]public
static
extern
intptr getcursor();
[dllimport(
"user32")]
public
static
extern
intsetcursorpos(
intx,
inty);
[dllimport(
"user32.dll")]
static
extern
void
mouse_event(
uint
dwflags,
uint
dx,
uint
dy,
uint
dwdata,
intdwextrainfo);
[flags]
public
enum
mouseeventflags:
uint
//////
checks for the currently active window then simulates a mouseclick
///
///which button to press (left middle up)
///the window to send to
public
static
void
mouseclick(
string
button,
string
windowname)
//////
simulates a mouse click see
///
///which button to press (left middle up)
public
static
void
mouseclick(
string
button)}}
} 簡要描述:
使用了mouse_event,getcursorpos,setcursorpos三個api
mouse_event((uint)mouseeventflags.leftdown|(uint)mouseeventflags.leftup, 0, 0, 0, 0);
代表了單擊左鍵的動作
int setright = setcursorpos(27, 881); 中的27,881是螢幕上的絕對位置
ps:使用api可以做一些遊戲的小外掛程式,比如模擬滑鼠,鍵盤的操作...嘿嘿
如何使用C 操作WinAPI
windows api是對windows作業系統的api函式,在c 中呼叫windows api的實質是託管 對非託管 的呼叫。主要使用的格式就是 using system.runtime.interopservices namespace testwinapi1 dllimport kernel3...
WinAPI程式如何使用CString
cstring 是乙個很強大的類,功能強大,可以節省很多 可是cstring好像在mfc或atl中才可以使用,winapi程式可以使用這個類嗎?其實也是可以的。只需要引入 atlstr.h 標頭檔案即可。include測試 環境 vs2010 c win32 api程式 include includ...
win API 操作 ini 檔案
1.getprivateprofileint 從私有初始化檔案獲取整型數值 2.getprivateprofilestring 從私有初始化檔案獲取字串型值 3.writeprivateprofilestring寫字串到私有初始化檔案 4.getprofileint從win.ini 獲取整數值 5....