Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context menu (Desktop + File Explorer) #2

Open
w64bit opened this issue Oct 4, 2018 · 24 comments
Open

Context menu (Desktop + File Explorer) #2

w64bit opened this issue Oct 4, 2018 · 24 comments

Comments

@w64bit
Copy link

w64bit commented Oct 4, 2018

Is it possible to add context menu tweaker also for Desktop and File Explorer context menus?
Thank you

@rikka0w0
Copy link
Owner

rikka0w0 commented Oct 4, 2018

The well-known registry tweak for restore classic explorer context menu has been remove since 1809. Just confirmed QAQ I miss this feature so much, so I'm thinking about how to do it with program. The fact is that, all shell context menu have the modern style, e.g. file explorer and open file dialog window in notepad. So there must be a common library which is used by the system to draw the menu. We need to locate the code and perform an code injection to each process. But up to now, I have no idea about how to do the patch. Hints or suggestions are welcomed!

@Jake1702
Copy link

Jake1702 commented Oct 8, 2018

Perhaps explorerframe?

@ksdixon
Copy link

ksdixon commented Oct 8, 2018

This is infuriating.

I make text bold and disable new context menu so I have blue highlight colour, so that I can see better. To see Firefox respecting my settings but File Explorer not just takes the Micky.

@rikka0w0
Copy link
Owner

rikka0w0 commented Oct 8, 2018

I really don't like the new context menu.
But today I made some break through. Conclusion is that:

  1. Only the menu owned by Windows shell has the new style, including desktop, file explorer and open dialog boxes in all applications, self-build shell menus (remember shell provides APIs to allow you to populate your own menu) like this is not affected.
  2. Most ugly menus are owner-drawn by a window which has a class name of "SHELLDLL_DefView", there is one exception, the folder tree in file explorer is called "SysTreeView32" and its parent is called "NamespaceTreeControl".
  3. The code used to draw the ugly menu should be identical to how most program draw owner-drawn menu. Message WM_MEASUREITEM and WM_DRAWITEM are observed.
  4. The browse folder dialog still has the system menu style.

Looks like Microsoft adds the owner-drawn menu flag after querying all menu items, disable owner-drawn while adding menu item has been proved impossible.

To change the menu style, we need our code to present in all processes which have the "SHELLDLL_DefView" and "NamespaceTreeControl". Global hook is not a very good choice since it is very inefficient. Making a shell extension looks good, because shell extensions will be loaded by all "SHELLDLL_DefView" and "NamespaceTreeControl" when needed.

Then we need to find a good type of shell extension to implement. Here are some very naive idea:

  1. When our extension is being loaded, it scans for "SHELLDLL_DefView" and "NamespaceTreeControl"
  2. Replaces WndProc of "SHELLDLL_DefView" and "NamespaceTreeControl" to our own
  3. In our WndProc we handle the WM_INITMENUPOPUP message, this message is sent to the window just before the menu is displayed.
  4. Traverse the entire menu and remove the MF_OWNERDRAW flag for all menu items

This should work, but problems are:

  1. Which type of shell extension should be implemented
  2. How can we locate the correct "SHELLDLL_DefView" and "NamespaceTreeControl" window

Seems like this cannot be done with this program (this program only injects code to the taskbar process), I will start another repo for the explorer context menu patch. I will let your guys know when it is ready. But for now, stay on this thread and post your thoughts here!

PS: I don't hate new menu styles but I really hate inconsistency.

@ksdixon
Copy link

ksdixon commented Oct 8, 2018

I hate it due to visibility, as a disabled user with eyesight problems.

We're talking a difference of the following for me:
http://tinypic.com/view.php?pic=mua9t5&s=9

I know nothing of Windows Explorer hacking, but another tweak I use is I have a .dll file that I put into the system32 folder and then run regsvr32 on admin elevated command prompt to register it. I have to re-do this every time I reset windows from fresh, but upgrade installs retain the setting etc. All it does is reinstate the column headers like name, date modified, size, type into all view styles of File Explorer. Microsoft ripped them out of all view styles except for Details view after Windows Vista if I recall correctly. Is there anything about this method that could help our cause?

@rikka0w0
Copy link
Owner

rikka0w0 commented Oct 9, 2018

Hi, Can you share the dll you mentioned?

@ksdixon
Copy link

ksdixon commented Oct 9, 2018

@ksdixon
Copy link

ksdixon commented Oct 9, 2018

there seems to be some positive attention on my reddit post about this issue:
https://www.reddit.com/r/Windows10/comments/9mh50b/please_spend_a_moment_to_upvote_this/

and i started a uservoice thread in the Ease Of Access category too:
https://microsoftaccessibility.uservoice.com/forums/307429-microsoft-accessibility-feedback/suggestions/35661268-windows-10-build-1809-file-explorer-right-click

