19/09/2025
Topic:
Adding a shortcut from GodMode
GianlucaAdministrator
|
You can see the text among the binary chars. |
19/09/2025
Topic:
Adding a shortcut from GodMode
GianlucaAdministrator
|
Ok I haven't understood your problem was the loading part. It's strange, I opened the shortcut with the simple Windows notepad. Probably the way you are opening it tricks Windows that opens the shortcut's target instead. But in this case the target is not a file so it doesn't succeed.
Try this procedure: since a shortcut file has a .lkn extension, change the extension in .txt and now open it with your text editor. |
21/09/2025
Topic:
Adding a shortcut from GodMode
GianlucaAdministrator
|
It's only an Explorer visualization limit. Try to use an alternative resource explorer like Double Commander or the old good CLI. You'll see the files like they really are. |
24/09/2025
Topic:
Adding a shortcut from GodMode
GianlucaAdministrator
|
I don't know why it happens...
This is the shortcut content I see (the bold part is the magic string):
L À F jÄ ± hU)ª GODMOD~1.{ED Ž ï¾ËZZ2[Òc. ½ p°‚ G o d M o d e . { E D 7 B A 4 7 0 - 8 E 5 4 - 4 6 5 E - 8 2 5 C - 9 9 7 1 2 0 4 3 E 0 1 C } ï¾p¤{íTŽ^F‚\™q Cà ¤ ž3‹#p$ ùô)tX®@‚r?<kÝÖ€³„½¢Œi« Hõ4 Y 1SPS0ñ%·ïG¥ñ`Œžë¬= C h a n g e F o n t S e t t i n g s ¡ 1SPS7˜x|!C³ðà iqÕ… 9 M i c r o s o f t . F o n t s \ : : { 9 3 4 1 2 5 8 9 - 7 4 D 4 - 4 E 4 E - A D 0 E - E 0 C B 6 2 1 4 4 0 F D } A 1SPSà…ŸòùOh«‘ +'³Ù% f a u n t ; f o n t s ; t y p e ; t r u e t y p e ; t y p e ; o p e n t y p e ; f o u n t ; c o n f g ; c o n f i g u r a t i o n ; c o n f i g u r e ; d e f i n e ; m a n a g e m e n t ; o p t i o n s ; p e r s o n a l i s e ; p e r s o n a l i z e ; u p ; s e t t i n g s ; s e t u p ; a u t o h i d e ; a u t o - h i d e ; a u t o m a t i c a l l y ; h i d e ; m a k e ; i n v i s i b l e ; a u t o m a t i c a l l y ; a u t o s h o w ; a u t o - s h o w ; m a k e ; v i s i b l e ; s e e ; s h o w ; u n l o c k ; v i e w ; 1 1SPS³wíÆlE®[([8×° S
The God mode feature I choose to create the shortcut has been "Change Font Settings".
Anyway... my suggestion is a bit lame. It's easier to search the magic strings (the right name is canonical names) in the Internet and, if you find a good source, please share it because it'd be a precious resource for others too.
Anyway if you want to use the GUIDs instead, the right command is: explorer shell:::{93412589-74D4-4E4E-AD0E-E0CB621440FD}
To configure this command in SyMenu you have to proceed in the usual way: create a new SyProgram then add: explorer.exe as a path and shell:::{93412589-74D4-4E4E-AD0E-E0CB621440FD} as parameter.
Why am I suggesting you to use the GUIDs instead of the canonical names? Because there's plenty of documentation for them:
- https://winaero.com/clsid-guid-shell-list-windows-10/
- https://www.tenforums.com/tutorials/3123-clsid-key-guid-shortcuts-list-windows-10-a.html
Let me know how you decide to proceed please. |
24/09/2025
Topic:
Adding a shortcut from GodMode
GianlucaAdministrator
|
In the Windows world a canonical name is the easy way to refer to a function to avoid referring to it with its ID (the GUID). You found canonical names in god mode, in the control panel, in start menu, in several system snap ins, and so on. |
01/10/2025
Topic:
Start minimized Thunderbird
GianlucaAdministrator
|
Hi Space! It's simply impossible. SyMenu has an option to start a program maximized or minimized, but PAF programs use a launcher (the portabilizer), and SyMenu can't do anything beyond asking the launcher to start in a specific state. Unfortunately, apart from the splash screen, the launcher doesn't have a window and doesn't pass the request about window state to the actual program, so there's no solution.
Well, actually, there are two possible solutions... but be warned, they're not exactly simple.
1) Ask John  This is a limitation of the PAF launcher. Ideally, you should be able to run it with a command-line argument to tell it to launch the real app minimized... but I fear they haven't considered this. Try checking the documentation here to be sure: https://portableapps.com/manuals/PortableApps.comLauncher/ref/launcher.ini/launch.html Anyway, ask John, he's always super kind and might implement the feature in no time.
2) Hack it Strangely enough, I had a similar need with Firefox. I wanted Firefox to open maximized and move to my primary monitor (I use two). So I created a customizable PowerShell script, which I’ve attached below. In SyMenu, you just need to create a SyProgram where the Path is "powershell.exe" and the Arguments are: -File [full path to the PS script] -processName [name of your program] You can run it after launching Thunderbird, or use it to launch Thunderbird and minimize it directly.
Of course, feel free to modify the script however you like and maybe share it here once it's done. You could even make it non-generic by hardcoding the process name, but I kept it generic so it can be reused for other programs. Or you could add a parameter to specify whether the program should be maximized or minimized. Just my two cents for further improvements.
# -------------------------------------------------------------------------------------------------------------- # Created by : Gianluca Negrelli # Copyright : 2025.03.27 # -------------------------------------------------------------------------------------------------------------- # Maximizes the window of a process and moves it to the primary monitor, which in my # case is the one on the right. # The process name is passed without extension as an argument. E.g. firefox. # The script is used by SyMenu in the autoexec after launching certain programs. # --------------------------------------------------------------------------------------------------------------
#$processName = $args[0] # Get the process name from the command line if provided (e.g. -processName firefox). param ( [string]$processName ) # For debugging # $processName = "firefox"
# Definition of Win32 functions as a custom type. $signature = @" using System; using System.Runtime.InteropServices; public class Win32 { [DllImport("user32.dll", SetLastError = true)] public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
[DllImport("user32.dll", SetLastError = true)] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")] public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")] public static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndpl);
public const int SW_MAXIMIZE = 3; public const int SW_MINIMIZE = 6; public const int SW_RESTORE = 9; public const uint SWP_NOZORDER = 0x0004; public const uint SWP_NOACTIVATE = 0x0010; public const uint SWP_SHOWWINDOW = 0x0040;
[StructLayout(LayoutKind.Sequential)] public struct RECT { public int Left; public int Top; public int Right; public int Bottom; }
[StructLayout(LayoutKind.Sequential)] public struct WINDOWPLACEMENT { public int length; public int flags; public int showCmd; public POINT ptMinPosition; public POINT ptMaxPosition; public RECT rcNormalPosition; }
[StructLayout(LayoutKind.Sequential)] public struct POINT { public int x; public int y; } } "@
# Load the Windows Forms assembly and the custom Win32 type. Add-Type -AssemblyName System.Windows.Forms Add-Type -TypeDefinition $signature
if (-not $processName ){ Write-Host "Missing process name to search for (e.g. firefox)" return }
# Query the system to check if more than one screen is present. $screens = [System.Windows.Forms.Screen]::AllScreens
# Delay allows programs to start before performing window operations. Write-Host "Waiting 5 seconds to allow $processName to activate..." Start-Sleep -Seconds 5
# Get all processes matching the provided $processName that have a window ($_.MainWindowHandle -ne 0). $windows = Get-Process -Name $processName | Where-Object { $_.MainWindowHandle -ne 0 } foreach($window in $windows) { # Get the window handle $mainWindowHandle = $window.MainWindowHandle
# Check if the window is already on the primary screen. $screen = [System.Windows.Forms.Screen]::FromHandle($mainWindowHandle) Write-Output "The window '$($window.ProcessName)' is on screen: $($screen.DeviceName)"
if ($screens.Count -ne 1 -and $screen.DeviceName -eq "\\.\DISPLAY2") { # More than one screen is present and it's not on monitor 2, so repositioning is needed.
# If maximized, restore first because taskbar differences between screens affect sizing. $placement = New-Object Win32+WINDOWPLACEMENT $placement.length = [System.Runtime.InteropServices.Marshal]::SizeOf($placement) if ([Win32]::GetWindowPlacement($mainWindowHandle, [ref]$placement)) { if ($placement.showCmd -eq [Win32]::SW_MAXIMIZE) { # Window is maximized, needs to be restored. [Win32]::ShowWindow($mainWindowHandle, [Win32]::SW_RESTORE) } }
# Get the current rectangle of the restored window to replicate size and position on the primary screen. $rect = New-Object Win32+RECT [Win32]::GetWindowRect($mainWindowHandle, [ref]$rect)
# Calculate current width and height of the window. $width = $rect.Right - $rect.Left $height = $rect.Bottom - $rect.Top
# Calculate window position on the left monitor, assuming secondary is mapped at x = -1920 $left = $rect.Left + 1920 $top = $rect.Top
# Move the window to the primary monitor. $windowPosFlags = [Win32]::SWP_NOZORDER -bor [Win32]::SWP_NOACTIVATE -bor [Win32]::SWP_SHOWWINDOW [Win32]::SetWindowPos($mainWindowHandle, [IntPtr]::Zero, $left, $top, $width, $height, $windowPosFlags) }
# Maximize the window [Win32]::ShowWindow($mainWindowHandle, [Win32]::SW_MAXIMIZE) }
|
09/10/2025
Topic:
Why is PatchMyPC discontinued?
GianlucaAdministrator
|
You're right. I've just added it again. The problem is they don't advertise the home version enough. If you go to the page for a versions comparison (here https://patchmypc.com/pricing/) you can find no trace of it. |
19/10/2025
Topic:
A More Compact Menu Display?
GianlucaAdministrator
|
Unfortunately, the items' padding is fixed. I noticed you already tried reducing the font size, but as you surely realized, it doesn't affect the spacing between items. The only way to reduce the overall menu height is by decreasing the number of items at the root level. |
29 days ago
Topic:
App screen text too small to read on laptop
GianlucaAdministrator
|
Yes, the native solution exists but, unfortunately, it's a workaround not a real solution. With this one you'll get a proper font and objects dimensions but everything will appear a bit blurred but this is the only solution. Read here https://www.ugmfree.it/manual#Advanced_menu_Options_General and flag the last checkbox. |
29 days ago
Topic:
Improved drag and drop folder organisation
GianlucaAdministrator
|
Hi David. Indeed what you are searching for, already exists in the configuration form. https://www.ugmfree.it/manual#dragAndDrop Howevere there's a limitaion: the drag and drop feature only works with a single item at a time. This means you can move one SyProgram or one SyFolder but not two of them at once. |
4 days ago
Topic:
[SPS Editor] Rename file after install
GianlucaAdministrator
|
The command: RemFile rustdesk- bla bla bla... works as these ones: ZipZapFile bla bla bla... ReadAloudFile bla bla bla... VaporizeFile bla bla bla... or any other one you can think.
Indeed it's not working at all because the SPS scripting engine IGNORES anything it doesn't recognize. RemFile command is simply not recognized. It seems it's working because it apparently renames the file from rustdesk-1.4.3-x86_64.exe to rustdesk-x86_64.exe. Indeed the file is renamed directly during the download. RenFile as a command becomes necessary when you download a package that contains the file to rename, not the file itself.
The thing I can't understand is why you got the error on the right command: RenFile rustdesk-*x86_64.exe rustdesk-x86_64.exe In theory the SPS scripting wouldn't throw an error if a renaming doesn't succeed. In fact I tried to add: RenFile Bubba.exe Bubba-x86_64.exe Bubba.exe doesn't exist but the process closed successfully because at the end it finds everything it needs and, who cares if Bubba.exe wasn't there? Maybe it was a remnant from a previous package version.
So the interesting thing about this problem is: are you testing the SPS online or with a locally downloaded rustdesk file? In the second case, what is the exact name of the downloaded file? |