1

我正在使用 SetWindowText 函数重命名窗口标题,它似乎可以与“记事本”之类的 Windows 程序一起使用,但是在尝试使用其他 3rd 方程序时它不起作用。我正在通过 Process..MainWindowHandle 获取窗口句柄。我想生成 firefox 并重命名它的窗口标题这是我的要求。进程正在启动,但窗口标题重命名没有发生我得到“发送错误报告”对话框窗口。请帮帮我。下面是代码。

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)
    }
}
4

2 回答 2

1

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

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

您可以真正期望像这样施加控制的唯一方法是轮询。

于 2011-03-02T17:35:31.220 回答
0

出现这个问题的原因可能是 Firefox、google、IE 在几个进程中工作以将不同的页面相互隔离,因此如果一个选项卡崩溃,另一个选项卡仍然存在。打开 Windows 任务管理器以确保。(Opera 仍然没有,但这些功能已经计划在未来的版本中使用)。例如,您可能的解决方案是枚举名称为“firefox.exe”的所有进程,并更改与您的某些条件匹配的窗口的窗口标题。

于 2011-06-14T09:59:57.943 回答