2011-03-02 66 views
1

我使用SetWindowText函數功能重新命名它似乎與Windows程序,如「記事本」工作的窗口標題,但通過其他第三方程序它不是working.I我抓住窗口句柄嘗試時Process..MainWindowHandle。我想產卵Firefox和重命名它的窗口標題,這是我的要求。進程正在啓動,但窗口標題重命名沒有發生我收到「發送錯誤報告」對話窗口。請幫我out.Below是代碼。無法重命名窗口標題文本通過SetWindowText函數功能

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) 
    } 
} 
+0

你說的「它不工作」是什麼意思?你得到一個錯誤,或窗口文本沒有改變?您很可能會更改與主瀏覽器UI不同的窗口,因此您的新標題未能反映在您希望看到的位置。 – 2011-03-02 11:27:15

+0

我得到一個錯誤(發送報告對話窗口)窗口文本也沒有改變。我想要的是改變通過Process.Start生成的窗口的窗口標題。我可以做那個..? – user641057 2011-03-03 09:47:38

回答

1

很多程序在執行過程中都會重複設置主窗口標題。

一個很好的例子就是火狐當你瀏覽到一個新的頁面改變其主窗口標題。同樣,無論何時打開或保存文件以包含最新文件的名稱,記事本都會更改其主窗口標題。

你實際上能指望施加控制這樣是輪詢的唯一途徑。

+0

有些人可以發佈樣本代碼嗎?笏讓我困惑的是,如果它與記事本一起工作,而不是與Firefox?我的目標流程是Firefox或Chrome瀏覽器,我希望其標題已更改。爲了使用FindWindow,然後使用Setwindowtext,我該如何找到process.start產生的最新窗口。這就是我面臨的問題。我只想更改最新窗口的窗口標題。 – user641057 2011-03-03 09:54:36

+1

@user您正在嘗試執行的操作不起作用。只要用戶瀏覽其他地方,Firefox就會覆蓋您設置的任何值。如果你能解釋你爲什麼要這麼做,那真的很有用。在改變其他程序窗口標題時捅擾是不正常的。 – 2011-03-03 10:18:32

0

可能會出現問題,因爲在幾道工序火狐,谷歌,IE工作在不同的頁面彼此隔離,因此,如果一個選項卡崩潰,對方就會還活着。打開Windows任務管理器以確保。 (歌劇仍然沒有,但功能已經計劃在未來的版本)。 您可能的解決方案是枚舉名稱爲「firefox.exe」的所有進程,並更改符合某些條件的窗口的窗口標題。