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

Create tools to help quickly find a system icon when creating a menu #161

Closed
3 tasks done
end2endzone opened this issue Aug 16, 2024 · 2 comments · Fixed by #175
Closed
3 tasks done

Create tools to help quickly find a system icon when creating a menu #161

end2endzone opened this issue Aug 16, 2024 · 2 comments · Fixed by #175
Labels
enhancement New feature or request
Milestone

Comments

@end2endzone
Copy link
Owner

end2endzone commented Aug 16, 2024

Is your feature request related to a problem? Please describe.
Finding a good resource online that documents Windows system icons in dll files is hard. Mostly the web site is outdated.
ShellAnything already have all the required code to find and extract all icons from a dll.

Describe the solution you'd like
Create an application for extracting all icons from a dll file.
Create snapshot images of all icons in main system dll files:

  • %windir%\system32\shell32.dll Standard
  • %windir%\System32\wmploc.DLL OK
  • %windir%\system32\setupapi.dll OK, Hardware / Periphals
  • %windir%\system32\ddores.dll OK, lot of devices
  • %windir%\System32\ieframe.dll IE and warnings, mixed ugly
  • %windir%\system32\netshell.dll Ugly and non ugly
  • %windir%\System32\imageres.dll Ugly, New ones
  • %windir%\System32\pifmgr.dll Ugly, Win95 Ones
  • %windir%\System32\moricons.dll Ugly, very old
  • %windir%\System32\mmcndmgr.dll Ugly, Very old
  • %windir%\System32\compstui.dll Ugly, Very old

Reference:
https://superuser.com/questions/142731/how-can-i-see-which-dlls-included-in-windows-contain-icons

Images shall be grouped by Windows version.

Describe alternatives you've considered
Search online. Not really promising. Mostly outdated information.

Additional context
N/A

TODO:

  • Create configuration Won't do. See comments below
  • Update documentation.
    • Tell users about this configuration in the Icons section and in the Tools sections.
    • Add an entry in default shellanything menu that links to the config file on github.
@end2endzone end2endzone added the enhancement New feature or request label Aug 16, 2024
@end2endzone
Copy link
Owner Author

