Reputation: 2508
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
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
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
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
Reputation: 1064204
Note that advanced uses (printing etc) require using a ProcessStartInfo and setting the Verb property.
Upvotes: 74