The uservoice post is a bit ramble-y, i cleaned-up the reddit post, but can't seem to edit the uservoice one.

@rikka0w0
Copy link
Owner

rikka0w0 commented Oct 9, 2018

It this the same dll?
https://github.com/ijprest/Explorer7Fixes

@ksdixon
Copy link

ksdixon commented Oct 9, 2018

yes sir :)

@rikka0w0
Copy link
Owner

Hi All,

I have started a new repo, this project generates a DLL file, which will be loaded by explorer and changes the menu style. Use regsvr32.exe .\ExplorerContextMenuTweaker.dll to install, and regsvr32.exe /u .\ExplorerContextMenuTweaker.dll to uninstall. The dll can be deleted after restarting Explorer.exe.

So far, this is the best I can get:
kin3 i2 5jf2qfvompt6x2h

Warning:
This software is very experimental, not even Alpha stage! Crashes MAY occur! Use at your own risk!

@Mario0051
Copy link

Also, I think it doesn't work on the sound context menu now.

@rikka0w0
Copy link
Owner

Which version of Windows 10 are u using? Can you give any details e.g. system version/screenshots?

@Mario0051
Copy link

I am using Windows 10 Build 18282, and this is the issue I am encountering:
image

@rikka0w0
Copy link
Owner

I will have a look

@Mario0051
Copy link

I am using Windows 10 Build 18305 now and my issue has seemed to be fixed:
image
And also this issue:
image
image

@ci70
Copy link

ci70 commented Jan 6, 2019

  • The loading mechanism could be better (similar to StartIsBack which uses COM)
  • This doesn't seem to modify taskbar context menus. (tested on 1507 LTSB)
  • Would interesting to have End Process instead of Close Window when ALT is pressed.

taskbar

@rikka0w0
Copy link
Owner

  • The loading mechanism could be better (similar to StartIsBack which uses COM)
  • This doesn't seem to modify taskbar context menus. (tested on 1507 LTSB)
  • Would interesting to have End Process instead of Close Window when ALT is pressed.

taskbar

  1. I will have a look at COM
  2. The image shown is NOT context menu, it is called jump list. It uses a new type of window which is completely different from the win7 jump list window.
  3. As I mentioned in 2, the jump list is not a conventional window, it seems to be a UWP window. For now, I have no idea about how to hook UWP applications.

@rikka0w0
Copy link
Owner

For those who are looking for a method to disable immersive context menus in the shell explorer in 1809 and above, I have found an alternative solution:

Check out this:

This is a tutorial for patching aerolite.msstyles, this should give you a immersive menu that looks just like the classic menu. This can be done without any coding, the only thing you need to do is to download uxTheme patcher and the patched aerolite.msstyles from the following link:
https://gist.github.com/rikka0w0/971e247871154427d5e62c7b3a7ac1d4

Also check out:
rikka0w0/ExplorerContextMenuTweaker#5

@rikka0w0
Copy link
Owner

I am using Windows 10 Build 18282, and this is the issue I am encountering:
image

I don't have that menu on my Windows, I need you to collect some information so that I can fix the problem, can you do me a favour?

@innuendo33
Copy link

Hi
I'd like to submit this ( because of dll inject subject here ) to your opinion if you don't mind :
https://imgur.com/pIc5yYs

Do you have any idea if it's possible ? ( couldn't locate file / registry where treeview background settings in windows OS ) systreeview32 control ( that said no one found how since Win 7 )
https://vistastylebuilder.com/forum/index.php?topic=1130.0

Thanks for advice .
Regards

@innuendo33
Copy link

Hi

Do you think it's also possible to get back legacy adressbar and restore search box old in latests windows 10 builds ( 1909 & 2004 ) ?

@rikka0w0
Copy link
Owner

Hi

Do you think it's also possible to get back legacy adressbar and restore search box old in latests windows 10 builds ( 1909 & 2004 ) ?

No, it is not possible or at least very hard to restore the legacy address bar. However it is relatively easy to "simulate" its behavior.
I can still find the address bar in Win10 1909:
image
Is this what you are talking about?

@innuendo33
Copy link

yes and also the searchbox in file explorer ( see my screenshot )
since 1909 & now 20h1 builds they screwed custom theme to skin correctly those parts .

Capture

and what's strange is under 20h1 build , the legacy one is still operate when you run control panel with a custom theme, its searchbox is the legacy one so I was wondering how to bypass and restore old searchbox to apply custom themes and have a nicer look ( now we get an ugly modern square with arrow on left of searchbox )
Under 1909 there is a tool " mach 2 " which allow revert back but not working for update to release this month .
https://www.thewindowsclub.com/enable-legacy-search-box-in-file-explorer-of-windows-10/

I was heard this behaviour change to allow explorer search using modernsearchbox class and windows search feature as an UWP .

Thanks for your interest !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants