※ ChatGPTを利用し、要約された質問です(原文:ファイルオープンの際のウィンドウハンドルの取得方法)
ファイルオープンの方法とウィンドウハンドルの取得方法
このQ&Aのポイント
VC++2008にてプログラムを作成し、ShellExecute関数を使用してファイルをオープンする方法を知りたい。
開かれたファイルウィンドウのHWNDまたはCWndを取得する方法を知りたい。
複数ファイルをオープンさせて、各ファイルが閉じられた時に任意の処理を行いたい。
ファイルオープンの際のウィンドウハンドルの取得方法
VC++2008にてプログラムを作成しています。
自作プログラム(疑似エクスプローラ)にて、
ShellExecute関数でファイルをオープンさせた際に、
開かれたファイルウィンドウのHWNDまたはCWndを
取得したいのですが、実現方法が分かりません。
・やりたい事
複数ファイルをオープンさせて、各ファイルが閉じられた時に、
ファイル毎に任意の処理を行いたい。
マルチスレッドにて、CreateProcess→ファイルオープンを行い、
WaitForSingleObjectで、ファイルが閉じられるまで待機し、
コントロールが戻ってきたら、任意処理をするようにしていたのですが、
PowerPointファイルは複数ファイルを立ち上げても、
1プロセスにしかならないため、実装の変更を余儀なくされました。
CWnd->m_hWndで、各ファイルの区別が付けられるのではないかと
考え、現在、テスト用処理を組んでいるところです。
ファイルが閉じられたかどうかは、APIフックを用い、
DestroyWindowが呼ばれた際のHWNDを、自作プログラム側に送り、
ShellExecute時に取得しておいたHWND(またはCWnd)であれば、
任意処理へ移行。といった流れを考えています。
ShellExecute時に立ち上がったファイルのハンドルの
取得方法、または、全く別に、上記の目的を満たす
処理方法がありましたら、アドバイスお願いします。
お礼
返答がかなり遅れてしまい、申し訳ありませんでした。 FindWindowで取得するにも、同名ファイルが複数開かれていた場合 目的のファイルを取得できるとは限らないため、 Add-inを作成して、データの受け渡しができるよう考えてみます