2014-01-07 119 views
2

我想知道是否可以通過單擊一個winform應用程序中的按鈕來刷新網頁。以編程方式刷新網頁

我有一種形式,當按下按鈕啓動一個進程並在瀏覽器窗口中顯示一個網頁,並且當我按下另一個按鈕而不是打開另一個窗口時,我想刷新它。

可能嗎?

我已經查看過這個問題stackoverflow但是因此它刷新了我已經打過電話的文件?

我推出的網頁是這樣的:

string path = Directory.GetParent(Directory.GetCurrentDirectory()) 
         .Parent.FullName; 
string target = @"DashBoard.html"; 
string finalPath = Path.Combine(path, target); 
System.Diagnostics.Process.Start(finalPath); 

我已經檢查了該問題的解決方案之一,我理解,但我無法找到是,如果有一種方法,它會與所有瀏覽器。

任何提示?

+0

您提供的鏈接將允許服務器發信號通知客戶端刷新。您似乎只想從客戶端啓動Web瀏覽器,然後發送刷新。那是對的嗎? – paqogomez

+0

你如何打開瀏覽器窗口? –

+0

這個問題似乎有一個體面的答案。取決於你的環境,可能會有更好的解決方法。您是否控制啓動哪個Web瀏覽器來查看網頁?也就是說,它總是啓動Internet Explorer,或者它可能會在Chrome/Firefox /無論用戶的默認瀏覽器是什麼時候啓動? –

回答

0

我能夠找到一個解決方案,這是我所創建

private void RefreshPage() 
{ 
    int count = 0; 
    IntPtr[] explorerHandle = new IntPtr[4] { 
     FindWindow(null, "DashBoard - Google Chrome"), 
     FindWindow(null, "DashBoard - Internet Explorer"), 
     FindWindow(null, "DashBoard - Opera"), 
     FindWindow(null, "DashBoard - Firefox") 
    }; 

    foreach (IntPtr value in explorerHandle) 
    { 
     if (value != IntPtr.Zero) 
     { 
      count++; 
      SetForegroundWindow(value); 
      SendKeys.Send("{F5}"); 
     } 
    } 
    if(count == 0) 
     System.Diagnostics.Process.Start("http://localhost:9000/DashBoard.html"); 
} 
功能

感謝您的幫助

2

這可能是一個壞主意,你應該看看試圖讓網頁以某種方式刷新自己。

或者 - 你可以看看在Chrome API - (假設你只是想針對鉻?)

http://dev.chromium.org/developers

作爲最後一招 - 你總是可以殺死現有的瀏覽器進程 - 並打開新:

var process = System.Diagnostics.Process.Start(finalPath); 

//When refresh wanted: 
process.Close(); 
//open again 
var process = System.Diagnostics.Process.Start(finalPath); 
+0

但我不能限制自己只使用鉻 – user3060735

相關問題