
VC++2008にてプログラムを作成しています。
自作プログラム(疑似エクスプローラ)にて、
ShellExecute関数でファイルをオープンさせた際に、
開かれたファイルウィンドウのHWNDまたはCWndを
取得したいのですが、実現方法が分かりません。
・やりたい事
複数ファイルをオープンさせて、各ファイルが閉じられた時に、
ファイル毎に任意の処理を行いたい。
マルチスレッドにて、CreateProcess→ファイルオープンを行い、
WaitForSingleObjectで、ファイルが閉じられるまで待機し、
コントロールが戻ってきたら、任意処理をするようにしていたのですが、
PowerPointファイルは複数ファイルを立ち上げても、
1プロセスにしかならないため、実装の変更を余儀なくされました。
CWnd->m_hWndで、各ファイルの区別が付けられるのではないかと
考え、現在、テスト用処理を組んでいるところです。
ファイルが閉じられたかどうかは、APIフックを用い、
DestroyWindowが呼ばれた際のHWNDを、自作プログラム側に送り、
ShellExecute時に取得しておいたHWND(またはCWnd)であれば、
任意処理へ移行。といった流れを考えています。
ShellExecute時に立ち上がったファイルのハンドルの
取得方法、または、全く別に、上記の目的を満たす
処理方法がありましたら、アドバイスお願いします。
No.1ベストアンサー
- 回答日時:
ShellExecuteは指定プロセスの初期化が成功すると、制御が戻ります。
この時(制御が戻った時)、ウィンドウが開かれているかどうかは
不定です。(ウィンドウの無いアプリケーションだってある)
なので、根本的な考え方を改める必要がありそうです。
FindWindow、EnumChildWindowsあたりで該当ウィンドウを得ることが
できるとは思います。ただ、見つけるまでが面倒です。
返答がかなり遅れてしまい、申し訳ありませんでした。
FindWindowで取得するにも、同名ファイルが複数開かれていた場合
目的のファイルを取得できるとは限らないため、
Add-inを作成して、データの受け渡しができるよう考えてみます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
Thunderbirdでemlファイルを開...
-
ファイル名の先頭にアンダース...
-
jwsファイルが開けない!
-
分割コンパイルの#defineについて
-
セマフォの使い方
-
クリップボードから任意のファ...
-
「JAVAプログラミング」空白の...
-
VBAにてEXCEL以外のファイル(テ...
-
VBに、Cのincludeのようなもの...
-
VB.NETでファイル操作
-
lseekって
-
iniファイルをexeファイルと同...
-
インターネットショートカット
-
WAVファイル同士の結合が可...
-
VBAでHTMLファイルを扱うにはど...
-
富士通COBOLの画面定義について
-
CSVファイルへの保存の際、デー...
-
ルーチンとライブラリについて。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
ファイル名の先頭にアンダース...
-
csvファイルを開かずに文字を検...
-
VB.NETによるプロセス間通信
-
営業秘密の漏洩について
-
Thunderbirdでemlファイルを開...
-
ドラッグアンドドロップでファ...
-
CSVファイルへの保存の際、デー...
-
バッチで118項目のCSVを処理し...
-
SGファイルって何ですか?
-
ファイルの結合
-
分割コンパイルの#defineについて
-
VBAにてEXCEL以外のファイル(テ...
-
2つのCSVファイルの比較
-
ShellExecuteEx→WaitForSingleO...
-
VBに、Cのincludeのようなもの...
-
RPGでファイル名(もしくはレコ...
-
マウスポインタの変更
-
Excelマクロでの再読込み方法
-
関数の呼び方について
おすすめ情報