Jak rozpocząć proces, taki jak uruchomienie adresu URL, gdy użytkownik kliknie przycisk?
Jak rozpocząć proces, taki jak uruchomienie adresu URL, gdy użytkownik kliknie przycisk?
Odpowiedzi:
Jak sugeruje Matt Hamilton, szybkim podejściem, w którym masz ograniczoną kontrolę nad procesem, jest użycie statycznej metody Start w klasie System.Diagnostics.Process ...
using System.Diagnostics;
...
Process.Start("process.exe");
Alternatywą jest użycie instancji klasy Process. Pozwala to na znacznie większą kontrolę nad procesem, w tym nad harmonogramem, rodzajem okna, w którym będzie działać i, co jest dla mnie najbardziej przydatne, możliwością czekania na zakończenie procesu.
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.
Ta metoda zapewnia znacznie większą kontrolę, niż wspomniałem.
Aby rozpocząć proces, można użyć metody System.Diagnostics.Process.Start . Możesz nawet przekazać adres URL jako ciąg znaków, który uruchomi domyślną przeglądarkę.
Tak jak mówi Matt, użyj Process.Start .
Możesz podać adres URL lub dokument. Zostaną uruchomione przez zarejestrowaną aplikację.
Przykład:
Process.Start("Test.Txt");
Spowoduje to uruchomienie Notepad.exe z załadowanym Text.Txt.
Win32Exception
(0x80004005) „Żadna aplikacja nie jest skojarzona z określonym plikiem dla tej operacji”
W swoim własnym programie użyłem następujących elementów.
Process.Start("http://www.google.com/etc/etc/test.txt")
To trochę podstawowe, ale spełnia swoje zadanie.
Możesz użyć tej składni do uruchamiania dowolnej aplikacji:
System.Diagnostics.Process.Start("Example.exe");
To samo dotyczy adresu URL. Po prostu wpisz swój adres URL między to ()
.
Przykład:
System.Diagnostics.Process.Start("http://www.google.com");
Użyj klasy Process . Dokumentacja MSDN zawiera przykład, jak go używać.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Zadeklaruj to
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
I umieść to w swojej funkcji (pamiętaj, że „checkInstalled” jest opcjonalne, ale jeśli będziesz go używać, musisz go zaimplementować)
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);
}
}
}
UWAGA: Nie jestem pewien, czy to zadziała, gdy działa więcej niż jedno wystąpienie pliku .exe.
Uwzględnij using System.Diagnostics;
.
A potem zadzwoń do tego Process.Start("Paste your URL string here!");
Spróbuj czegoś takiego:
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);
}
}
}
Należy pamiętać, że jest to przykładowa strona ASP.NET jako przykład. Powinieneś trochę zaimprowizować.
Na przykład, aby uruchomić Microsoft Word , użyj tego kodu:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Więcej wyjaśnień znajdziesz pod tym linkiem .
Jeśli używasz w systemie Windows
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();
Działa dla .Net Framework, ale dla Net core 3.1 również należy ustawić UseShellExecute na true
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();