欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#調(diào)用Win32的API函數(shù)--User32.dll

 更新時(shí)間:2020年01月02日 09:14:51   作者:Kevin Gao  
這篇文章主要介紹了C#調(diào)用Win32_的API函數(shù)--User32.dll,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Win32的API函數(shù)是微軟自己的東西,可以直接在C#中直接調(diào)用,在做WinForm時(shí)還是很有幫助的。有時(shí)候我們之直接調(diào)用Win32 的API,可以很高效的實(shí)現(xiàn)想要的效果。

代碼

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.InteropServices;



namespace WindowsAPI

{

  class CSharp_Win32Api

  {

    #region User32.dll 函數(shù)

    /// <summary>

    /// 該函數(shù)檢索一指定窗口的客戶區(qū)域或整個(gè)屏幕的顯示設(shè)備上下文環(huán)境的句柄,以后可以在GDI函數(shù)中使用該句柄來在設(shè)備上下文環(huán)境中繪圖。hWnd:設(shè)備上下文環(huán)境被檢索的窗口的句柄

    /// </summary>

    [DllImport("user32.dll", CharSet = CharSet.Auto)]

    public static extern IntPtr GetDC(IntPtr hWnd);

    /// <summary>

    /// 函數(shù)釋放設(shè)備上下文環(huán)境(DC)供其他應(yīng)用程序使用。

    /// </summary>

    public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);

    /// <summary>

    /// 該函數(shù)返回桌面窗口的句柄。桌面窗口覆蓋整個(gè)屏幕。

    /// </summary>

    static public extern IntPtr GetDesktopWindow();

    /// <summary>

    /// 該函數(shù)設(shè)置指定窗口的顯示狀態(tài)。

    /// </summary>

    static public extern bool ShowWindow(IntPtr hWnd, short State);

    /// <summary>

    /// 通過發(fā)送重繪消息 WM_PAINT 給目標(biāo)窗體來更新目標(biāo)窗體客戶區(qū)的無效區(qū)域。

    /// </summary>

    static public extern bool UpdateWindow(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)將創(chuàng)建指定窗口的線程設(shè)置到前臺(tái),并且激活該窗口。鍵盤輸入轉(zhuǎn)向該窗口,并為用戶改各種可視的記號(hào)。系統(tǒng)給創(chuàng)建前臺(tái)窗口的線程分配的權(quán)限稍高于其他線程。

    /// </summary>

    static public extern bool SetForegroundWindow(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)改變一個(gè)子窗口,彈出式窗口式頂層窗口的尺寸,位置和Z序。

    /// </summary>

