¿Cómo inicio un proceso, como iniciar una URL cuando el usuario hace clic en un botón?
¿Cómo inicio un proceso, como iniciar una URL cuando el usuario hace clic en un botón?
Respuestas:
Según lo sugerido por Matt Hamilton, el enfoque rápido en el que tiene un control limitado sobre el proceso es utilizar el método de inicio estático en la clase System.Diagnostics.Process ...
using System.Diagnostics;
...
Process.Start("process.exe");
La alternativa es usar una instancia de la clase Process. Esto permite mucho más control sobre el proceso, incluida la programación, el tipo de ventana en la que se ejecutará y, lo más útil para mí, la capacidad de esperar a que termine el proceso.
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.
Este método permite mucho más control del que he mencionado.
Puede usar el método System.Diagnostics.Process.Start para iniciar un proceso. Incluso puede pasar una URL como una cadena y se iniciará el navegador predeterminado.
Tal como Matt dice, usa Process.Start .
Puede pasar una URL o un documento. Serán iniciados por la aplicación registrada.
Ejemplo:
Process.Start("Test.Txt");
Esto iniciará Notepad.exe con Text.Txt cargado.
Win32Exception
(0x80004005) "Ninguna aplicación está asociada con el archivo especificado para esta operación"
Usé lo siguiente en mi propio programa.
Process.Start("http://www.google.com/etc/etc/test.txt")
Es un poco básico, pero hace el trabajo por mí.
Puede usar esta sintaxis para ejecutar cualquier aplicación:
System.Diagnostics.Process.Start("Example.exe");
Y el mismo para una URL. Simplemente escriba su URL entre esto ()
.
Ejemplo:
System.Diagnostics.Process.Start("http://www.google.com");
Use la clase de proceso . La documentación de MSDN tiene un ejemplo de cómo usarla.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Declarar esto
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
Y ponga esto dentro de su función (tenga en cuenta que "checkInstalled" es opcional, pero si lo va a usar, debe implementarlo)
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);
}
}
}
NOTA: No estoy seguro de si esto funciona cuando se está ejecutando más de una instancia de .exe.
Incluye el using System.Diagnostics;
.
Y luego llama a esto Process.Start("Paste your URL string here!");
Intenta algo como esto:
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);
}
}
}
Tenga en cuenta que es un ejemplo de página ASP.NET como ejemplo. Deberías probar e improvisar un poco.
Para iniciar Microsoft Word, por ejemplo, use este código:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Para obtener más explicaciones, consulte este enlace .
Si se usa en Windows
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();
Funciona para .Net Framework pero para Net core 3.1 también necesita establecer UseShellExecute en true
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();