Martin Kenny
Martin Kenny

Reputation: 2508

ShellExecute equivalent in .NET

I'm looking for the .NET-preferred way of performing the same type of thing that ShellExecute does in Win32 (opening, printing, etc. for arbitrary file types).

I've been programming Windows for over 20 years, but I'm a complete newbie at .NET, so maybe I'm just looking in the wrong places. I'm currently using .NET 2.0 (VS C# 2005), but could use VS 2008 if need be.

If the only answer is to use P/Invoke, then I might be better just writing my small utility using Win32 anyway.

Upvotes: 58

Views: 91051

Answers (5)

kevinarpe
kevinarpe

Reputation: 21319

Here are the original Win32 ShellExecute() docs: https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-shellexecutea

This C# code will work to open a web browser tab for a URL:

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "https://www.google.com/";
psi.UseShellExecute = true;
psi.WindowStyle = ProcessWindowStyle.Normal;
Process.Start(psi);

Upvotes: 1

Cyril Gupta
Cyril Gupta

Reputation: 13723

Have you tried System.Diagnostics.Process.Start()?

It's more or less similar to ShellExecute. You can open exes, documents. I haven't checked printing yet, Marc has told you how already.

Upvotes: 4

mdimai666
mdimai666

Reputation: 787

System.Diagnostics.Process.Start("explorer.exe", path);

Upvotes: 1

Corey Trager
Corey Trager

Reputation: 23141

System.Diagnostics.Process.Start(command)

I bet you had trouble finding it because it is in the System.Diagnostics namespace. "Diagnostics"? Usually with 20 years experience one thing you get good at is guessing at what something will be called in a new API/language, but this one tricked me.

Upvotes: 44

Marc Gravell
Marc Gravell

Reputation: 1064204

Process.Start.

Note that advanced uses (printing etc) require using a ProcessStartInfo and setting the Verb property.

Upvotes: 74

Related Questions