Невозможно переименовать текст заголовка окна с помощью функции SetWindowText - PullRequest
1 голос
/ 02 марта 2011

Я использую функцию SetWindowText для переименования Заголовка окна, кажется, что он работает с программой Windows, такой как «Блокнот», но при попытке с другой сторонней программой это не работает. Я пытаюсь захватить дескриптор окна через 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)
    }
}

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Многие программы многократно устанавливают заголовки своих главных окон во время выполнения.

Хорошим примером является Firefox, который меняет заголовок главного окна всякий раз, когда вы переходите на новую страницу. Аналогично, Блокнот изменяет заголовок своего главного окна всякий раз, когда вы открываете или сохраняете файл, чтобы включить в него имя самого последнего файла.

Единственный способ, которым вы реально можете ожидать, чтобы осуществлять контроль, как это, это опрос.

0 голосов
/ 14 июня 2011

Проблема может возникнуть из-за того, что Firefox, Google, IE работают в нескольких процессах, чтобы изолировать разные страницы друг от друга, поэтому, если одна вкладка выходит из строя, другая все еще остается активной.Откройте диспетчер задач Windows, чтобы убедиться.(Opera по-прежнему не работает, но функция уже запланирована на будущие выпуски).Возможное решение для вас - перечислить все процессы с именем «firefox.exe», например, и изменить заголовки окон, соответствующие некоторым вашим критериям.

...