Làm cách nào để bắt đầu một quy trình, chẳng hạn như khởi chạy URL khi người dùng nhấp vào nút?
Làm cách nào để bắt đầu một quy trình, chẳng hạn như khởi chạy URL khi người dùng nhấp vào nút?
Câu trả lời:
Theo đề xuất của Matt Hamilton, cách tiếp cận nhanh chóng mà bạn có quyền kiểm soát quá trình hạn chế, là sử dụng phương thức Bắt đầu tĩnh trên lớp System.Diagnostics.Process ...
using System.Diagnostics;
...
Process.Start("process.exe");
Cách khác là sử dụng một thể hiện của lớp Process. Điều này cho phép kiểm soát nhiều hơn quá trình bao gồm lập lịch, loại cửa sổ mà nó sẽ chạy và, hữu ích nhất đối với tôi, khả năng chờ quá trình kết thúc.
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.
Phương pháp này cho phép kiểm soát nhiều hơn nhiều so với tôi đã đề cập.
Bạn có thể sử dụng phương thức System.Diagnostics.Process.Start để bắt đầu một quy trình. Bạn thậm chí có thể truyền URL dưới dạng một chuỗi và nó sẽ khởi động trình duyệt mặc định.
Như Matt nói, hãy sử dụng Process.Start .
Bạn có thể vượt qua một URL, hoặc một tài liệu. Họ sẽ được bắt đầu bởi các ứng dụng đã đăng ký.
Thí dụ:
Process.Start("Test.Txt");
Điều này sẽ bắt đầu Notepad.exe với Text.Txt được tải.
Win32Exception
(0x80004005) "Không có ứng dụng nào được liên kết với tệp được chỉ định cho thao tác này"
Tôi đã sử dụng sau đây trong chương trình của riêng tôi.
Process.Start("http://www.google.com/etc/etc/test.txt")
Đó là một chút cơ bản, nhưng nó làm công việc cho tôi.
Bạn có thể sử dụng cú pháp này để chạy bất kỳ ứng dụng nào:
System.Diagnostics.Process.Start("Example.exe");
Và cùng một URL. Chỉ cần viết URL của bạn giữa này ()
.
Thí dụ:
System.Diagnostics.Process.Start("http://www.google.com");
Sử dụng lớp Process . Tài liệu MSDN có một ví dụ về cách sử dụng nó.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Tuyên bố điều này
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
Và đặt cái này bên trong chức năng của bạn (lưu ý rằng "checkInstalled" là tùy chọn, nhưng nếu bạn sử dụng nó, bạn phải thực hiện nó)
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);
}
}
}
LƯU Ý: Tôi không chắc chắn nếu điều này hoạt động khi có nhiều hơn một phiên bản .exe đang chạy.
Bao gồm using System.Diagnostics;
.
Và sau đó gọi đây Process.Start("Paste your URL string here!");
Hãy thử một cái gì đó như thế này:
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);
}
}
}
Xin lưu ý rằng đó là một trang ASP.NET mẫu làm ví dụ. Bạn nên thử và ứng biến một chút.
Để khởi động Microsoft Word chẳng hạn, hãy sử dụng mã này:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Để giải thích thêm, hãy kiểm tra liên kết này .
Nếu sử dụng trên Windows
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();
Hoạt động cho .Net Framework nhưng đối với Net core 3.1 cũng cần đặt UseShellExecute thành true
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();