Could we generate a debug icon menu where we create multiple entries such as :

        <menu name="000 to 049">
          <menu name="000"><icon path="C:\Windows\system32\shell32.dll" index="0" /></menu>
          <menu name="001"><icon path="C:\Windows\system32\shell32.dll" index="1" /></menu>
          <menu name="002"><icon path="C:\Windows\system32\shell32.dll" index="2" /></menu>
          <menu name="003"><icon path="C:\Windows\system32\shell32.dll" index="3" /></menu>
          <menu name="004"><icon path="C:\Windows\system32\shell32.dll" index="4" /></menu>
          <menu name="005"><icon path="C:\Windows\system32\shell32.dll" index="5" /></menu>
          <menu name="006"><icon path="C:\Windows\system32\shell32.dll" index="6" /></menu>
          <menu name="007"><icon path="C:\Windows\system32\shell32.dll" index="7" /></menu>
          <menu name="008"><icon path="C:\Windows\system32\shell32.dll" index="8" /></menu>
          <menu name="009"><icon path="C:\Windows\system32\shell32.dll" index="9" /></menu>
          <menu name="010"><icon path="C:\Windows\system32\shell32.dll" index="10" /></menu>
          <menu name="011"><icon path="C:\Windows\system32\shell32.dll" index="11" /></menu>
          <menu name="012"><icon path="C:\Windows\system32\shell32.dll" index="12" /></menu>
          <menu name="013"><icon path="C:\Windows\system32\shell32.dll" index="13" /></menu>
          <menu name="014"><icon path="C:\Windows\system32\shell32.dll" index="14" /></menu>
          <menu name="015"><icon path="C:\Windows\system32\shell32.dll" index="15" /></menu>
          <menu name="016"><icon path="C:\Windows\system32\shell32.dll" index="16" /></menu>
          <menu name="017"><icon path="C:\Windows\system32\shell32.dll" index="17" /></menu>
          <menu name="018"><icon path="C:\Windows\system32\shell32.dll" index="18" /></menu>
          <menu name="019"><icon path="C:\Windows\system32\shell32.dll" index="19" /></menu>
          <menu name="020"><icon path="C:\Windows\system32\shell32.dll" index="20" /></menu>
          <menu name="021"><icon path="C:\Windows\system32\shell32.dll" index="21" /></menu>
          <menu name="022"><icon path="C:\Windows\system32\shell32.dll" index="22" /></menu>
          <menu name="023"><icon path="C:\Windows\system32\shell32.dll" index="23" /></menu>
          <menu name="024"><icon path="C:\Windows\system32\shell32.dll" index="24" /></menu>
          <menu name="025"><icon path="C:\Windows\system32\shell32.dll" index="25" /></menu>
          <menu name="026"><icon path="C:\Windows\system32\shell32.dll" index="26" /></menu>
          <menu name="027"><icon path="C:\Windows\system32\shell32.dll" index="27" /></menu>
          <menu name="028"><icon path="C:\Windows\system32\shell32.dll" index="28" /></menu>
          <menu name="029"><icon path="C:\Windows\system32\shell32.dll" index="29" /></menu>
          <menu name="030"><icon path="C:\Windows\system32\shell32.dll" index="30" /></menu>
          <menu name="031"><icon path="C:\Windows\system32\shell32.dll" index="31" /></menu>
          <menu name="032"><icon path="C:\Windows\system32\shell32.dll" index="32" /></menu>
          <menu name="033"><icon path="C:\Windows\system32\shell32.dll" index="33" /></menu>
          <menu name="034"><icon path="C:\Windows\system32\shell32.dll" index="34" /></menu>
          <menu name="035"><icon path="C:\Windows\system32\shell32.dll" index="35" /></menu>
          <menu name="036"><icon path="C:\Windows\system32\shell32.dll" index="36" /></menu>
          <menu name="037"><icon path="C:\Windows\system32\shell32.dll" index="37" /></menu>
          <menu name="038"><icon path="C:\Windows\system32\shell32.dll" index="38" /></menu>
          <menu name="039"><icon path="C:\Windows\system32\shell32.dll" index="39" /></menu>
          <menu name="040"><icon path="C:\Windows\system32\shell32.dll" index="40" /></menu>
          <menu name="041"><icon path="C:\Windows\system32\shell32.dll" index="41" /></menu>
          <menu name="042"><icon path="C:\Windows\system32\shell32.dll" index="42" /></menu>
          <menu name="043"><icon path="C:\Windows\system32\shell32.dll" index="43" /></menu>
          <menu name="044"><icon path="C:\Windows\system32\shell32.dll" index="44" /></menu>
          <menu name="045"><icon path="C:\Windows\system32\shell32.dll" index="45" /></menu>
          <menu name="046"><icon path="C:\Windows\system32\shell32.dll" index="46" /></menu>
          <menu name="047"><icon path="C:\Windows\system32\shell32.dll" index="47" /></menu>
          <menu name="048"><icon path="C:\Windows\system32\shell32.dll" index="48" /></menu>
          <menu name="049"><icon path="C:\Windows\system32\shell32.dll" index="49" /></menu>
        </menu>
        <menu name="050 to 099">
          <menu name="050"><icon path="C:\Windows\system32\shell32.dll" index="50" /></menu>
          <menu name="..."></menu>
          <menu name="099"><icon path="C:\Windows\system32\shell32.dll" index="99" /></menu>
        </menu>

@end2endzone end2endzone added this to the 0.10.0 milestone Sep 8, 2024
@end2endzone
Copy link
Owner Author

The solution above is to create a configuration file that can use ShellAnything to show all system icons. This solution is cumbersome and requires updates with futures Windows version. This can be easily forget.

A new solution is to use an actual script that can extract icons from dll files. A preview of each icons (and their index) will be saved as an image in the repository as a quick reference guide. This will be more meaningful than having a huge configuration file. Plus, searching through an image is easier than searching for an icon through a context menu.

