无法通过SetWindowText函数重命名窗口标题文本

时间:2011-03-02 11:18:19

标签: process c#-2.0 process.start

我正在使用SetWindowText函数重命名Window Title它似乎与Windows程序一样使用“notepad”,但是在尝试使用其他第三方程序时它无法工作。我正在通过Process..MainWindowHandle抓取窗口句柄。我想生成firefox并重命名它的窗口标题这是我的要求。进程正在启动但是窗口标题重命名没有发生我正在收到“发送错误报告”对话框窗口。请帮助我.Below是代码。

using System;
using Microsoft.Win32;
using System.Runtime.InteropServices;
using System.Threading;
using System.Diagnostics;
namespace SampleNamespace
{
    public class SampleClass
    {
      [DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);

  public static void Main()
        {

   Process p = Process.Start("C:\\Sham\\pg\\Firefox\\firefox.exe");
    Thread.Sleep(1000);
    SetWindowText(p.MainWindowHandle, "FireFox via Process-Start");
        } // End of Main function (program statup)
    }
}

2 个答案:

答案 0 :(得分:1)

许多程序在执行过程中反复设置主窗口标题。

一个很好的例子是Firefox,每当您浏览新页面时,它都会更改其主窗口标题。同样,只要打开或保存文件以包含最新文件的名称,记事本就会更改其主窗口标题。

你可以实际期望实现这样的控制的唯一方法是进行民意调查。

答案 1 :(得分:0)

可能会出现问题,因为Firefox,谷歌,IE在几个进程中工作以隔离彼此不同的页面,因此如果一个选项卡崩溃,另一个仍然存活。打开Windows任务管理器以确保。 (Opera仍然没有,但是这个功能已经计划用于未来版本)。 可能的解决方案是枚举所有名为'firefox.exe'的进程,并更改符合某些条件的窗口标题。