As I'm dabbling a bit with implementing my own alternative start menu in ReactOS, I've stumbled upon a bit of a challenge.
Using a recompiled explorer_new, I've added functionality to check using SHGetSetSettings on the flag SSF_STARTPANELON if the modern or classic start menu is enabled, and either run the default ReactOS classic menu, or my own code. This works perfectly as tested within XP.
In ReactOS, understandably, the registry options for the modern start menu are set to disabled, as there is no implementation of it. Thinking that enabling these options manually would allow the checks for the modern variant to work as intended, I simply enabled those options. This was for naught, since the shell didn't really care what I set (at least beyond displaying the option to enable or disable the modern start menu in the start menu settings), explorer_new would only ever show the default start menu within ReactOS (so the shellstate flag remained FALSE).
Checking further this evening, I realized that the code in general.cpp in shell32.dll is hard coding the state of this flag to FALSE. To my surprise (and somewhat frustratingly) my attempts to recompile shell32.dll with this option set to TRUE, as suggested in a comment within general.cpp, simply results in explorer_new crashing mere seconds after starting with an access violation (the taskbar isn't even fully loaded).
Looking at the Appcrash logs, it doesn't appear clear to me at this point what specifically causes the crash (all routines still seem to be within their init when the crash occurs, and therefore I'm looking at the startup threads that run when explorer_new).
Forcing the toggle to TRUE within explorer_new instead of "getting" option from the intended shell setting makes explorer_new work as intended, but feels beyond "hacky", especially since it works without this forced solution in XP. It does, however, demonstrate that the problem seems to lie somewhere deeper in the codebase than just the toggle itself. Attached is a video of explorer_new running with the alternative start menu in ReactOS this way https://www.youtube.com/watch?v=4ZNpAMYkZCc.
So, before I start diving into every possible rabbit-hole and probably end up breaking everything a "few times":
Does anyone happen to know if anything might be using this ShellState option that would alter how explorer_new behaves on startup?
Questions regarding general.cpp in shell32.dll and SSF_STARTPANELON
Moderator: Moderator Team
Who is online
Users browsing this forum: Google [Bot] and 1 guest