asp.netページから、ClickOnceデプロイメントによって.Net WinFormsアプリケーションが起動します。 ある時点で、WinFormアプリケーションは、開始されたWebページを更新する必要があります。.Net WinFormsアプリケーションからブラウザのページをプログラムで更新します。
どうすればいいですか? .NETベースのWindowsアプリケーションで、ブラウザで既に開いているページをリフレッシュするにはどうすればよいですか?
asp.netページから、ClickOnceデプロイメントによって.Net WinFormsアプリケーションが起動します。 ある時点で、WinFormアプリケーションは、開始されたWebページを更新する必要があります。.Net WinFormsアプリケーションからブラウザのページをプログラムで更新します。
どうすればいいですか? .NETベースのWindowsアプリケーションで、ブラウザで既に開いているページをリフレッシュするにはどうすればよいですか?
の変形であります堅牢です。たとえば、ユーザーがIEを使用していない可能性があります。
あなたがコントロールするのは、WebページとWindowsアプリケーションに共通するものは、Webサーバーだけです。
このソリューションは複雑ですが、私はそれがうまくいくと考えることができる唯一の方法です。
1)Windowsアプリケーションを実行する前に、Webサーバーに長いポーリング接続を開くようにWebページを取得します。今のところ、SignalRはこれに対して良いプレッシャーを得ています。
2)Webページを更新するときに、サーバーに信号を送信するようにWindowsアプリケーションを取得します。
3)サーバーで、長いポーリング要求を完了し、Webブラウザに信号を送り返します。
4)Webページで、ページを更新して応答を処理します。
私はそれが巻き返したと言った!
は、ここでは、(単に関連部分)必要なものを行うにはいくつかのサンプルコードです:
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
// Get a handle to an application window.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
// Activate an application window.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
private void RefreshExplorer()
{
//You may want to receive the window caption as a parameter...
//hard-coded for now.
// Get a handle to the current instance of IE based on window title.
// Using Google as an example - Window caption when one navigates to google.com
IntPtr explorerHandle = FindWindow("IEFrame", "Google - Windows Internet Explorer");
// Verify that we found the Window.
if (explorerHandle == IntPtr.Zero)
{
MessageBox.Show("Didn't find an instance of IE");
return;
}
SetForegroundWindow(explorerHandle);
//Refresh the page
SendKeys.Send("{F5}"); //The page will refresh.
}
}
}
注:コードは、これはそのように行うのは簡単ではありませんthis MSDN example.
実際にWebブラウザをWinFormsアプリケーションから制御する必要がある場合は、おそらく 'WebBrowser'コントロールを使用しているはずです。 – jrummell
WinFormアプリケーションは、問題のWebページが属するWebサイトが提供している機能のほんの一部を提供しています。だから不幸なことに、オプションではなく、ありがとう! – Tulinside