はじめまして
開発環境はVC++ 2008 SDKのみです
質問内容として
ユーザのアクティブな画面がエクスプローラーの場合パスを取得するにはどうすればいいのか?
ユーザがCドライブ直下を開いていた場合
C:
を取得したいのです
ご教授のほどよろしくお願いします
OSは何でしょうか?
タスクマネージャを開けば、Explorerが起動した折のパス
情報が表示されてますので、解ると思うのですが・・・
あくまでExplorerの挙動のみとするならば、プロセス一覧
を取得し、各々のプロセス情報からExplorerだけを探して
やれば、なんとかなるような〜
以上。参考まで
> エクスプローラーの場合パスを取得するにはどうすればいいのか?
shdocvw.dll を利用してエクスプローラに辿り着ければなんとかなるんじゃね。
と思ったけど、やっぱ何とかなりそうな感じ。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200609/06090045.txt
此処の過去ログにBlueさんが書いたコードがあった。これを参考(というかほぼ解答)にすれば実装可かと。
> ユーザのアクティブな画面が
IWebBrowser2::HWND でウィンドウハンドル取れるから、アクティブかどうかはコイツから判断可かと。
ご解答ありがとうございます
>>オショウさん
開発OSはvista Business SP2 です
使用環境にXPと7も視野に入れております(とりあえず上記環境で)
>>gakさん
参照URLから COMを実装して任意のフォルダをエクスプローラー
で開くことには成功しました。
しかし、プログラムでフォルダを開くのではなく
すでに開かれているフォルダのパスを取得したいのです。
>>IWebBrowser2::HWND でウィンドウハンドル取れるから、アクティブかどうかはコイツから判断可かと。
調べてみたのですが使い方がわかりません・・・
ご教授のほどよろしくお願いいたします。
>>gakさん
見当違いな返信をしてしまい申し訳ありません。
エクスプローラーで開いているフォルダのパスを取得することは
出来ていました。
アクティブなウィンドウについてはいまだわかっていません・・・
> アクティブなウィンドウについてはいまだわかっていません・・・
アクティブなウィンドウをどう定義するかにもよるだろうが、多くのケースに措いては
「GetForegroundWindow() で返されるウィンドウ」
として良いんではなかろうか。
この場合、
// SHDocVw::IWebBrowser2Ptr ie;
if (HWND(ie->HWND) == ::GetForegroundWindow()) {
:
}
という条件文を入れてやればイケるんじゃなイカ?
gakさん
ご丁寧にありがとうございます。
やりたいことは出来るようになりましたので解決に致します。
しかしバグが出るように・・・・質問タイトルとは違う件なので
新たな質問をさせて頂きます。
ご教授ありがとうございました。