vb.Net 3.0のスクリーンキャプチャクラスに渡すために、IntPtrとしてコントロールのハンドルを取得する必要があります。これを試みましたが、無効なハンドル例外が発生しました。VB.Net 3.0でコントロールのハンドルを取得するにはどうすればよいですか?
Dim hwnd As IntPtr = Runtime.InteropServices.GCHandle.Alloc(CanvasMap)
ご協力いただければ幸いです。
ありがとうございました
vb.Net 3.0のスクリーンキャプチャクラスに渡すために、IntPtrとしてコントロールのハンドルを取得する必要があります。これを試みましたが、無効なハンドル例外が発生しました。VB.Net 3.0でコントロールのハンドルを取得するにはどうすればよいですか?
Dim hwnd As IntPtr = Runtime.InteropServices.GCHandle.Alloc(CanvasMap)
ご協力いただければ幸いです。
ありがとうございました
VB.Netのバージョンはありません。代わりにVS2008に付属のVB.Netのバージョンを参照していますか?もしそうなら、それは実際にはVB.Netバージョン9.0です。彼らはVB6から切り替えるときにバージョン番号をリセットしていない、彼らはちょうど増分を続けた。
これはWinFormsプロジェクトですか?その場合は、CanvasMap.Handleを使用してコントロールにアクセスできます。このプロパティは実際に表示されるまで有効ではありませんが、ほとんどのシナリオでこれが当てはまります。
EDIT OPが、これは私はあなたがWPFアプリケーション内だけで任意のコントロールのためにこれを行うことができますかわからないWPFアプリケーション
で述べました。 WPF(link)のWindowInteropHelperを使用して、Windowインスタンスのハンドルを取得することは可能です。しかし、これは通常のコントロールインスタンスでは機能しません。
なぜハンドルが必要ですか?それはウィンドウを含むハンドルを持つことになりますか?
ctrlSomeControl.Handle
?
CanvasMap.Handleを試してみるとこのエラーが発生します。 'handle'は 'System.Windows.Controls.Canvas'のメンバーではありません。 – user38349
申し訳ありませんが、これはWPFアプリケーションです。 – user38349
彼は.NET 3.0でVB.NETを意味すると思う。 –