Skip to content

Commit ac172db

Browse files
committed
Squashed merge from branch master 2489b88 to branch feature-issue171.
1 parent bd042c7 commit ac172db

58 files changed

Lines changed: 2572 additions & 222 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGES

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ Changes for 0.10.0
88
* Fixed issue #31 : (twice) Error in logs for CContextMenu::GetCommandString()
99
* Fixed issue #109: Implement default and verbose logging.
1010
* Fixed issue #110: Create a simple command line arguments debugging application.
11+
* Fixed issue #148: Can't uninstall.
1112
* Fixed issue #150: ico icon (that do not specifically force index=0) are not working.
1213
* Fixed issue #157: Compilation fails on Github Action: `fatal error C1083: Cannot open include file: 'atlbase.h': No such file or directory`.
1314
* Fixed issue #158: Compilation fails on Github Action: `CPack error : Problem running WiX.`.
1415
* Fixed issue #159: Unit test fails on Github Actions: TestPlugins.testServices().
16+
* Fixed issue #161: Create tools to help quickly find a system icon when creating a menu.
1517
* Fixed issue #164: Fails to identify icon for HTML files.
1618
* Fixed issue #167: Improve the quality and accuracy of icon's fileextension attribute resolution (Icon::ResolveFileExtensionIcon()).
1719
* Fixed issue #171: New logo icon.
20+
* Fixed issue #177: Execute a console program without showing a window.
21+
* Fixed issue #178: Exec action should expose the created process id.
1822

1923

2024
Changes for 0.9.0

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ set(SHELLANYTHING_INSTALL_ROOT_DIR "/")
162162
set(SHELLANYTHING_INSTALL_BIN_DIR "bin")
163163
set(SHELLANYTHING_INSTALL_LIB_DIR "lib/shellanything-${SHELLANYTHING_VERSION}")
164164
set(SHELLANYTHING_INSTALL_INCLUDE_DIR "include/shellanything-${SHELLANYTHING_VERSION}")
165+
set(SHELLANYTHING_INSTALL_RESOURCE_DIR "resources")
165166
set(SHELLANYTHING_INSTALL_CMAKE_DIR ${SHELLANYTHING_INSTALL_LIB_DIR}) # CMake files (*.cmake) should have the same destination as the library files. Some also prefers to use "cmake".
166167
set(SHELLANYTHING_INSTALL_DOC_DIR "docs")
167168

@@ -376,6 +377,9 @@ install(FILES ${CMAKE_SOURCE_DIR}/resources/register.bat
376377
${CMAKE_SOURCE_DIR}/resources/unregister.bat
377378
DESTINATION ${SHELLANYTHING_INSTALL_BIN_DIR})
378379

