c# – 为什么另一个应用程序窗口的标题中的文本不正确?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 为什么另一个应用程序窗口的标题中的文本不正确?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2092字,纯文字阅读大概需要3分钟。
内容图文
![c# – 为什么另一个应用程序窗口的标题中的文本不正确?](/upload/InfoBanner/zyjiaocheng/777/c1568f2665194a58b6b1dae3241d81fe.jpg)
我正在运行一个小工具(在Windows 7,32位上),我想看看在我尝试过的另一个应用程序中打开了哪个文档,这适用于Windows上的NotePad.
var myProcess = Process.GetProcessesByName("NotePad");
string title = myProcess[0].MainWindowTitle;
MessageBox.Show(title);
输出是:
"New Text Document - Notepad"
现在,如果我尝试另一个应用程序它并不总是给我正确的标题,但我注意到大多数微软的应用程序似乎很好 – NotePad,写字板,EXCEL等.这是另一个问题的软件.它有一个很长的标题,但只返回一个非常简单的名称.
这是我从我的应用程序获得的processName =“FooBar”
实际运行的窗口有这个顶部:
“FooBar Software Verson 1.2 – [Results]”
我的代码给出:
“FooBar”
有任何想法吗?
[编辑] 2012-11-19
这个问题的关键在于我试图从窗口中获取打开文件的名称.现在看来我正在使用的软件没有在那里显示它.我发现一个叫做“AutoIT3 Window Spy”的程序可以得到我需要的文本,因为打开文件的文本在窗口上,而不仅仅是在标题中.我下载了源代码(它是http://www.autohotkey.com/的一部分,它是开源的.它似乎依赖于已经提出的许多建议,但我还不能解决它.)我看的源代码是c并且位于这里https://github.com/AutoHotkey/AutoHotkey
所以我认为我的问题的解决方案可能在其他地方.这个可能没有答案.
解决方法:
主窗口标题是您在进入任务管理器并查看“描述”列时看到的内容,而不是窗口标题本身.
它是流程的标题,而不是流程中特定窗口的标题.给定进程可以一次打开任意数量的窗口.
如果你需要实际的窗口标题,你必须挂钩user32这样的东西:
using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Security;
namespace Application
{
public class Program
{
public static void Main ( )
{
IntPtr hwnd = UnsafeNativeMethods.FindWindow("Notepad", null);
StringBuilder stringBuilder = new StringBuilder(256);
UnsafeNativeMethods.GetWindowText(hwnd, stringBuilder, stringBuilder.Capacity);
Console.WriteLine(stringBuilder.ToString());
}
}
[SuppressUnmanagedCodeSecurity]
internal static class UnsafeNativeMethods
{
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
internal static extern int GetWindowText ( IntPtr hWnd, [Out] StringBuilder lpString, int nMaxCount );
[DllImport("user32.dll", SetLastError = true)]
internal static extern IntPtr FindWindow ( string lpClassName, string lpWindowName );
}
}
内容总结
以上是互联网集市为您收集整理的c# – 为什么另一个应用程序窗口的标题中的文本不正确?全部内容,希望文章能够帮你解决c# – 为什么另一个应用程序窗口的标题中的文本不正确?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。