Jon Tackabury
Jon Tackabury

Reputation: 49289

How do you show the Windows Explorer context menu from a C# application?

I have a file listing in my application and I would like to allow people to right-click on an item and show the Windows Explorer context menu. I'm assuming I would need to use the IContextMenu interface, but I'm not really sure where to start.

Upvotes: 19

Views: 11752

Answers (3)

David Boike
David Boike

Reputation: 18645

I found a great Code Project article that encapsulates everything very nicely into one class!

Explorer Shell Context Menu

It's as easy as the following code snippet:

// Sample code

ShellContextMenu ctxMnu = new ShellContextMenu();
FileInfo[] arrFI = new FileInfo[1];
arrFI[0] = new FileInfo(this.treeMain.SelectedNode.Tag.ToString());
ctxMnu.ShowContextMenu(arrFI, this.PointToScreen(new Point(e.X, e.Y)));

The only irksome thing is that it takes either an array of FileInfo[] or an array of DirectoryInfo[] although it was VERY easy to modify the source slightly so that it would take an array of FileSystemInfo[]

Upvotes: 6

Grokys
Grokys

Reputation: 16546

I have written a library that might be able to help you. You could use the controls provided by the library, or if you don't want to do that, looking through the code may give you an answer.

You can find the library at: http://gong-shell.sourceforge.net/

Please let me know if this helped!

Upvotes: 13

Related Questions