380+
# Resources
381+
install(DIRECTORY "${CMAKE_SOURCE_DIR}/resources/Windows Icon Tables" DESTINATION ${SHELLANYTHING_INSTALL_RESOURCE_DIR})
382+
379383
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/shellanything DESTINATION ${SHELLANYTHING_INSTALL_INCLUDE_DIR})
380384
install(FILES ${SHELLANYTHING_EXPORT_HEADER}
381385
${SHELLANYTHING_VERSION_HEADER}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ The main features of ShellAnything are:
9292
* Easily integrate any third party application with custom menus.
9393
* Supports windows [keyboard mnemonics](https://en.wikipedia.org/wiki/Mnemonics_(keyboard)).
9494

95-
For more details about ShellAnything features, please refer to the [User Manual](UserManual.md).
95+
**_For more details about ShellAnything features, please refer to the [User Manual](UserManual.md)._**
9696

9797

9898

UserManual.md

Lines changed: 70 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ This manual includes a description of the system functionalities and capabilitie
5050
* [Tools](#tools)
5151
* [file_explorer_renew](#file_explorer_renew)
5252
* [arguments.debugger](#argumentsdebugger)
53+
* [Windows icons preview images](#windows-icons-preview-images)
5354
* [Plugins](#plugins)
5455
* [Plugin overview](#plugin-overview)
5556
* [C API](#c-api)
@@ -685,16 +686,7 @@ For instance, the following icon definition uses the same icon as the clicked fi
685686
<icon fileextension="${selection.filename.extension}" />
686687
```
687688

688-
689-
*_Hint_*: you can use Windows own icons to assign your &lt;icon&gt; with familiar Windows icons.
690-
The following links shows a visual representation and the index of each icons:
691-
* [Windows 7 icons in shell32.dll](https://help4windows.com/windows_7_shell32_dll.shtml)
692-
* [Windows 7 icons in imageres.dll](https://help4windows.com/windows_7_imageres_dll.shtml)
693-
* [Windows 8 icons in shell32.dll](https://help4windows.com/windows_8_shell32_dll.shtml)
694-
* [Windows 8 icons in imageres.dll](https://help4windows.com/windows_8_imageres_dll.shtml)
695-
* [Windows 10 icons in shell32.dll](https://help4windows.com/)
696-
* [Windows 10 icons in imageres.dll](https://help4windows.com/)
697-
689+
*_Hint_*: Windows have a variety of built-in icons available. You can assign a Windows built-in icons to an &lt;icon&gt; to give a familiar Windows looks and feel to your menus. See the [Windows icons preview](#windows-icons-preview) section in Tools for more details.
698690

699691

700692

@@ -714,6 +706,9 @@ The application support multiple types of actions. The list of each specific act
714706

715707
The &lt;exec&gt; element is used to launch an application. The &lt;exec&gt; element must be added under the &lt;actions&gt; element.
716708

709+
**Note:**
710+
When a process is created, ShellAnything will set property `process.id` to the process id of the new launched application.
711+
717712
The &lt;exec&gt; elements have the following attributes:
718713

719714

@@ -762,7 +757,7 @@ For example, the following launch `cmd.exe` and list files and directories recur
762757
```
763758

764759
**Note:**
765-
It is recommanded to use the `wait` attribute with the `timeout` attribute. Without a _timeout_ value, ShellAnything will wait indefinitely until the launched process exits. This can result in system instability. If the launced process freezes, pauses or never exists, it will lock _ShellAnything_ and _File Explorer_.
760+
It is recommanded to use the `wait` attribute with the `timeout` attribute. Without a _timeout_ value, ShellAnything will wait indefinitely until the launched process exits. This can result in system instability. If the launced process freezes, pauses or never exists, it will lock _ShellAnything_ and _File Explorer_ forever.
766761

767762
When combined with other elements, the `wait` attribute allows advanced use case.
768763

@@ -781,6 +776,7 @@ Tell ShellAnything to wait until the search is complete before proceeding to the
781776

782777

783778

779+
784780
#### timeout attribute: ####
785781

786782
The `timeout` attribute defines the maximum time to wait in seconds with the `wait` attribute. If the running process fails to exit before the _timeout_ value, a warning is logged and the next actions of the menu are not executed. The value must be numerical. The attribute is optional.
@@ -792,6 +788,34 @@ For example, the following launch `cmd.exe` and list files and directories recur
792788

793789

794790

791+
#### console attribute: ####
792+
793+
The `console` attribute defines how we should display the main window of the launched application. The attribute allow console applications to be launched without a console. The feature is particularly useful for running background tasks. The attribute must be set to a value that evaluates to `false` to enable the feature. See [istrue attribute](https://github.com/end2endzone/ShellAnything/blob/master/UserManual.md#istrue-attribute) or [isfalse attribute](https://github.com/end2endzone/ShellAnything/blob/master/UserManual.md#isfalse-attribute) logic for details. The attribute is optional.
794+
795+
For example, the following will launch ImageMagick `magick.exe` command line application to convert webp images to jpg :
796+
```xml
797+
<exec wait="true" console="off" path="${imagemagick.path}" arguments="&quot;${selection.path}&quot; &quot;${selection.filename.noext}.jpg&quot;" />
798+
```
799+
The conversion to JPEG format will be performed without showing a console and no window flickering will be visible.
800+
801+
**Note:**
802+
* The _console_ attribute may also affects windowed applications and may hide their main graphical user interface.
803+
* Users must be careful when launching background applications (hidden applications). A background application should not wait for user input or it may never complete/terminate gracefully. Background tasks can also cause system instability if the `wait` attribute is also set and the background process freezes, pauses or never exists because it will lock _ShellAnything_ and _File Explorer_ forever.
804+
805+
806+
807+
#### pid attribute: ####
808+
809+
The `pid` attribute defines the name of the property to set with the new launch process id.
810+
811+
For example, the following will sets the property `mspaint.process.id` to the process id of `mspaint.exe` :
812+
```xml
813+
<exec path="C:\Windows\System32\mspaint.exe" pid="mspaint.process.id" />
814+
```
815+
816+
The target property is left untouched if the process cannot be launched.
817+
818+
795819
#### verb attribute: ####
796820

797821
The `verb` attribute defines special directives on how to execute a file or launching the application. For example, the verb `open` or `edit` allows the user to open a document using the associated application. The attribute is optional.
@@ -1750,16 +1774,18 @@ The application defines a list of properties about the current runtime. The valu
17501774

17511775
The following table defines the list of fixed properties and their utility:
17521776

1753-
| Property | Description |
1754-
|-----------------------|----------------------------------------------------------|
1755-
| application.path | Matches the full path of the shell extension DLL. |
1756-
| application.directory | Matches the directory of the shell extension. |
1757-
| log.directory | Matches the directory where the logs are created. |
1758-
| config.directory | Matches the directory of the configuration files. |
1759-
| home.directory | Matches the home directory of the current user. |
1760-
| path.separator | Matches the `\` character. |
1761-
| line.separator | Matches the `\r\n` string. |
1762-
| newline | Matches the `\r\n` string. Same as `${line.separator}`. |
1777+
| Property | Description |
1778+
|-------------------------------|---------------------------------------------------------|
1779+
| application.path | Matches the full path of the shell extension DLL. |
1780+
| application.directory | Matches the directory of the shell extension. |
1781+
| application.install.directory | Matches the directory where ShellAnything is installed. |
1782+
| application.version | Matches ShellAnything current version. |
1783+
| log.directory | Matches the directory where the logs are created. |
1784+
| config.directory | Matches the directory of the configuration files. |
1785+
| home.directory | Matches the home directory of the current user. |
1786+
| path.separator | Matches the `\` character. |
1787+
| line.separator | Matches the `\r\n` string. |
1788+
| newline | Matches the `\r\n` string. Same as `${line.separator}`. |
17631789

17641790

17651791
Fixed properties are encoded in utf-8.
@@ -1873,6 +1899,29 @@ argv[33]=Ψψ
18731899
argv[34]=Ωω.
18741900
```
18751901

1902+
1903+
1904+
### Windows icons preview images ###
1905+
1906+
Windows have a variety of built-in icons available. You can assign a Windows built-in icons to an &lt;icon&gt; to give a familiar Windows looks and feel to your menus. ShellAnything has preview images of the icons in most Windows dll. It allows one to quickly identify the file and the index of a desired icon.
1907+
1908+
The following images show all icons within popular Windows dll files:
1909+
1910+
Microsoft Windows 10 Home:
1911+
* [shell32.dll](resources/Windows%20Icon%20Tables/Win%2010%20Home%20-%20shell32.dll%20icons.png)
1912+
* [imageres.dll](resources/Windows%20Icon%20Tables/Win%2010%20Home%20-%20imageres.dll%20icons.png)
1913+
* [ieframe.dll](resources/Windows%20Icon%20Tables/Win%2010%20Home%20-%20ieframe.dll%20icons.png)
1914+
* [netshell.dll](resources/Windows%20Icon%20Tables/Win%2010%20Home%20-%20netshell.dll%20icons.png)
1915+
1916+
Microsoft Windows 11 Pro:
1917+
* [shell32.dll](resources/Windows%20Icon%20Tables/Win%2011%20Pro%20-%20shell32.dll%20icons.png)
1918+
* [imageres.dll](resources/Windows%20Icon%20Tables/Win%2011%20Pro%20-%20imageres.dll%20icons.png)
1919+
* [ieframe.dll](resources/Windows%20Icon%20Tables/Win%2011%20Pro%20-%20ieframe.dll%20icons.png)
1920+
* [netshell.dll](resources/Windows%20Icon%20Tables/Win%2011%20Pro%20-%20netshell.dll%20icons.png)
1921+
1922+
1923+
1924+
18761925
# Plugins #
18771926

18781927

30.1 KB
Loading
161 KB
Loading
349 KB
Loading
134 KB
Loading
411 KB
Loading
24 KB
Loading

0 commit comments

Comments
 (0)