4

C# を使用して現在アクティブなウィンドウのパスを取得する方法を知りたいです。

現在のアクティブなウィンドウのハンドルを取得します

        const int nChars = 256;
        int handle = 0;
        StringBuilder Buff = new StringBuilder(nChars);

        handle = GetForegroundWindow(); 

このウィンドウのパスを取得するにはどうすればよいですか?

つまり、「マイドキュメント」ウィンドウのパスは

C:\Users\User\Documents

-=-=-==-=-=edit-=-=-=-=-=-
プログラムを作成して、「Windows エクスプローラー」を監視し、ユーザーの移動先を確認したい
(つまり、ユーザーは c:\ に移動し、次にプログラム ファイルに移動し、次に Internet Explorer に移動します。このパスを取得したい: C:\Program Files\Internet Explorer. ここに画像の説明を入力

4

2 に答える 2

7

「Microsoft Internet Controls」への参照 (COM) を追加します。

var explorer = new SHDocVw.ShellWindowsClass().Cast<SHDocVw.InternetExplorer>().Where(hwnd => hwnd.HWND == handle).FirstOrDefault();
if (explorer != null) {
    string path = new Uri(explorer.LocationURL).LocalPath;
    Console.WriteLine("name={0}, path={1}", explorer.LocationName, path);
}

のメイン ウィンドウ ハンドルを使用して、 explorer.exeインスタンスのタイトル/パスを出力しますhandle

于 2012-07-14T18:04:41.697 に答える
-1

糸を使って…

                Exception threadEccezione = null;

                System.Threading.Thread staThread = new System.Threading.Thread(
                        delegate()
                        {
                            try
                            {
                                //SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
                                var explorer = new SHDocVw.ShellWindowsClass().Cast<SHDocVw.InternetExplorer>().Where(hwnd => hwnd.HWND == handle).FirstOrDefault();

                                if (explorer != null)
                                {
                                    string path = new Uri(explorer.LocationURL).LocalPath;
                                    MessageBox.Show(path);
                                }
                            }
                            catch (Exception ex)
                            {
                                threadEccezione = ex;
                            }
                        }
                    );
                ;
                staThread.Start();
                staThread.Join();
于 2015-06-30T20:01:24.280 に答える