How to include windows right click menu in my application? - c#

I have a desktop app which after taking input from the user displays a list of files and folder(using a ListBox).
I want that when the user right clicks on any item in the ListBox, the right click menu of windows explorer should display.
I know I will have to use P/Invoke for this, but I am unable to find any relevant information such as which dll I have to use or which function I have to call.
Can anybody help me with that?

So this question is very old but has no accepted answer. I dont think Visionstar understood the issue OP is having.
My understanding is that you have an application running, and you would like to add an option in the WINDOWS EXPLORER's right-click menu. Not in your own application's context menu.
I do not think you can achieve this within your own application, however, what you can do is add an item in the Windows explorer's context menu (nothing to do with your application, you can just do that in windows; see link below) that you can setup to call a little script you would make (literally a little batch file... but could be a .net app too). That little script can take care of warning you main application. By creating a text file, or json file in a hot folder, or some other mechanism you would have to come up with.
Adding an item in the windows' contextual menu:
How add context menu item to Windows Explorer for folders
If you need to deploy this to other PCs, you can make a add_menu.reg file to make it simpler. I'll let you Google that one, but I think it's as simpe as a right-click -> export key in your regedit.

You will need to code it yourself, there is no embedded way simply add a OS-Contextmenu to it,because you have programmed the listbox, so you have to append some contextmenu to the listitem-rightclicks
Here are examples/guidance for adding a context menu:
http://msdn.microsoft.com/en-us/library/aa984254%28v=vs.71%29.aspx
http://social.msdn.microsoft.com/Forums/windows/en-US/790cd8be-0ba8-4f10-95a8-c88f1023d6e7/how-can-i-create-a-rightclick-menu-i-c?forum=winforms

Related

How to develop a shell ext. that adds a new button in a Explorer window? using SharpShell

Scenario
My current O.S. is Windows 8.1 x64, with plans to updgrade to Windows 10 x64 in the near future.
I frequently need to toggle between to show hidden files in explorer.
To solve this, I added a simple contextmenu item via registry, then when I do right click on the background of a folder I have my item that tooggles the hidden files visibility of Explorer.
Problem
Now I would like to make this functionality more accesible to avoid the need of that extra click to open the contextmenu. I would like to integrate the functionality as a shell extension to add a button near the default buttons that are at the bottom-right corner of each Explorer window:
Question
In C# or preferably VB.Net, and preferably using SharpShell library, how can I create a simple shell extension that adds a button with icon there?.
Note that when the button is clicked I need to have some kind of reference to identify the current Window on where I clicked the button.
Research
I've read all the official articles for beginners in this url below, however I didn't found any that talks about integrating an "addon" in Explorer (only about info tips).
Sharpshell - CodeProject
I know the existance of some expecific applications such as QTTabBar that adds functionalities in explorer such as menus and buttons via shell extension, It has a C# source code here and I'd anaylez it but it's a very huge VS solution and my main language is VB.Net, it's very unclear for me what the author do in the source code to add "addons" in the Explorer.
EDIT
AWM (Actual Window Manager) example of its Explorer integration:
QTTabBar's Explorer integration:

How can I add an item to the right click menu on the desktop

I have an application that runs in the background and changes the user's desktop background at set intervals. I would like to make it possible for the user to right click the desktop background and have the option to download the photo or advance to the next background, in addition to the normal windows right click options. Is there any way to do this in C#?
The target OS is Windows 8.1, but if it could work across several versions of Windows, that would be great.
Thanks to kennyzx for suggesting Sharp Shell context menu. It's a relatively easy library to understand for someone who is not use to using some of the deeper C# concepts yet.
You should do this in a setup and deployment project. This article shows the steps to add a menu option in the desktop context menu
The easiest way is to edit registry HKEY_CLASSES_ROOT\DesktopBackground\shell as described here..
http://www.howtogeek.com/107965/how-to-add-any-application-shortcut-to-windows-explorers-context-menu/

How to show system menu of a file in C#

I need to show system menu of a file in my application. This menu same as the image.
And, I also want to add a my menu element to this menu.
How can I do ?
Thanks
What you're looking for is called a shell context menu. To display such a menu in your application, you'll have to call the Windows API. This is not at all easy, but fortunately for you some other people have taken a stab at it.
The C# File Browser on CodeProject has a shell context menu, which is also described in that article.
Then Andreas Johansson extracted the shell context menu code from that project and uploaded it as a separate ZIP file, which you can download here.
I have no idea how to use it, or even if it works. That's left as an exercise for the reader. But there is a lot you can learn from this if you dig into the code.

C# How to add my program to context menu?

I have a c# executable file (created from a windows form application) and I would like to be able to add this file to the context menu. Furthermore, I should point out that I need to be able to add it to Windows XP, Vista, and 7.
Thank you for any help,
It is not that difficult and it is called context menu. Check this out Add a context menu to the Windows Explorer
Basically you will need to add item to the Registry.ClassesRoot.CreateSubKey registry.
Yeah add context menu using Registry editor. You could do this manually. Or this method, for example MSDN LINK, but you only need to do it once. so its like a installer executed once. here another simple example Link

Shell menu item separator

My question may be the repeated one here but even after googling i havn't got the solution yet.
I have added a shell context menu item for files i.e. when you right click on a file within explorer the menu shows my custom menu item.
I have used -
HKLM\Software\Classes*\shell\myappname
HKLM\Software\Classes*\shell\myappname\command
But what i am not able to do is to add a separator within that context menu.
I am using C# 2005 for creating my windows application.
Could someone help solve my problem.
Thanks for sharing your valuable time.
You'll need to create a shell context menu handler to take full control over the context menu content. You should not write this in C# until .NET 4.0 becomes widely available. For now you can use C++, this web page has an example. A wrapper is described here, no idea if it is any good.
Check out the following link: Extending Shortcut Menus
I think there is no keyword to add a separator but to create a new entry at the same level. The new set of entries will appear in a new group.

Categories