Як запустити процес, наприклад, запустити URL-адресу, коли користувач натисне кнопку?
Як запустити процес, наприклад, запустити URL-адресу, коли користувач натисне кнопку?
Відповіді:
Як запропонував Метт Гамільтон, швидкий підхід, у якому ви маєте обмежений контроль над процесом, полягає у використанні статичного методу "Пуск" у класі 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();