ฉันจะเริ่มต้นกระบวนการเช่นการเปิดตัว URL เมื่อผู้ใช้คลิกปุ่มได้อย่างไร
ฉันจะเริ่มต้นกระบวนการเช่นการเปิดตัว URL เมื่อผู้ใช้คลิกปุ่มได้อย่างไร
คำตอบ:
ตามที่แนะนำโดย Matt Hamilton วิธีการด่วนที่คุณมีการควบคุมกระบวนการอย่าง จำกัด คือการใช้วิธีการเริ่มแบบคงที่ในคลาส System.Diagnostics กระบวนการ ...
using System.Diagnostics;
...
Process.Start("process.exe");
ทางเลือกคือการใช้อินสแตนซ์ของคลาสกระบวนการ สิ่งนี้ช่วยให้สามารถควบคุมกระบวนการได้มากขึ้นรวมถึงการตั้งเวลาประเภทของหน้าต่างที่จะทำงานและเป็นประโยชน์มากที่สุดสำหรับฉันความสามารถในการรอให้กระบวนการเสร็จสิ้น
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")
มันค่อนข้างพื้นฐาน แต่ก็ทำงานให้ฉันได้
var path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "/YourSubDirectory/yourprogram.exe");
Process.Start(new ProcessStartInfo(path));
คุณสามารถใช้ไวยากรณ์นี้สำหรับการเรียกใช้แอปพลิเคชันใด ๆ :
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 ให้เป็นจริง
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();