私のC#dllにメソッドを呼び出すソフトウェアがあります。このdllメソッドでは、dllを呼び出したプログラム/ウィンドウのウィンドウハンドルが必要です。
この「呼び出しウィンドウハンドル」を取得する方法は?
ありがとう!
できません:ウィンドウはメソッドを呼び出さず、コードはメソッドを呼び出します。
理想的には、ウィンドウハンドルパラメータをメソッドに追加する必要があります。それが絶対に不可能な場合は、たとえばGetActiveWindow
API関数を使用して、現在のスレッドでウィンドウをアクティブにすることができます。これが機能することは保証されていません。開いているウィンドウがない可能性があります。
何のためにウィンドウハンドルが必要ですか?
これにより、メインウィンドウのハンドルを返すことができます。
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
私が知っているように、それはFormオブジェクトにすぎないので、具体的なウィンドウを取得する方法はありません。ただし、FormクラスにはプロパティがありますHandle
。dllメソッド呼び出しの引数として渡すことができます。