Как запустить процесс, например, запустить URL-адрес, когда пользователь нажимает кнопку?
Как запустить процесс, например, запустить URL-адрес, когда пользователь нажимает кнопку?
Ответы:
Как предложил Мэтт Гамильтон, быстрый подход, при котором вы имеете ограниченный контроль над процессом, заключается в использовании статического метода Start в классе System.Diagnostics.Process ...
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-адрес в виде строки, и он откроет браузер по умолчанию.
Как говорит Мэтт, используйте Process.Start .
Вы можете передать URL или документ. Они будут запущены зарегистрированным приложением.
Пример:
Process.Start("Test.Txt");
Это запустит Notepad.exe с загруженным Text.Txt.
Win32Exception
(0x80004005) «Нет приложения, связанного с указанным файлом для этой операции»
Я использовал следующее в моей собственной программе.
Process.Start("http://www.google.com/etc/etc/test.txt")
Это немного элементарно, но это делает работу за меня.
Вы можете использовать этот синтаксис для запуска любого приложения:
System.Diagnostics.Process.Start("Example.exe");
И то же самое для URL. Просто напишите свой URL между этим ()
.
Пример:
System.Diagnostics.Process.Start("http://www.google.com");
Используйте класс Process . В документации MSDN есть пример, как его использовать.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Объявите это
[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.
Включить 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 в качестве примера. Вы должны попытаться импровизировать немного.
Например, чтобы запустить Microsoft Word , используйте этот код:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Для получения дополнительных объяснений, проверьте эту ссылку .
При использовании на 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();