    static public extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int Width, int Height, uint flags);

    /// <summary>

    /// 打開剪切板

    /// </summary>

    static public extern bool OpenClipboard(IntPtr hWndNewOwner);

    /// <summary>

    /// 關(guān)閉剪切板

    /// </summary>

    static public extern bool CloseClipboard();

    /// <summary>

    /// 打開清空</summary>

    static public extern bool EmptyClipboard();

    /// <summary>

    /// 將存放有數(shù)據(jù)的內(nèi)存塊放入剪切板的資源管理中

    /// </summary>

    static public extern IntPtr SetClipboardData(uint Format, IntPtr hData);

    /// <summary>

    /// 在一個(gè)矩形中裝載指定菜單條目的屏幕坐標(biāo)信息 

    /// </summary>

    static public extern bool GetMenuItemRect(IntPtr hWnd, IntPtr hMenu, uint Item, ref RECT rc);



    [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]

    /// <summary>

    /// 該函數(shù)獲得一個(gè)指定子窗口的父窗口句柄。

    /// </summary>

    public static extern IntPtr GetParent(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)將指定的消息發(fā)送到一個(gè)或多個(gè)窗口。此函數(shù)為指定的窗口調(diào)用窗口程序,直到窗口程序處理完消息再返回?!?

    /// </summary>

    /// <param name="hWnd">其窗口程序?qū)⒔邮障⒌拇翱诘木浔?lt;/param>

    /// <param name="msg">指定被發(fā)送的消息</param>

    /// <param name="wParam">指定附加的消息指定信息</param>

    /// <param name="lParam">指定附加的消息指定信息</param>

    /// <returns></returns>

    public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);

    public static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, IntPtr lParam);    

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref RECT lParam);

    public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref POINT lParam);    

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TBBUTTON lParam);    

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TBBUTTONINFO lParam);   

    public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, ref REBARBANDINFO lParam);   

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref TVITEM lParam);    

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref LVITEM lParam);  

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref HDITEM lParam);  

    public static extern void SendMessage(IntPtr hWnd, int msg, int wParam, ref HD_HITTESTINFO hti); 

    /// <summary>

    /// 該函數(shù)將一個(gè)消息放入(寄送)到與指定窗口創(chuàng)建的線程相聯(lián)系消息隊(duì)列里

    /// </summary>

    public static extern IntPtr PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);

    public static extern IntPtr SetWindowsHookEx(int hookid, HookProc pfnhook, IntPtr hinst, int threadid);



    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

    public static extern bool UnhookWindowsHookEx(IntPtr hhook);



    [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]

    public static extern IntPtr CallNextHookEx(IntPtr hhook, int code, IntPtr wparam, IntPtr lparam);

    /// <summary>

    /// 該函數(shù)對(duì)指定的窗口設(shè)置鍵盤焦點(diǎn)。

    /// </summary>

    public static extern IntPtr SetFocus(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)在指定的矩形里寫入格式化文本,根據(jù)指定的方法對(duì)文本格式化(擴(kuò)展的制表符,字符對(duì)齊、折行等)。

    /// </summary>

    public extern static int DrawText(IntPtr hdc, string lpString, int nCount, ref RECT lpRect, int uFormat);

    /// <summary>

    /// 該函數(shù)改變指定子窗口的父窗口。

    /// </summary>

    public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);

    /// <summary>

    /// 獲取對(duì)話框中子窗口控件的句柄

    /// </summary>

    public extern static IntPtr GetDlgItem(IntPtr hDlg, int nControlID);

    /// <summary>

    /// 該函數(shù)獲取窗口客戶區(qū)的坐標(biāo)。

    /// </summary>

    public extern static int GetClientRect(IntPtr hWnd, ref RECT rc);

    /// <summary>

    /// 該函數(shù)向指定的窗體添加一個(gè)矩形,然后窗口客戶區(qū)域的這一部分將被重新繪制。

    /// </summary>

    public extern static int InvalidateRect(IntPtr hWnd, IntPtr rect, int bErase);

    /// <summary>

    /// 該函數(shù)產(chǎn)生對(duì)其他線程的控制,如果一個(gè)線程沒有其他消息在其消息隊(duì)列里。

    /// </summary>

    public static extern bool WaitMessage();

    /// <summary>

    /// 該函數(shù)為一個(gè)消息檢查線程消息隊(duì)列,并將該消息(如果存在)放于指定的結(jié)構(gòu)。

    /// </summary>

    public static extern bool PeekMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax, uint wFlag);

    /// <summary>

    /// 該函數(shù)從調(diào)用線程的消息隊(duì)列里取得一個(gè)消息并將其放于指定的結(jié)構(gòu)。此函數(shù)可取得與指定窗口聯(lián)系的消息和由PostThreadMesssge寄送的線程消息。此函數(shù)接收一定范圍的消息值。

    /// </summary>

    public static extern bool GetMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax);

    /// <summary>

    /// 該函數(shù)將虛擬鍵消息轉(zhuǎn)換為字符消息。

    /// </summary>

    public static extern bool TranslateMessage(ref MSG msg);

    /// <summary>

    /// 該函數(shù)調(diào)度一個(gè)消息給窗口程序。

    /// </summary>

    public static extern bool DispatchMessage(ref MSG msg);

    /// <summary>

    /// 該函數(shù)從一個(gè)與應(yīng)用事例相關(guān)的可執(zhí)行文件(EXE文件)中載入指定的光標(biāo)資源.

    /// </summary>

    public static extern IntPtr LoadCursor(IntPtr hInstance, uint cursor);

    /// <summary>

    /// 該函數(shù)確定光標(biāo)的形狀。

    /// </summary>

    public static extern IntPtr SetCursor(IntPtr hCursor);

    /// <summary>

    /// 確定當(dāng)前焦點(diǎn)位于哪個(gè)控件上。

    /// </summary>

    public static extern IntPtr GetFocus();

    /// <summary>

    /// 該函數(shù)從當(dāng)前線程中的窗口釋放鼠標(biāo)捕獲,并恢復(fù)通常的鼠標(biāo)輸入處理。捕獲鼠標(biāo)的窗口接收所有的鼠標(biāo)輸入(無論光標(biāo)的位置在哪里),除非點(diǎn)擊鼠標(biāo)鍵時(shí),光標(biāo)熱點(diǎn)在另一個(gè)線程的窗口中。

    /// </summary>

    public static extern bool ReleaseCapture();

    /// <summary>

    /// 準(zhǔn)備指定的窗口來重繪并將繪畫相關(guān)的信息放到一個(gè)PAINTSTRUCT結(jié)構(gòu)中。

    /// </summary>

    public static extern IntPtr BeginPaint(IntPtr hWnd, ref PAINTSTRUCT ps);

    /// <summary>

    /// 標(biāo)記指定窗口的繪畫過程結(jié)束,每次調(diào)用BeginPaint函數(shù)之后被請(qǐng)求

    /// </summary>

    public static extern bool EndPaint(IntPtr hWnd, ref PAINTSTRUCT ps);

    /// <summary>

    /// 半透明窗體

    /// </summary>

    public static extern bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref POINT pptDst, ref SIZE psize, IntPtr hdcSrc, ref POINT pprSrc, Int32 crKey, ref BLENDFUNCTION pblend, Int32 dwFlags);

    /// <summary>

    /// 該函數(shù)返回指定窗口的邊框矩形的尺寸。該尺寸以相對(duì)于屏幕坐標(biāo)左上角的屏幕坐標(biāo)給出。

    /// </summary>

    public static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect);

    /// <summary>

    /// 該函數(shù)將指定點(diǎn)的用戶坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo)。

    /// </summary>

    public static extern bool ClientToScreen(IntPtr hWnd, ref POINT pt);

    /// <summary>

    /// 當(dāng)在指定時(shí)間內(nèi)鼠標(biāo)指針離開或盤旋在一個(gè)窗口上時(shí),此函數(shù)寄送消息。

    /// </summary>

    public static extern bool TrackMouseEvent(ref TRACKMOUSEEVENTS tme);

    /// <summary>

    /// 

    /// </summary>

    public static extern bool SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool redraw);

    /// <summary>

    /// 該函數(shù)檢取指定虛擬鍵的狀態(tài)。

    /// </summary>

    public static extern ushort GetKeyState(int virtKey);

    /// <summary>

    /// 該函數(shù)改變指定窗口的位置和尺寸。對(duì)于頂層窗口,位置和尺寸是相對(duì)于屏幕的左上角的:對(duì)于子窗口,位置和尺寸是相對(duì)于父窗口客戶區(qū)的左上角坐標(biāo)的。

    /// </summary>

    public static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint);

    /// <summary>

    /// 該函數(shù)獲得指定窗口所屬的類的類名。

    /// </summary>

    public static extern int GetClassName(IntPtr hWnd, out STRINGBUFFER ClassName, int nMaxCount);

    /// <summary>

    /// 該函數(shù)改變指定窗口的屬性

    /// </summary>

    public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);

    /// <summary>

    /// 該函數(shù)檢索指定窗口客戶區(qū)域或整個(gè)屏幕的顯示設(shè)備上下文環(huán)境的句柄,在隨后的GDI函數(shù)中可以使用該句柄在設(shè)備上下文環(huán)境中繪圖。

    /// </summary>

    public static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hRegion, uint flags);

    /// <summary>

    /// 獲取整個(gè)窗口(包括邊框、滾動(dòng)條、標(biāo)題欄、菜單等)的設(shè)備場(chǎng)景 返回值 Long。

    /// </summary>

    public static extern IntPtr GetWindowDC(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)用指定的畫刷填充矩形,此函數(shù)包括矩形的左上邊界,但不包括矩形的右下邊界。

    /// </summary>

    public static extern int FillRect(IntPtr hDC, ref RECT rect, IntPtr hBrush);

    /// <summary>

    /// 該函數(shù)返回指定窗口的顯示狀態(tài)以及被恢復(fù)的、最大化的和最小化的窗口位置。

    /// </summary>

    public static extern int GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT wp);

    /// <summary>

    /// 該函數(shù)改變指定窗口的標(biāo)題欄的文本內(nèi)容

    /// </summary>

    public static extern int SetWindowText(IntPtr hWnd, string text);

    /// <summary>

    /// 該函數(shù)將指定窗口的標(biāo)題條文本(如果存在)拷貝到一個(gè)緩存區(qū)內(nèi)。如果指定的窗口是一個(gè)控制,則拷貝控制的文本。

    /// </summary>

    public static extern int GetWindowText(IntPtr hWnd, out STRINGBUFFER text, int maxCount);

    /// <summary>

    /// 用于得到被定義的系統(tǒng)數(shù)據(jù)或者系統(tǒng)配置信息.

    /// </summary>

    static public extern int GetSystemMetrics(int nIndex);

    /// <summary>

    /// 該函數(shù)設(shè)置滾動(dòng)條參數(shù),包括滾動(dòng)位置的最大值和最小值,頁面大小,滾動(dòng)按鈕的位置。

    /// </summary>

    static public extern int SetScrollInfo(IntPtr hwnd, int bar, ref SCROLLINFO si, int fRedraw);

    /// <summary>

    /// 該函數(shù)顯示或隱藏所指定的滾動(dòng)條。

    /// </summary>

    public static extern int ShowScrollBar(IntPtr hWnd, int bar, int show);

    /// <summary>

    /// 該函數(shù)可以激活一個(gè)或兩個(gè)滾動(dòng)條箭頭或是使其失效。

    /// </summary>

    public static extern int EnableScrollBar(IntPtr hWnd, uint flags, uint arrows);

    /// <summary>

    /// 該函數(shù)將指定的窗口設(shè)置到Z序的頂部。

    /// </summary>

    public static extern int BringWindowToTop(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)滾動(dòng)指定窗體客戶區(qū)域的目錄。

    /// </summary>

    static public extern int ScrollWindowEx(IntPtr hWnd, int dx, int dy,ref RECT rcScroll, ref RECT rcClip, IntPtr UpdateRegion, ref RECT rcInvalidated, uint flags);

    /// <summary>

    /// 該函數(shù)確定給定的窗口句柄是否識(shí)別一個(gè)已存在的窗口。

    /// </summary>

    public static extern int IsWindow(IntPtr hWnd);

    /// <summary>

    /// 該函數(shù)將256個(gè)虛擬鍵的狀態(tài)拷貝到指定的緩沖區(qū)中。

    /// </summary>

    public static extern int GetKeyboardState(byte[] pbKeyState);

    /// <summary>

    /// 該函數(shù)將指定的虛擬鍵碼和鍵盤狀態(tài)翻譯為相應(yīng)的字符或字符串。該函數(shù)使用由給定的鍵盤布局句柄標(biāo)識(shí)的物理鍵盤布局和輸入語言來翻譯代碼。

    /// </summary>

    public static extern int ToAscii(int uVirtKey,int uScanCode, byte[] lpbKeyState, byte[] lpwTransKey,int fuState);

    #endregion



  }

}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#使用HttpHelper框架重啟路由器

    C#使用HttpHelper框架重啟路由器

    這篇文章介紹了C#使用HttpHelper框架重啟路由器的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C# 9 中新加入的關(guān)鍵詞 init,record,with

    C# 9 中新加入的關(guān)鍵詞 init,record,with

    這篇文章主要介紹了C# 9 中新加入的關(guān)鍵詞 init,record,with的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c# 9,感興趣的朋友可以了解下
    2020-08-08
  • c#操作xml幫助類分享(xml增刪改查)

    c#操作xml幫助類分享(xml增刪改查)

    c#操作xml幫助類XMLHelper源碼分享,實(shí)現(xiàn)對(duì)XML文檔的創(chuàng)建,及節(jié)點(diǎn)和屬性的增、刪、改、查
    2014-01-01
  • 分享兩種實(shí)現(xiàn)Winform程序的多語言支持的多種解決方案

    分享兩種實(shí)現(xiàn)Winform程序的多語言支持的多種解決方案

    本篇文章主要介紹了分享兩種實(shí)現(xiàn)Winform程序的多語言支持的多種解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧。
    2017-02-02
  • 一個(gè)基于C#開發(fā)的Excel轉(zhuǎn)Json工具使用教程

    一個(gè)基于C#開發(fā)的Excel轉(zhuǎn)Json工具使用教程

    JSON吸引了工具構(gòu)建者的注意,它們開發(fā)了用于重新格式化、驗(yàn)證和解析JSON的眾多工具,這不足為奇,下面這篇文章主要給大家介紹了一個(gè)基于C#開發(fā)的Excel轉(zhuǎn)Json工具的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • C#中矩形數(shù)組的定義和元素訪問

    C#中矩形數(shù)組的定義和元素訪問

    矩形數(shù)組是指由相同數(shù)據(jù)類型的元素按照行和列組成的二維數(shù)組,可以使用索引訪問矩形數(shù)組中的單個(gè)元素,也可以使用循環(huán)結(jié)構(gòu)遍歷矩形數(shù)組中的所有元素,此外,我們還需要注意不要修改矩形數(shù)組的維度,避免使用矩形數(shù)組造成內(nèi)存占用過高等問題
    2024-01-01
  • C#判斷一天、一年已經(jīng)過了百分之多少的方法

    C#判斷一天、一年已經(jīng)過了百分之多少的方法

    這篇文章主要介紹了C#判斷一天、一年已經(jīng)過了百分之多少的方法,涉及C#針對(duì)時(shí)間及日期的運(yùn)算與判定技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • ADO.NET實(shí)體數(shù)據(jù)模型詳細(xì)介紹

    ADO.NET實(shí)體數(shù)據(jù)模型詳細(xì)介紹

    本文將詳細(xì)介紹ADO.NET實(shí)體數(shù)據(jù)模型,下面先看看簡單的單表的增刪改查操作,然后再看多表的關(guān)聯(lián)查詢,帶參數(shù)查詢等
    2012-11-11
  • C#實(shí)現(xiàn)讀寫ini配置文件的方法詳解

    C#實(shí)現(xiàn)讀寫ini配置文件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)讀寫ini配置文件操作,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • 關(guān)于C#繼承的簡單應(yīng)用代碼分析

    關(guān)于C#繼承的簡單應(yīng)用代碼分析

    在本篇文章里小編給大家整理了一篇關(guān)于C#繼承的簡單應(yīng)用代碼分析內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-05-05

最新評(píng)論