C#のAPI機能はWin32_ --User32.dllを呼び出します

科学技術の公式ブログから森
http://www.cnsendblog.com/index.php/?p=230
GPSプラットフォーム、サイト構築、ソフトウェア開発、システム運用・保守、大規模な森林ネットワーク技術を見つけるために!
http://cnsendnet.taobao.com

C#のは、Win32 API関数を呼び出す--User32.dll

Win32 API関数は、Microsoft自身の事ことを、直接のWinFormや役に立つを行うには、C#で直接呼び出すことができます。時々、私たちは直接、所望の効果を達成するために効率的であるのWin32 APIを呼び出します。

代码
システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Textのを使用しました。
System.Runtime.InteropServicesを使用しました。

WINDOWSAPI名前空間
{
クラスCSharp_Win32Api
{
#region User32.dllの機能
/// <要約>
ハンドル表示デバイスコンテキスト///この関数は、指定されたウィンドウのクライアント領域または画面全体を取り出し、ハンドルは、GDI関数に後で使用することができますコンテキストを描画するための装置インチ hWnd:デバイス

以下、検索環境ハンドルウィンドウ
/// </要約>
[DLLIMPORT( "User32.dllの"、項目CharSet = CharSet.Auto)]
GetDCのIntPtrパブリック静的にextern(のIntPtrのhWnd);
/// <まとめ>
///他のアプリケーションで使用するためのデバイスコンテキスト(DC)を放出するように機能します。
/// </要約>
パブリック静的にextern INT ReleaseDCの(のIntPtr hWndは、のIntPtr HDC);
/// <要約>
///この関数は、デスクトップウィンドウへのハンドルを返します。デスクトップウィンドウは、画面全体をカバーしています。
/// </要約>
GetDesktopWindow(のIntPtr静的パブリックのextern);
/// <要約>
///この関数は、指定されたウィンドウの表示状態を設定します。
/// </要約>
静的公衆のextern BOOLのShowWindow(のIntPtr hWndは、ショート状態);
/// <まとめ>
ターゲットウィンドウのクライアント領域、無効領域を更新する目標再描画フォームに送信することにより/// WM_PAINTメッセージ。
/// </要約>
静的なパブリックにextern BOOL UpdateWindow(hWndをのIntPtr)。
/// <要約>
///この関数は、スレッドがフォアグラウンドに指定されたウィンドウを設定し、ウィンドウをアクティブに作成されます。キーボード入力ウィンドウをステアリング、そしてユーザーのために、様々な視覚的なマークを変更します。わずかアクセス許可を割り当てるスレッドを作成するためにフォアグラウンドウィンドウシステム

他のスレッドよりも高いです。
/// </要約>
静的公衆のextern BOOL SetForegroundWindow(のIntPtrのhWnd);
/// <要約>
///この関数は、子ウィンドウ、トップレベルウィンドウがポップアップウィンドウのタイプ、位置及びZオーダーの大きさを変化させます。
/// </要約>
静的公衆のextern BOOL SetWindowPos(のIntPtr hWndは、のIntPtr hWndInsertAfter、Xはint、int型Y、幅INTは、高さINT、フラグがuint);
/// <まとめ>
///オープンクリップボード
// / </要約>
静的公衆のextern BOOL OpenClipboard(のIntPtr hWndNewOwner);
/// <まとめ>
///閉じるクリップボード
/// </要約>
静的公衆のextern BOOL CloseClipboard();
/// <まとめ>
/ //開いた空の</要約>
静的公衆のextern BOOL EmptyClipboard();
/// <まとめ>


EXTERNのIntPtr SetClipboardDataのpublic static(形式、のIntPtr HDATAのがuint);
/// <まとめ>
///指定されたメニュー項目が画面座標情報に矩形にロード
/// </要約>
静的公衆のextern BOOL GetMenuItemRect(のIntPtr hWndは、 IntPtr HMENU、UINTアイテム、REF RECT rcの);

    [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
    /// <summary>
    /// 该函数获得一个指定子窗口的父窗口句柄。
    /// </summary>
    public static extern IntPtr GetParent(IntPtr hWnd);
    /// <summary>
    /// 该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。 
    /// </summary>
    /// <param name="hWnd">其窗口程序将接收消息的窗口的句柄</param>
    /// <param name="msg">指定被发送的消息</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>
    /// 该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里
    /// </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>
    /// 该函数对指定的窗口设置键盘焦点。
    /// </summary>
    public static extern IntPtr SetFocus(IntPtr hWnd);
    /// <summary>
    /// 该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。
    /// </summary>
    public extern static int DrawText(IntPtr hdc, string lpString, int nCount, ref RECT lpRect, int uFormat);
    /// <summary>
    /// 该函数改变指定子窗口的父窗口。
    /// </summary>
    public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);
    /// <summary>
    /// 获取对话框中子窗口控件的句柄
    /// </summary>
    public extern static IntPtr GetDlgItem(IntPtr hDlg, int nControlID);
    /// <summary>
    /// 该函数获取窗口客户区的坐标。
    /// </summary>
    public extern static int GetClientRect(IntPtr hWnd, ref RECT rc);
    /// <summary>
    /// 该函数向指定的窗体添加一个矩形,然后窗口客户区域的这一部分将被重新绘制。
    /// </summary>
    public extern static int InvalidateRect(IntPtr hWnd, IntPtr rect, int bErase);
    /// <summary>
    /// 该函数产生对其他线程的控制,如果一个线程没有其他消息在其消息队列里。
    /// </summary>
    public static extern bool WaitMessage();
    /// <summary>
    /// 该函数为一个消息检查线程消息队列,并将该消息(如果存在)放于指定的结构。
    /// </summary>
    public static extern bool PeekMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax, uint wFlag);
    /// <summary>
    /// 该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函

値を受信したメッセージの数の範囲。
/// </要約>
パブリック静的にextern BOOLのGetMessage(REF MSG MSG、hWndをint型、UINT wFilterMin、UINT wFilterMax);
/// <要約>
///この関数は仮想キーメッセージを文字メッセージに。
/// </要約>
パブリック静的にextern BOOL TranslateMessage(REF MSG MSG);
/// <要約>
///この関数はウィンドウプロシージャにメッセージを送出します。
/// </要約>
パブリック静的にextern BOOL DispatchMessageを(REF MSG MSG);
/// <要約>
///この関数の実行ファイル(EXEファイル)アプリケーションインスタンス指定されたカーソルリソースに関連付けられた負荷から。
/// </要約>
LoadCursor(のIntPtr hInstanceは、UINTカーソル)のIntPtrパブリック静的にextern;
/// <まとめ>
///この関数カーソルの形状を決定します。
/// </要約>
のexternのIntPtrのSetCursor(のIntPtr hCursor)パブリック静的;
/// <まとめ>
///現在のフォーカスがそのコントロールにあるかを決定。
/// </要約>
をGetFocus(のIntPtrパブリック静的EXTERN);
/// <要約>
///この関数は、現在のスレッドからのマウスキャプチャウィンドウを解放し、そして正常マウス入力に戻ります。マウスをキャプチャウィンドウは、マウスボタンのクリックしない限り、(かかわらず、ここで、カーソル位置の)すべてのマウス入力を受け付け

場合は、ウィンドウ内の別のスレッドでのカーソルのホットスポット。
/// </要約>
パブリック静的にextern BOOL ReleaseCapture();
/// <まとめ>
///指定されたウィンドウの再描画の準備とPAINTSTRUCT構造に関連する情報を描きます。
/// </要約>
パブリック静的にexternのIntPtr BeginPaint関数(のIntPtr hWndは、PAINTSTRUCT REF PS);
/// <まとめ>
終了タグ///指定したウィンドウ塗装工程、各関数コールがBeginPaint関数要求された後
/// < /要約>
EndPaintのパブリック静的にextern BOOL(のIntPtr hWndは、PAINTSTRUCT REF PS);
/// <まとめ>
///半透明の形
/// </要約>
パブリック静的にextern UpdateLayeredWindowはBOOL(HWNDのIntPtr、のIntPtr hdcDst、REFでありますPOINT pptDst、REF SIZEのPSIZE、のIntPtr POINT pprSrc REF hdcSrc、

CrKey INT32、REF BLENDFUNCTIONのpblend、dwFlagsパラメータINT32);
/// <要約>
///この関数は、窓枠矩形のサイズを返します。与えられた座標の左上隅の画面座標の相対的な大きさ。
/// </要約>
パブリック静的にextern BOOL GetWindowRect(のIntPtr hWndは、RECT RECT REF);
/// <要約>
///この関数は、ユーザ点はスクリーン座標に座標変換を指定します。
/// </要約>
パブリック静的にextern BOOL ClientToScreen(のIntPtr hWndは、POINTのPt REF);
/// <まとめ>
///指定された時間内にマウスポインタ葉又はウィンドウ上をホバリング、機能送りますメッセージ。
/// </要約>
パブリック静的にextern BOOL TrackMouseEvent(REF TRACKMOUSEEVENTS TME);
/// <まとめ>
///
/// </要約>
パブリック静的にextern BOOL SetWindowRgn(のIntPtr hWndは、のIntPtr HRGN、再描画BOOL)。
/// <要約>
///指定された機能は、仮想キーの状態を押収しました。
/// </要約>
GetKeyState EXTERN静的公開をUSHORT(INT VIRTKEY);
/// <要約>
///この関数は、指定したウィンドウの位置やサイズを変更します。トップレベルウィンドウの位置や大きさのために、画面の左上隅に対する相対:子ウィンドウの位置とサイズの親ウィンドウのクライアント領域座標の左上隅を基準にしてい


/// </要約>
パブリック静的にextern BOOL MoveWindow(のIntPtr hWndは、int型のX、Yはint、int型の幅は、int型の高さ、BOOL再描画);
/// <要約>
///この関数は、取得ウィンドウは、指定されたクラスに属しクラス名。
/// </要約>
パブリック静的にextern INT getClassNameメソッド(のIntPtr hWndは、StringBufferのクラス名OUT、INT nMaxCount);
/// <要約>
///この関数は、指定されたウィンドウの特性変化
/// </要約>
パブリック静的EXTERNをSetWindowLong関数INT(のIntPtr hWndは、INT nIndex、INT dwNewLong);
/// <まとめ>
ハンドル///この関数は、指定されたウィンドウのクライアント領域または表示デバイスコンテキストの画面全体を取り出し、後続のGDI関数でハンドルを使用することができ描画デバイスコンテキストインチ
/// </要約>
パブリック静的にextern GetDCExへのIntPtr(のIntPtr hWndは、のIntPtr HRegion、フラグUINT);
/// <まとめ>
///デバイスコンテキスト戻り値長いの(などボーダー、スクロールバー、タイトルバー、メニュー、を含む)全体のウィンドウを取得。
/// </要約>
EXTERNのIntPtr GetWindowDCの静的パブリック(のIntPtrのhWnd);
/// <要約>
///この関数は、指定された刷毛塗りの矩形、長方形の左上境界を含むこの機能を満たすが、右下の矩形の境界を含みません。
/// </要約>
パブリック静的にextern INT FillRect(のIntPtrのhDC、RECT RECT REF、のIntPtr HBRUSH);
/// <要約>
///この関数は、ウィンドウを返し、指定された表示状態が復元され、そして最大化最小化ウィンドウの位置。
/// </要約>
パブリック静的にextern int型GetWindowPlacement(のIntPtr hWndを、REF WINDOWPLACEMENT WP);
/// <まとめ>
テキスト///この関数は、指定したウィンドウのタイトルバーに変更
/// </要約>
パブリックstatic int型SetWindowText関数のextern(のIntPtr hWndを、文字列のテキスト);
/// <まとめ>
(存在する場合)///この関数は、このウィンドウのタイトルの提供を指定されたバッファゾーンにコピーされます。指定されたウィンドウがコントロールの場合、コントロールのテキストがコピーされます。
/// </要約>
パブリック静的にextern int型GetWindowText(のIntPtr hWndを、OUT StringBufferのテキスト、
/// <まとめ>
システムデータまたはシステム構成情報について///が定義されている。
/// </要約>
静的公衆のextern int型GetSystemMetrics関数(INT nIndex);
/// <要約>
///この関数スクロール位置の最大値と最小値の位置、ページサイズ、スクロールボタンを含む、スクロールバーのパラメータを設定します。
/// </要約>
SetScrollInfo(HWNDのIntPtr、INTバー、SCROLLINFO REFのSi、INT fRedraw)静的公衆のextern INT;
/// <まとめ>
///表示または非表示機能は、スクロールバーで指定。
/// </要約>
パブリック静的にextern int型ShowScrollBar(のIntPtr hWndを、バーはint、int型ショー);
/// <要約>
///この関数は、スクロールバーの矢印の一方または両方を有効または無効にレンダリングします。
/// </要約>
パブリック静的にextern INT EnableScrollBar(のIntPtr hWndは、フラグUINT、UINT矢印);
/// <要約>
///この関数はZ順序の先頭に指定されたウィンドウを設定します。
/// </要約>
extern int型BringWindowToTop静的パブリック(のIntPtr hWndを);
/// <まとめ>
ウィンドウのクライアント領域のスクロール機能///指定したディレクトリ。
/// </要約>
静的なパブリックにextern int型ScrollWindowEx(のIntPtr hWndを、DXはint、int型のDy、RECT rcScroll REF、REF rcClip RECT、のIntPtr UpdateRegion、RECT REF

rcInvalidated、フラグがuint);
/// <要約>
///この関数は、ウィンドウハンドルが既存のウィンドウの識別を与えられるかどうかを判定する。
/// </要約>
パブリック静的にextern INT IsWindow(のIntPtrのhWnd);
/// <まとめ>
///ファンクションキー256指定されたバッファへの仮想コピーの状態。
/// </要約>
パブリック静的にextern INT GetKeyboardState(バイト[] pbKeyState);
/// <要約>
///この関数は仮想キー及びキーボード状態または対応する文字列に翻訳を指定しました。この関数は、変換されたコードによって識別される所与のキーボードレイアウトハンドルで物理的キーボードレイアウトと入力言語を使用します。
/// </要約>
パブリック静的にextern INTもしToASCII(uVirtKey INT、INT uScanCode、バイト[] lpbKeyState、バイト[] lpwTransKey、INT fuState);
#endregion

}

科学技術の公式ブログから森
http://www.cnsendblog.com/index.php/?p=230
GPSプラットフォーム、サイト構築、ソフトウェア開発、システム運用・保守、大規模な森林ネットワーク技術を見つけるために!
http://cnsendnet.taobao.com

おすすめ

転載: blog.51cto.com/14036626/2462733