我正在运行一个小工具(在 Windows 7、32 位上),我想查看在我尝试过的另一个应用程序中打开了什么文档,它适用于 Windows 上的记事本。
var myProcess = Process.GetProcessesByName("NotePad");
string title = myProcess[0].MainWindowTitle;
MessageBox.Show(title);
输出是:
"New Text Document - Notepad"
现在,如果我尝试另一个应用程序,它并不总是给我正确的标题,但我注意到大多数微软应用程序似乎都很好——记事本、写字板、EXCEL 等。这是另一个软件的问题。它的标题很长,但只返回一个非常简单的名称。
这是我从具有 processName = "FooBar"的应用程序中得到 的实际运行窗口的顶部是:
“FooBar 软件版本 1.2 - [结果]”
我的代码给出:
“美食吧”
有任何想法吗?
[编辑} 2012-11-19 这个问题的症结在于我试图从窗口中获取打开文件的名称。现在看来我使用的软件没有在那里显示。我发现一个名为“AutoIT3 Window Spy”的程序可以获得我需要的文本,因为打开文件的文本在窗口上,而不仅仅是在标题中。我下载了源代码(它是开源的http://www.autohotkey.com/的一部分。它似乎依赖于已经提出的许多建议,但我还不能弄清楚。)源我正在查看的代码是 c++,位于此处https://github.com/AutoHotkey/AutoHotkey
所以我认为我的问题的解决方案可能在别处。这个可能没有答案。