Comment démarrer un processus, tel que lancer une URL lorsque l'utilisateur clique sur un bouton?
Comment démarrer un processus, tel que lancer une URL lorsque l'utilisateur clique sur un bouton?
Réponses:
Comme suggéré par Matt Hamilton, l'approche rapide où vous avez un contrôle limité sur le processus consiste à utiliser la méthode statique Start sur la classe System.Diagnostics.Process ...
using System.Diagnostics;
...
Process.Start("process.exe");
L'alternative consiste à utiliser une instance de la classe Process. Cela permet beaucoup plus de contrôle sur le processus, y compris la planification, le type de fenêtre dans laquelle il s'exécutera et, surtout pour moi, la possibilité d'attendre la fin du processus.
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.
Cette méthode permet beaucoup plus de contrôle que ce que j'ai mentionné.
Vous pouvez utiliser la méthode System.Diagnostics.Process.Start pour démarrer un processus. Vous pouvez même passer une URL sous forme de chaîne et cela lancera le navigateur par défaut.
Tout comme Matt le dit, utilisez Process. .
Vous pouvez transmettre une URL ou un document. Ils seront lancés par l'application enregistrée.
Exemple:
Process.Start("Test.Txt");
Cela démarrera Notepad.exe avec Text.Txt chargé.
Win32Exception
(0x80004005) "Aucune application n'est associée au fichier spécifié pour cette opération"
J'ai utilisé ce qui suit dans mon propre programme.
Process.Start("http://www.google.com/etc/etc/test.txt")
C'est un peu basique, mais ça fait le travail pour moi.
Vous pouvez utiliser cette syntaxe pour exécuter n'importe quelle application:
System.Diagnostics.Process.Start("Example.exe");
Et le même pour une URL. Écrivez simplement votre URL entre cela ()
.
Exemple:
System.Diagnostics.Process.Start("http://www.google.com");
Utilisez la classe Process . La documentation MSDN a un exemple de son utilisation.
class ProcessStart
{
static void Main(string[] args)
{
Process notePad = new Process();
notePad.StartInfo.FileName = "notepad.exe";
notePad.StartInfo.Arguments = "ProcessStart.cs";
notePad.Start();
}
}
Déclarez ceci
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
[DllImport("user32")]
private static extern bool ShowWindowAsync(IntPtr hwnd, int a);
Et mettez ceci dans votre fonction (notez que "checkInstalled" est facultatif, mais si vous l'utilisez, vous devez l'implémenter)
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);
}
}
}
REMARQUE: je ne suis pas sûr que cela fonctionne lorsque plusieurs instances du .exe sont en cours d'exécution.
Inclure le using System.Diagnostics;
.
Et puis appelle ça Process.Start("Paste your URL string here!");
Essayez quelque chose comme ceci:
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);
}
}
}
Veuillez noter qu'il s'agit d'un exemple de page ASP.NET. Vous devriez essayer et improviser un peu.
Pour démarrer Microsoft Word par exemple, utilisez ce code:
private void button1_Click(object sender, EventArgs e)
{
string ProgramName = "winword.exe";
Process.Start(ProgramName);
}
Pour plus d'explications, consultez ce lien .
Si vous utilisez Windows
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.Start();
Fonctionne pour .Net Framework, mais pour Net core 3.1, vous devez également définir UseShellExecute sur true
Process process = new Process();
process.StartInfo.Filename = "Test.txt";
process.StartInfo.UseShellExecute = true;
process.Start();