end2endzone added a commit that referenced this issue Sep 10, 2024
end2endzone added a commit that referenced this issue Sep 12, 2024
…ons` to section `Tools`. A hint note was left at the end of the Icons section about the `Windows icons preview images` tool. #161
end2endzone added a commit that referenced this issue Sep 12, 2024
end2endzone added a commit that referenced this issue Oct 12, 2024
commit 2489b88
Merge: 29ba134 d0d1bfa
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Fri Oct 11 17:02:38 2024 -0400

    Merge pull request #179 from end2endzone/feature-issue177

    Feature issue177 (for #177 and #178)

commit d0d1bfa
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 29 10:58:12 2024 -0400

    Fixed unit test `TestTools.testArgumentsDebugger()` in release configuration.

commit 23c7e36
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 29 10:57:25 2024 -0400

    Renamed `KillShellAnythingArgumentsDebuggerProcess()` to `KillArgumentsDebuggerProcess()`.

commit b690f7f
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 29 10:54:39 2024 -0400

    Removed references to `KillCalculatorProcess()` and `StartCalculatorProcess()`.

commit f49dda1
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 15:30:31 2024 -0400

    Revert "Add code to trace execusion of test `TestPlugins.testProcess()` which hangs on AppVeyor."

    This reverts commit 6375f36.

commit 3872670
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 15:24:34 2024 -0400

    Revert "Temporary modified TestPlugins.cpp for high debugging on AppVeyor."

    This reverts commit 25ca469.

commit 218d81c
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 15:24:10 2024 -0400

    Revert "Temporary added verbose function logging for sa_plugin_process.cpp plugin."

    This reverts commit 444e17a.

commit c752c0f
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 14:41:45 2024 -0400

    Replaced `calc.exe` example by `mspaint.exe` as per comment in #178

commit 6dd793b
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 14:33:50 2024 -0400

    Now using mspaint.exe as default executable to start/stop while running tests. This is better than using calc.exe since calc.exe is a stub/sandbox application to start CalculatorApp.exe. When launching calc.exe, we are unable to properly detect the process id of CAlculatorApp.exe.
    Follow up to 319f594.

commit 10800f6
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 14:25:53 2024 -0400

    Modified arguments.debugger to show the current directory.

commit 444e17a
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 12:23:17 2024 -0400

    Temporary added verbose function logging for sa_plugin_process.cpp plugin.

commit 497a46c
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 12:02:01 2024 -0400

    Fixed typo.

commit 77d23ba
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 11:16:17 2024 -0400

    Fixed a small bug in ConsoleLoggerService

commit 25ca469
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 10:13:30 2024 -0400

    Temporary modified TestPlugins.cpp for high debugging on AppVeyor.

commit 4a7afe8
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 10:12:57 2024 -0400

    Created new ConsoleLoggerService that can be used for debugging on CI servers.

commit 6375f36
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sat Sep 28 09:12:23 2024 -0400

    Add code to trace execusion of test `TestPlugins.testProcess()` which hangs on AppVeyor.

commit 319f594
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 25 20:57:20 2024 -0400

    Modified tests that starts processes to use the new `console` attribute set to false to prevent window flicker while running tests.
    Modified tests that started/killed notepad.exe to use calc.exe instead. This change prevents killing potentially open/unsaved documents.

commit 0bbeb19
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 24 20:59:35 2024 -0400

    * Fixed issue #178: Exec action should expose the created process id.

commit d9ebea7
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 24 20:38:03 2024 -0400

    * Fixed issue #177: Execute a console program without showing a window.

commit ac0a788
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 24 20:37:55 2024 -0400

    Updated documentation for #177

commit 2374454
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 24 20:37:30 2024 -0400

    Implemented `console=false` attribute handling for ActionExecute.cpp. Added support for hidden console in WindowsProcessLauncherService. #177

commit fe0f6a7
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 24 19:47:59 2024 -0400

    Split code from `WindowsProcessLauncherService::StartProcess()` into `StartProcessFromShellExecute()` and `StartProcessFromCreateProcess()`.

commit 86151f4
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 22 20:47:35 2024 -0400

    Added method `StartProcess()` to interface `IProcessLauncherService`.
    Moved code specific to Windows api to WindowsProcessLauncherService.
    Modified ActionExecute::Execute() to delegate to WindowsProcessLauncherService.

commit dd3656d
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 22 14:45:03 2024 -0400

    Added more error messages in WindowsProcessLauncherService.cpp.

commit 8117efe
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 22 14:19:45 2024 -0400

    Moved OS specific code from ActionOpen to WindowsProcessLauncherService implementation.

commit 45b1704
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 22 12:26:06 2024 -0400

    Created dummy IProcessLauncherService interface in preparation for #177.

commit dcdb37b
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Sun Sep 22 11:48:40 2024 -0400

    Implemented support for `console` attribute for `<exec>` elements.

commit 29ba134
Merge: 7bdf6bd 9e709d3
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:59:13 2024 -0400

    Merge pull request #176 from end2endzone/feature-issue174 #174

    Added missing fixed properties to the documentation.

commit 9e709d3
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:58:12 2024 -0400

    Added missing fixed properties to the documentation.

commit 7bdf6bd
Merge: 9c20b9e 088f5aa
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:43:26 2024 -0400

    Merge pull request #175 from end2endzone/feature-issue161 #161

    Feature issue161

commit 088f5aa
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:24:00 2024 -0400

    Updated CHANGES

commit 182e1dc
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:19:32 2024 -0400

    Moved section `Windows icons preview images` from a subsection of `Icons` to section `Tools`. A hint note was left at the end of the Icons section about the `Windows icons preview images` tool. #161

commit 36e0572
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 11 22:04:04 2024 -0400

    Added a `Windows icon previews...` menu that links to icon preview images. #161

commit 4303f40
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 20:57:20 2024 -0400

    More Windows icons preview images.

commit 3b91188
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 20:54:30 2024 -0400

    Extracting more icons from Windows dll.

commit 07fc0ca
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 20:54:03 2024 -0400

    Packaging directory `/resources/Windows Icon Tables` to installation.

commit 36f8ce5
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 17:26:25 2024 -0400

    Fixed url for Windows icons preview section

commit 80f4d43
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 17:24:24 2024 -0400

    Updated documentation for #161

commit 18cdca4
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 17:05:54 2024 -0400

    Added icons tables for Windows 10 Home and Windows 11 Pro.

commit 11648b5
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Tue Sep 10 17:04:36 2024 -0400

    Created script for generating an icon preview table.

commit 9c20b9e
Merge: 8ca8c57 56f1420
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Thu Sep 5 20:22:44 2024 -0400

    Merge pull request #172 from end2endzone/feature-issue148 #148

    Feature issue 148

commit 56f1420
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Thu Sep 5 18:23:47 2024 -0400

    Added checks if TypeLib is registered on system or for current user. If TyleLib is not already registered, then we assume that we can silence error 0x8002801c (TYPE_E_REGISTRYACCESS).

commit 00add9a
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 22:28:08 2024 -0400

    Fixed formatting of file TypeLibHelper.cpp.

commit 9f73115
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 22:26:48 2024 -0400

    Also support SYS_WIN32 for SYSKIND in function IsTypeLibRegisteredOnSystem().

commit a50c851
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 22:24:38 2024 -0400

    * Fixed issue #148: Can't uninstall.
    Now silencing error 0x8002801c if found and detecting that TypeLib is not already registered on system.

commit 8dce952
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 21:55:09 2024 -0400

    Added TypeLibHelper.h/cpp which have utility functions for configuring Windows Registry for TypeLib com libraries.

commit e699716
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 21:21:19 2024 -0400

    Added Reg.h/Reg.cpp from Microsoft sample project https://github.com/microsoftarchive/msdn-code-gallery-microsoft/tree/master/OneCodeTeam/C%2B%2B%20Windows%20Shell%20context%20menu%20handler%20(CppShellExtContextMenuHandler)
    Modified project sa.shellextension to enable UNICODE support for the shell extension.

commit 0c65816
Author: Antoine Beauchamp <end2endzone@gmail.com>
Date:   Wed Sep 4 21:09:27 2024 -0400

    Added more ATTACH_HOOK_DEBUGGING macros to meaningful locations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant