使用窗口句柄获取当前活动窗口的路径

时间:2012-07-14 14:27:24

标签: c# winapi

我想知道如何使用C#获取当前活动窗口的路径。

我得到currnet活动窗口的处理

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

        handle = GetForegroundWindow(); 

现在我如何获得此窗口的路径?

即:“我的文档”窗口的路径是

C:\Users\User\Documents

- == - == - ==编辑 - == - == - = -
我想用程序监控“Windows资源管理器”,看看用户去哪了? (即:用户转到c:\然后转到程序文件,然后转到Internet Explorer,我想获得此路径:C:\ Program Files \ Internet Explorer。 enter image description here

2 个答案:

答案 0 :(得分: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);
}

使用handle中的主窗口句柄打印 explorer.exe 实例的标题/路径。

答案 1 :(得分:-1)

使用线程......

bundle install