23

Internet Explorer のインスタンスを生成するサードパーティ クラスを使用しています。このクラスには、プロセスの hWnd を返すプロパティ hWnd があります。

後で、アプリケーションのインスタンスがまだ存在する場合は再利用したい場合があるため、ヘルパー クラスにアタッチするように指示する必要があります。それを行う前に、指定された hWnd がまだ有効かどうかを知りたいです。そうでない場合は、別のインスタンスを生成します。

C# & .NET 3.5 でこれを行うにはどうすればよいですか?

4

1 に答える 1

38

ウィンドウハンドルの場合は、isWindow(hWnd);

msdnから:

戻り値

BOOL

ウィンドウハンドルが既存のウィンドウを識別する場合、戻り値はゼロ以外です。

ウィンドウハンドルが既存のウィンドウを識別しない場合、戻り値はゼロです。備考

この関数が呼び出された後にウィンドウが破壊される可能性があるため、スレッドは、作成されなかったウィンドウにIsWindowを使用しないでください。さらに、ウィンドウハンドルはリサイクルされるため、ハンドルが別のウィンドウを指すこともあります。

ちなみに、.NETを使用しているので、次のようなことを行う必要があります。

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindow(IntPtr hWnd);
于 2010-04-29T16:26:26.990 に答える