1. 程式人生 > >Windows API 呼叫示例

Windows API 呼叫示例

Ø  簡介

本文主要記錄 Windows API 的呼叫示例,因為這項技術並不常用,屬於 C# 中比較孤僻或接觸底層的技術,並不常用。但是有時候也可以藉助他完成一些 C# 本身不能完成的功能,例如:通過控制代碼獲取其他程式資料,或者向作業系統發出指定的訊息等等。

提示:關於 Windows API 的函式有很多,不需要將所有的函式都非常瞭解,筆者也只是將用到過的函式記錄下來,方便以後需要時可以快速編寫。

 

1.   滑鼠事件 API

1)   函式原型:void mouse_event(

long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo)

2)   函式說明:該函式合成滑鼠的移動和點選事件,並將其插入到事件佇列中。

3)   引數:

cButtons, 正數表示向上滾動,負數表示向下滾動。

其他:參考Windows API 函式參考手冊】

4)   典型示例:

1.   模擬滑鼠(滾輪)滾動事件(C# Code)

1)   函式宣告

[DllImport("user32.dll")]

private static extern int mouse_event(int dwFlags, int dx, int dy,

int cButtons, int dwExtraInfo);

2)   呼叫程式碼

const int MOUSEEVENTF_WHEEL = 0x0800;

var timer = new System.Threading.Timer(new TimerCallback(o =>

{

    mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 500, 0);

    WriteLine(string.Format("滑鼠已滾動,執行緒:{0}", GetThreadId()));

}),

null, 0, 50);

3)   執行結果

clip_image001[4]

 

2.   鉤子(Hook) API

1)   什麼是鉤子:鉤子實際是一個處理訊息的程式段,通過系統呼叫,把它掛入系統。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函式先得到控制權。這時鉤子函式即可以加工處理(改變)該訊息,也可以不作處理而繼續傳遞該訊息,還可以強制結束訊息的傳遞。

2)   典型示例

1.   獲取其他程式中的控制元件值