Wie starte ich einen Prozess, z. B. das Starten einer URL, wenn der Benutzer auf eine Schaltfläche klickt?
Wie starte ich einen Prozess, z. B. das Starten einer URL, wenn der Benutzer auf eine Schaltfläche klickt?
Antworten:
Wie von Matt Hamilton vorgeschlagen, besteht der schnelle Ansatz, bei dem Sie nur begrenzte Kontrolle über den Prozess haben, darin, die statische Startmethode für die System.Diagnostics.Process-Klasse zu verwenden ...
using System.Diagnostics;
...
Process.Start("process.exe");
Die Alternative besteht darin, eine Instanz der Process-Klasse zu verwenden. Dies ermöglicht viel mehr Kontrolle über den Prozess, einschließlich der Planung, des Fenstertyps, in dem er ausgeführt wird, und, was für mich am nützlichsten ist, der Möglichkeit, auf den Abschluss des Prozesses zu warten.
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.
Diese Methode ermöglicht weitaus mehr Kontrolle als ich erwähnt habe.
Sie können die System.Diagnostics.Process.Start- Methode verwenden, um einen Prozess zu starten. Sie können sogar eine URL als Zeichenfolge übergeben, wodurch der Standardbrowser gestartet wird.
Verwenden Sie Process.Start, genau wie Matt sagt .
Sie können eine URL oder ein Dokument übergeben. Sie werden von der registrierten Anwendung gestartet.
Beispiel:
Process.Start("Test.Txt");
Dadurch wird Notepad.exe mit geladener Text.Txt gestartet.
Win32Exception
(0x80004005) "Der angegebenen Datei für diesen Vorgang ist keine Anwendung zugeordnet"
Ich habe Folgendes in meinem eigenen Programm verwendet.
Process.Start("http://www.google.com/etc/etc/test.txt")
Es ist ein bisschen einfach, aber es macht den Job für mich.
Sie können diese Syntax zum Ausführen einer beliebigen Anwendung verwenden:
System.Diagnostics.Process.Start("Example.exe");
Und das gleiche für eine URL. Schreiben Sie einfach Ihre URL dazwischen ()
.
Beispiel:
System.Diagnostics.Process.Start("http://www.google.com");
Verwenden Sie die Process- Klasse. Die MSDN-Dokumentation enthält ein Beispiel für die Verwendung.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Erklären Sie dies
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
Und fügen Sie dies in Ihre Funktion ein (beachten Sie, dass "checkInstalled" optional ist, aber wenn Sie es verwenden, müssen Sie es implementieren)
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);
}
}
}
HINWEIS: Ich bin nicht sicher, ob dies funktioniert, wenn mehr als eine Instanz der EXE-Datei ausgeführt wird.
Umfassen die using System.Diagnostics;
.
Und dann nenne das Process.Start("Paste your URL string here!");
Versuchen Sie so etwas:
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);
}
}
}
Bitte beachten Sie, dass es sich als Beispiel um eine ASP.NET-Beispielseite handelt. Sie sollten versuchen, ein wenig zu improvisieren.
Verwenden Sie zum Starten von Microsoft Word beispielsweise den folgenden Code:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Weitere Erklärungen finden Sie unter diesem Link .
Bei Verwendung unter Windows
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();
Funktioniert für .Net Framework, aber für Net Core 3.1 muss UseShellExecute auch auf true gesetzt werden
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();