WinAPI、VB6.0、C#

來源:互聯網
上載者:User

網上找了個WinAPI的例子不過是VB6.0版的,趕快上亦彩載了個mini,哇!好久沒看到這個介面了!

記得高一的時候,一個個子趨於無窮大(至少他很高)、頭髮有些發白的老頭在賣力地為我們講VB6.0,當時的我們簡直個個瞪著眼、坐在教室裡不知道在講什麼。有一個算是比較high的懂得要實現Timer控制項的事件應該在哪裡寫代碼,當時上機的時候旁邊的人都把他奉為神,個個都嘲他喊:曉傑曉傑快過來!SOS哦。呵呵,記得當時下課後教室裡的人都走光了,我還圍著高老頭問啊問,想問出什麼東西來。當時的我挺甚解的吧?至少現在上完課後我再也不會圍著老師問問題了,因為這個專業確實very null!說這些是為了懷念一下我的那個高老頭,學校裡唯一騎單車的老師…好了,廢話少來,直切主題:

相信很多看了這張圖片後都會覺得很熟悉,幾年前就是用這個工具來作實驗的,不過現在還用VB6.0的應該少了吧,或者用更高的版本了。

這是一個使用WinAPI的小應用程式,可以擷取任何表單(object)的名稱、控制代碼、類名等,通過使用GetWindowText、GetClassName、GetCursorPos 來擷取表單的名稱、類名或者顯示隱藏滑鼠。下面舉個例子來說明:

in VB6.0:

'聲明POINTAPI類型,欄位X、Y為當前滑鼠座標

Public Type POINTAPI
X As Long
Y As Long
End Type

'聲明GetCursorPos  API,該API位於user32.dll內
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

GetCursorPos tPA
' 從表單座標擷取表單控制代碼
lhWnd = WindowFromPoint(tPA.X, tPA.Y)
' 擷取表單標題,存在sTitle
GetWindowText(lhWnd, sTitle, 255)

in C#:

//聲明POINT結構體
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
    public int X;
    public int Y;

public POINT(int x, int y)
{
    this.X = x;
    this.Y = y;
}

public static implicit operator System.Drawing.Point(POINT p)
{
    return new System.Drawing.Point(p.X, p.Y);
}

public static implicit operator POINT(System.Drawing.Point p)
{
    return new POINT(p.X, p.Y);

//定製屬性:擷取當前座標表單的控制代碼
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(POINT Point);

//擷取游標位置
System.Drawing.Point ptCursor = Cursor.Position;

//把座標資訊賦給POINT結構體
POINT ptCurrent = new POINT(ptCursor.X, ptCursor.Y);

//通過座標資訊獲得當前對象的控制代碼
hWindows = WindowFromPoint(ptCurrent);

//有了該控制代碼就可以做很多工作了:判斷該對象是不是一個表單
isWindows = IsWindowVisible(hWindows);

//設定該表單處於最前端
if (isWindows == true)
{
    WinAPIUtilty.SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 3);
}

 上面給的是幾個WinAPI的簡單例子,事實上當我從網上找到《Windows
API大全》就像是得到武林密籍一樣,有一種想翻遍Gates老底---Windows的衝動!在C#裡實現一些很實用的功能原來這麼簡單,像開關CD磁碟機、排列表單等等。

使用WinAPI我又寫了一個小程式,是用來排列任意視窗的。有些時候我們的視窗開多了,想要使一個視窗固定在最上方,另一個視窗在它下面作觀察對比,而我們的螢幕太小了(我的只有15"^_^)或是一些筆記本,這時這個小程式顯得很有用。這裡有一篇說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.