英語で読む

次の方法で共有


NativeWindow.AssignHandle(IntPtr) メソッド

定義

ウィンドウにハンドルを割り当てます。

public void AssignHandle(IntPtr handle);

パラメーター

handle
IntPtr

ウィンドウに割り当てるハンドル。

例外

ウィンドウには既にハンドルが割り当てられています。

関連付けられたネイティブ ウィンドウのウィンドウ プロシージャを取得できませんでした。

次のコード例では、ウィンドウ プロシージャでオペレーティング システム ウィンドウ メッセージをインターセプトする方法を示します。 この例では、これを実現するために を NativeWindow 継承する クラスを作成します。

クラスは MyNativeWindowListener 、コンストラクターに渡されたフォームのウィンドウ プロシージャにフックし、 メソッドを WndProc オーバーライドしてウィンドウ メッセージを WM_ACTIVATEAPP インターセプトします。 クラスでは、 メソッドと ReleaseHandle メソッドを使用して、 が使用AssignHandleするウィンドウ ハンドルを識別する方法をNativeWindow示します。 ハンドルは、 イベントと Control.HandleDestroyed イベントにControl.HandleCreated基づいて割り当てられます。 ウィンドウ メッセージを WM_ACTIVATEAPP 受信すると、 クラスは メソッドを form1.ApplicationActivated 呼び出します。

このコードは、クラスの概要に NativeWindow 示されている例からの抜粋です。 簡潔にするために一部のコードは表示されません。 コードの一覧全体を参照してください NativeWindow

// NativeWindow class to listen to operating system messages.
internal class MyNativeWindowListener : NativeWindow
{
    // Constant value was found in the "windows.h" header file.
    private const int WM_ACTIVATEAPP = 0x001C;

    private Form1 parent;

    public MyNativeWindowListener(Form1 parent)
    {

        parent.HandleCreated += new EventHandler(this.OnHandleCreated);
        parent.HandleDestroyed += new EventHandler(this.OnHandleDestroyed);
        this.parent = parent;
    }

    // Listen for the control's window creation and then hook into it.
    internal void OnHandleCreated(object sender, EventArgs e)
    {
        // Window is now created, assign handle to NativeWindow.
        AssignHandle(((Form1)sender).Handle);
    }
    internal void OnHandleDestroyed(object sender, EventArgs e)
    {
        // Window was destroyed, release hook.
        ReleaseHandle();
    }

    protected override void WndProc(ref Message m)
    {
        // Listen for operating system messages

        switch (m.Msg)
        {
            case WM_ACTIVATEAPP:

                // Notify the form that this message was received.
                // Application is activated or deactivated, 
                // based upon the WParam parameter.
                parent.ApplicationActivated(((int)m.WParam != 0));

                break;
        }
        base.WndProc(ref m);
    }
}

注釈

WndProc は、 パラメーターに送信されたウィンドウ メッセージを handle インターセプトします。 ハンドルのウィンドウ プロシージャを既定のウィンドウ プロシージャにリセットするには、 を使用 ReleaseHandle します。

メソッドは AssignHandle 、 メソッドを OnHandleChange 呼び出して、 プロパティの値が Handle 変更されたことを示します。

注意

割り当てるハンドルを別のアプリケーション プロセスに含めることはできません。

適用対象

製品 バージョン
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

こちらもご覧ください