I want to create a taskbar toolbar from my WPF application in c#. Once created, I want to assign it a folder. The Toolbar will then show the contents of the file folder.
Screenshot of what I want:
There is no API for making a shell alteration like that (I believe this is mentioned on Raymond Chen's blog, but I don't have the link, sorry). This is because Microsoft believes the user should be in control of the taskbar, not applications.
Related
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:
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
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.
Can you give me an example on how to put my application form in the taskbar?
like Windows media player or Window search when minimize.
What you are looking for is creating an Application Desktop Toolbar (also known as AppBar). The main function you use to register your application window as an AppBar is SHAppBarMessage.
To get you started, you can look at this old appbar example with C++. If you want to do it in C#, there's a thread that discusses some details on how to do it in WPF. I am not aware of examples of how to do it with WinForms, but a quick search on the web should bring something.
Update: Actually, if you want a toolbar that sits on the taskbar, you need to implement a Deskband. Here's a sample DeskBand in C++ and here's a DeskBand in C#.
That's what happens when you don't touch a topic in a while. :-)
What this is really called is the 'System Tray' You want your app to have an icon in the windows system tray. Many languages provide this functionality.
Here are a few links:
http://www.codeguru.com/Cpp/COM-Tech/shell/icons/article.php/c1335
http://www.codeproject.com/KB/shell/systemtray.aspx
I have written a short console based C# application which automatically arranges my desktop icons.
Is it possible to add an entry into the desktop "Arrange Icons By" menu for my custom sorting?
This might show you enough technique to get started.