ユーザーがボタンをクリックしたときに URL を起動するなど、プロセスを開始するにはどうすればよいですか?
13 に答える
Matt Hamiltonが提案しているように、プロセスの制御が制限されている場合の迅速なアプローチは、System.Diagnostics.Processクラスで静的なStartメソッドを使用することです。
using System.Diagnostics;
...
Process.Start("process.exe");
別の方法は、Processクラスのインスタンスを使用することです。これにより、スケジューリング、実行するウィンドウのタイプ、そしてプロセスが終了するのを待つ機能など、プロセスをより細かく制御できます。
using System.Diagnostics;
...
Process process = new Process();
// Configure the process using the StartInfo properties.
process.StartInfo.FileName = "process.exe";
process.StartInfo.Arguments = "-n";
process.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
process.Start();
process.WaitForExit();// Waits here for the process to exit.
この方法では、私が述べたよりもはるかに多くの制御が可能です。
System.Diagnostics.Process.Startメソッドを使用して、プロセスを開始できます。URL を文字列として渡すこともでき、デフォルトのブラウザが起動します。
Matt が言うように、Process.Startを使用します。
URL またはドキュメントを渡すことができます。それらは、登録されたアプリケーションによって開始されます。
例:
Process.Start("Test.Txt");
これにより、Text.Txt が読み込まれた Notepad.exe が起動します。
私は自分のプログラムで以下を使用しました。
Process.Start("http://www.google.com/etc/etc/test.txt")
それは少し基本的ですが、私にとってはうまくいきます。
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));
次の構文を使用して、任意のアプリケーションを実行できます。
System.Diagnostics.Process.Start("Example.exe");
URL の場合も同じです。この の間に URL を書くだけ()
です。
例:
System.Diagnostics.Process.Start("http://www.google.com");
Processクラスを使用します。MSDN のドキュメントには、使用方法の例があります。
これを宣言する
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
これを関数内に配置します (「checkInstalled」はオプションですが、使用する場合は実装する必要があることに注意してください)。
if (ckeckInstalled("example"))
{
int count = Process.GetProcessesByName("example").Count();
if (count < 1)
Process.Start("example.exe");
else
{
var proc = Process.GetProcessesByName("example").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
{
SetForegroundWindow(proc.MainWindowHandle);
ShowWindowAsync(proc.MainWindowHandle, 3);
}
}
}
注: .exe の複数のインスタンスが実行されているときにこれが機能するかどうかはわかりません。
Windowsで使用する場合
Process process = new Process();
process.StartInfo.FileName = "Test.txt";
process.Start();
.Net Framework で動作しますが、Net core 3.1 では UseShellExecute を true に設定する必要もあります
Process process = new Process();
process.StartInfo.FileName = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();
を含めます using System.Diagnostics;
。
そして、これを呼び出しますProcess.Start("Paste your URL string here!");
次のようなことを試してください:
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
namespace btnproce
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string t ="Balotelli";
Process.Start("http://google.com/search?q=" + t);
}
}
}
例として、これはサンプルの ASP.NET ページであることに注意してください。ちょっと即興でやってみるといいよ。