現在ユーザがどこのディレクトリを見ているか知るには?

解決


karasu  2011-01-17 19:25:00  No: 72194

はじめまして
開発環境はVC++ 2008 SDKのみです

質問内容として

ユーザのアクティブな画面がエクスプローラーの場合パスを取得するにはどうすればいいのか?

ユーザがCドライブ直下を開いていた場合
C:
を取得したいのです

ご教授のほどよろしくお願いします


オショウ  2011-01-18 02:55:27  No: 72195

OSは何でしょうか?

タスクマネージャを開けば、Explorerが起動した折のパス
情報が表示されてますので、解ると思うのですが・・・

あくまでExplorerの挙動のみとするならば、プロセス一覧
を取得し、各々のプロセス情報からExplorerだけを探して
やれば、なんとかなるような〜

以上。参考まで


gak  2011-01-18 02:59:12  No: 72196

> エクスプローラーの場合パスを取得するにはどうすればいいのか?
shdocvw.dll を利用してエクスプローラに辿り着ければなんとかなるんじゃね。
と思ったけど、やっぱ何とかなりそうな感じ。

http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200609/06090045.txt
此処の過去ログにBlueさんが書いたコードがあった。これを参考(というかほぼ解答)にすれば実装可かと。

> ユーザのアクティブな画面が
IWebBrowser2::HWND でウィンドウハンドル取れるから、アクティブかどうかはコイツから判断可かと。


karasu  2011-01-19 19:53:23  No: 72197

ご解答ありがとうございます

>>オショウさん
開発OSはvista Business SP2 です
使用環境にXPと7も視野に入れております(とりあえず上記環境で)

>>gakさん
参照URLから  COMを実装して任意のフォルダをエクスプローラー
で開くことには成功しました。
しかし、プログラムでフォルダを開くのではなく
すでに開かれているフォルダのパスを取得したいのです。

>>IWebBrowser2::HWND でウィンドウハンドル取れるから、アクティブかどうかはコイツから判断可かと。

調べてみたのですが使い方がわかりません・・・
ご教授のほどよろしくお願いいたします。


karasu  2011-01-19 22:39:55  No: 72198

>>gakさん
見当違いな返信をしてしまい申し訳ありません。

エクスプローラーで開いているフォルダのパスを取得することは
出来ていました。

アクティブなウィンドウについてはいまだわかっていません・・・


gak  2011-01-20 03:15:44  No: 72199

> アクティブなウィンドウについてはいまだわかっていません・・・
アクティブなウィンドウをどう定義するかにもよるだろうが、多くのケースに措いては
「GetForegroundWindow() で返されるウィンドウ」
として良いんではなかろうか。

この場合、

    // SHDocVw::IWebBrowser2Ptr ie;
    if (HWND(ie->HWND) == ::GetForegroundWindow()) {
        :
    }

という条件文を入れてやればイケるんじゃなイカ?


karasu  2011-01-21 23:55:42  No: 72200

gakさん

ご丁寧にありがとうございます。
やりたいことは出来るようになりましたので解決に致します。

しかしバグが出るように・・・・質問タイトルとは違う件なので
新たな質問をさせて頂きます。

ご教授ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加