- PR -

[C#] アクティブウィンドウの作業ディレクトリ取得について

投稿者投稿内容
よこい
会議室デビュー日: 2003/08/22
投稿数: 7
投稿日時: 2009-01-22 15:58
はじめまして。質問させて頂きます。
掲題の通り、C# でアクティブウィンドウの作業ディレクトリを
取得したいのですが、その方法がわからず困っております。
そもそも可能なのでしょうか?

.NET 初心者で初歩的な質問となり恐縮ですが、
どうぞ宜しくお願いします。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2009-01-22 17:31
引用:

よこいさんの書き込み (2009-01-22 15:58) より:
はじめまして。質問させて頂きます。
掲題の通り、C# でアクティブウィンドウの作業ディレクトリを
取得したいのですが、その方法がわからず困っております。
そもそも可能なのでしょうか?



「アクティブウィンドウの作業ディレクトリ」とは何を指していますか?

カレントディレクトリでいいなら、
Directory.GetCurrentDirectory メソッド
で取得できます。

よこい
会議室デビュー日: 2003/08/22
投稿数: 7
投稿日時: 2009-01-22 17:37
よねKENさん
御返答ありがとうございます。

カレントディレクトリであれば、ご指摘の通りなのですが、
作成したアプリケーション自身ではなく、現在アクティブになっている、
アプリケーションの作業ディレクトリを取得したいと考えております。
C#で作成したアプリケーションがバックグラウンドで動作し、
アクティブなアプリケーションの作業ディレクトリを監視するようなイメージです。

不明瞭な記載でご迷惑をお掛けいたしますが、どうぞ宜しくお願いします。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-22 17:44
引用:

よこいさんの書き込み (2009-01-22 17:37) より:

カレントディレクトリであれば、ご指摘の通りなのですが、
作成したアプリケーション自身ではなく、現在アクティブになっている、
アプリケーションの作業ディレクトリを取得したいと考えております。
C#で作成したアプリケーションがバックグラウンドで動作し、
アクティブなアプリケーションの作業ディレクトリを監視するようなイメージです。


それで結局、「アクティブウィンドウの作業ディレクトリ」とは何を指していますか?
例えばメモ帳や電卓がアクティブになっていたとして、作業ディレクトリとして何を取得したいのですか?
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-01-22 17:57
電卓なら
C:\WINDOWS\System32
メモ帳は
%HOMEDRIVE%%HOMEPATH%

(プログラムメニューのアイコンのプロパティより)

を取得したという意図でしょうか。
.NETは良く判っていませんが
プロセス間通信で、各ウィンドウのプロセスに
問い合わせれば取得できそうな気がします。
よこい
会議室デビュー日: 2003/08/22
投稿数: 7
投稿日時: 2009-01-22 18:13
rain さん、あすかさん、ご返答どうもありがとうございます。

よねKENさんより
「カレントディレクトリでいいなら、Directory.GetCurrentDirectory メソッド」
とありました通り、どのようなアプリケーションも作業ディレクトリを持っている
(何らかのディレクトリが、Directory.SetCurrentDirectory されている)
と思っておりまして、それらを外部から取得するのは可能なのかな?というところが
知りたかったために、質問させて頂いております。

確かに電卓のような、ローカルディスク(ディレクトリ)に影響を与えないような
アプリケーションである場合、あまり意識する必要はないかとは思いますが。。

どうぞ宜しくお願い致します。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2009-01-22 18:45
作業ディレクトリ=カレントディレクトリ という前提で話をします。

引用:

よこいさんの書き込み (2009-01-22 18:13) より:

よねKENさんより
「カレントディレクトリでいいなら、Directory.GetCurrentDirectory メソッド」
とありました通り、どのようなアプリケーションも作業ディレクトリを持っている
(何らかのディレクトリが、Directory.SetCurrentDirectory されている)
と思っておりまして、


どうやら、その推測は正しいようです。
http://d.hatena.ne.jp/NyaRuRu/20070808/p1
http://d.hatena.ne.jp/NyaRuRu/20070808/p2

引用:

それらを外部から取得するのは可能なのかな?というところが
知りたかったために、質問させて頂いております。


可能か不可能かでいえば、おそらく可能だとは思います。

どうすれば可能かは私には言えませんが、Win32 API の GetCurrentDirectory() を使うことで、もしかしたらできるかもしれません。
よこい
会議室デビュー日: 2003/08/22
投稿数: 7
投稿日時: 2009-01-22 19:01
rain さん、ご返答ありがとうございます。

引用:

rainさんの書き込み (2009-01-22 18:45) より:
作業ディレクトリ=カレントディレクトリ という前提で話をします。


用語の定義がバラついており、申し訳ありません。
以降、カレントディレクトリに統一させて頂きます。

引用:

どうやら、その推測は正しいようです。
http://d.hatena.ne.jp/NyaRuRu/20070808/p1
http://d.hatena.ne.jp/NyaRuRu/20070808/p2

可能か不可能かでいえば、おそらく可能だとは思います。

どうすれば可能かは私には言えませんが、Win32 API の GetCurrentDirectory() を使うことで、もしかしたらできるかもしれません。


添付頂いたURLを参照させて頂きましたが、確かに記載のアプリケーションを
見ていると、カレントディレクトリの取得もできそうですよね。。
自分でも、もう少し調べてみたいと思います。どうもありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)