Page 1 sur 2

Utilitaires basiques

Publié : sam. 30/mars/2019 13:30
par cage
Bonjour,

3 petits utilitaires sans prétention qui me facilitent la vie, runnotepad, runnotepad++ et runwordpad

En fond d'écran du Bureau, j'ai rajouté un menu Fichiers
Ce menu me permet de rapidement créer le type de fichier que je souhaite.
Quand je le sélectionne, il me présente plusieurs sous-menus dont:
Fichier pb
Fichier txt
Fichier txt+
Fichier rtf
etc...
Cela me permet de créer un fichier unique d'un simple clic dans pb, notepad, notepad++,wordpad,...
Pour Notepad++, j'utilise une version portable "Notepad++ minimalist package 32-bit x86"
Pour enregistrer notepad++ dans les menus contextuels, voici la méthode que j'utilise
::-------------------------------------------
:: To register Notepad++ as shell extension

:: As admin cmd goto NPP folder

:: for X86
regsvr32 /i NppShell32.dll

:: for X64
regsvr32 /i NppShell64.dll
::-------------------------------------------
:: To unregister Notepad++ as shell extension

:: As admin cmd goto NPP folder

:: for X86
regsvr32 /u NppShell32.dll

:: for X64
regsvr32 /u NppShell64.dll
::-------------------------------------------
RUNNOTEPAD

Code : Tout sélectionner

;
;************************************************************************
;Titre      : runnotepad.pb
;Auteur     : (C) 2019 CAGE
;Date       : 2019/03/30
;Version PB : PureBasic 5.70 LTS (Windows - x86)
;Version PB : PureBasic 5.70 LTS (Windows - x64)
;Compiler Options
;Compiler Options : Executable format: Console ou Windows au choix
;Compile/Run      : Create temporary executable in the source directory
;
;Libairies: aucunes
;
;************************************************************************
;

EnableExplicit

OnErrorGoto(?ErrorHandler)

Define DESKTOP$ = GetUserDirectory(#PB_Directory_Desktop)

Define ext$ = ".txt"

Define NOTEPAD$ = "notepad.exe"

Define D = Date()

Define YY = Year(D)
Define MM = Month(D)
Define DD = Day(D)
Define HH = Hour(D)
Define II = Minute(D)
Define SS = Second(D)

Define out, FILE$

FILE$ = DESKTOP$
FILE$ + "Fichier_"
FILE$ + RSet(Hex(YY+MM+DD+II+SS),4,"0") + ext$

If FileSize(FILE$) = -1
  out = OpenFile(#PB_Any, FILE$, #PB_UTF8)
  If out
    WriteStringN(out,FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", D ))
    CloseFile(out)
  Else
    End
  EndIf
EndIf

RunProgram(NOTEPAD$, FILE$, DESKTOP$)

ErrorHandler:

End
RUNNOTEPAD++

Code : Tout sélectionner

;
;************************************************************************
;Titre      : runnotepad++.pb
;Auteur     : (C) 2019 CAGE
;Date       : 2019/03/30
;Version PB : PureBasic 5.70 LTS (Windows - x86)
;Version PB : PureBasic 5.70 LTS (Windows - x64)
;Compiler Options
;Compiler Options : Executable format: Windows ou Console au choix
;Compile/Run      : Create temporary executable in the source directory
;
;Libairies: aucunes
;
;************************************************************************
;

EnableExplicit

OnErrorGoto(?ErrorHandler)

Define DESKTOP$ = GetUserDirectory(#PB_Directory_Desktop)

Define ext$ = ".txt"

Define NOTEPAD$ = "y:\yh\tools\npp\notepad++.exe"

Define D = Date()

Define YY = Year(D)
Define MM = Month(D)
Define DD = Day(D)
Define HH = Hour(D)
Define II = Minute(D)
Define SS = Second(D)

Define out, FILE$

FILE$ = DESKTOP$
FILE$ + "Fichier_"
FILE$ + RSet(Hex(YY+MM+DD+II+SS),4,"0") + ext$

If FileSize(FILE$) = -1
  out = OpenFile(#PB_Any, FILE$, #PB_UTF8)
  If out
    WriteStringN(out,FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", D ))
    CloseFile(out)
  Else
    End
  EndIf
EndIf

RunProgram(NOTEPAD$, FILE$, DESKTOP$)

ErrorHandler:

End
RUNWORDPAD

Code : Tout sélectionner

;
;************************************************************************
;Titre      : runnotepad++.pb
;Auteur     : (C) 2019 CAGE
;Date       : 2019/03/30
;Version PB : PureBasic 5.70 LTS (Windows - x86)
;Version PB : PureBasic 5.70 LTS (Windows - x64)
;Compiler Options
;Compiler Options : Executable format: Windows ou Console au choix
;Compile/Run      : Create temporary executable in the source directory
;
;Libairies: aucunes
;
;************************************************************************
;

EnableExplicit

OnErrorGoto(?ErrorHandler)

Define DESKTOP$ = GetUserDirectory(#PB_Directory_Desktop)

Define ext$ = ".txt"

Define NOTEPAD$ = "y:\yh\tools\npp\notepad++.exe"

Define D = Date()

Define YY = Year(D)
Define MM = Month(D)
Define DD = Day(D)
Define HH = Hour(D)
Define II = Minute(D)
Define SS = Second(D)

Define out, FILE$

FILE$ = DESKTOP$
FILE$ + "Fichier_"
FILE$ + RSet(Hex(YY+MM+DD+II+SS),4,"0") + ext$

If FileSize(FILE$) = -1
  out = OpenFile(#PB_Any, FILE$, #PB_UTF8)
  If out
    WriteStringN(out,FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", D ))
    CloseFile(out)
  Else
    End
  EndIf
EndIf

RunProgram(NOTEPAD$, FILE$, DESKTOP$)

ErrorHandler:

End

Re: Utilitaires basiques

Publié : sam. 30/mars/2019 22:35
par cage
Bonsoir,

Un autre utilitaire (runpb) pour PB cette fois.
Il permet d'ouvrir PB avec un fichier unique sur le bureau

Code : Tout sélectionner

;
;************************************************************************
;Titre      : runpb.pb
;Auteur     : (C) 2019 CAGE
;Date       : 2019/03/30
;Version PB : PureBasic 5.70 LTS (Windows - x86)
;Version PB : PureBasic 5.70 LTS (Windows - x64)
;Compiler Options
;Compiler Options : Executable format: Windows ou Console au choix
;Compile/Run      : Create temporary executable in the source directory
;
;Libairies: aucunes
;
;************************************************************************
;

EnableExplicit

OnErrorGoto(?ErrorHandler)

Define DESKTOP$ = GetUserDirectory(#PB_Directory_Desktop)

Define ext$ = ".pb"

Define ALIAS$ = "CAGE"

Define PUREBASIC$ = "C:\Program Files\PureBasic\PureBasic.exe"

Define D = Date()

Define YY = Year(D)
Define MM = Month(D)
Define DD = Day(D)
Define HH = Hour(D)
Define II = Minute(D)
Define SS = Second(D)

Define out, FILE$

FILE$ = DESKTOP$
FILE$ + "Fichier_"
FILE$ + RSet(Hex(YY+MM+DD+II+SS),4,"0") + ext$

Define t$
t$ = ";"+#CRLF$
t$ + ";************************************************************************"+#CRLF$
t$ + ";Titre      : Application.pb"+#CRLF$
t$ + ";Auteur     : (C) "+FormatDate("%yyyy",D)+" "+ALIAS$+#CRLF$
t$ + ";Date       : "+FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", D)+#CRLF$
t$ + ";Version PB : PureBasic 5.70 LTS (Windows - x86)"+#CRLF$
t$ + ";Version PB : PureBasic 5.70 LTS (Windows - x64)"+#CRLF$
t$ + ";Compiler Options"+#CRLF$
t$ + ";Compiler Options : Enable moderm theme support (for Windows X and above)"+#CRLF$
t$ + ";Compiler Options : Executable format: Windows ou Console au choix"+#CRLF$
t$ + ";Compiler Options : Request Administrator mode for Windows Vista and above"+#CRLF$
t$ + ";Compile/Run      : Create temporary executable in the source directory"+#CRLF$
t$ + ";"+#CRLF$
t$ + ";Libairies: aucunes"+#CRLF$
t$ + ";"+#CRLF$
t$ + ";************************************************************************"+#CRLF$
t$ + ";"+#CRLF$
t$ + "EnableExplicit"+#CRLF$
t$ + #CRLF$
t$ + "OnErrorGoto(?ErrorHandler)"+#CRLF$
t$ + #CRLF$
t$ + "; <--- Inclure le programme ici"+#CRLF$
t$ + #CRLF$
t$ + "ErrorHandler:"+#CRLF$
t$ + #CRLF$
t$ + "End"+#CRLF$

If FileSize(FILE$) = -1
  out = OpenFile(#PB_Any, FILE$, #PB_UTF8)
  If out
    WriteStringN(out, "; "+FormatDate("%yyyy/%mm/%dd %hh:%ii:%ss", D ))
    WriteStringN(out, t$)
    CloseFile(out)
  Else
    End
  EndIf
EndIf

RunProgram(PUREBASIC$, FILE$, DESKTOP$)

ErrorHandler:

End
CAGE

Re: Utilitaires basiques

Publié : sam. 30/mars/2019 22:47
par cage
Voici un fichier reg pour ajouter le menu Applications fichiers au menu clic doit du bureau.

Image

Pensez a modifier les noms des dossiers y:\\yh\\tools\\npp\\ et y:\\dos\\

Vous trouverez toutes les sources ici

Contenu du fichier HCR_DesktopBackgroundMenu7-Applications_fichiers.reg

Code : Tout sélectionner

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Menu7]
"MUIVerb"="Applications fichiers"
"SubCommands"="notepad;npp;wordpad;runpb;runwordpad;runnotepad;runnotepad++"
"icon"="explorer.exe"
"Position"="Top"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
@="Notepad"
"icon"="notepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\command]
@="notepad.exe"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\npp]
@="Notepad++"
"icon"="y:\\yh\\tools\\npp\\notepad++.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\npp\command]
@="y:\\yh\\tools\\npp\\notepad++.exe"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\wordpad]
@="Wordpad"
"icon"="C:\\Program Files\\Windows NT\\Accessories\\wordpad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\wordpad\command]
@="wordpad.exe"

;//----------------------------------------------------------------------------------------------------------


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runpb]
@="Fichier pb (purebasic)"
"icon"="runpb.exe"
"CommandFlags"=dword:00000020

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runpb\command]
@="y:\\dos\\runpb.exe"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runwordpad]
@="Fichier rtf (wordpad)"
"icon"="runwordpad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runwordpad\command]
@="y:\\dos\\runwordpad.exe"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runnotepad]
@="Fichier txt (notepad)"
"icon"="runnotepad.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runnotepad\command]
@="y:\\dos\\runnotepad.exe"

;//

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runnotepad++]
@="Fichier txt (notepad++)"
"icon"="runnotepad++.exe"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\runnotepad++\command]
@="y:\\dos\\runnotepad++.exe"

CAGE

Re: Utilitaires basiques

Publié : sam. 30/mars/2019 23:09
par Ar-S
J'avais paumé un code similaire (au dernier) pour lancer la désinstalle d'un programme via un clic droit.
Merci

Notez que pour les icones, vous pouvez indiquer un fichier .ico
Si ce fichier contient plusieurs icones, il vous faudra ajouter une virgule et un chiffre allant de 0 à x
Ex : CHEMIN\mon_icone.ico,0 pour afficher la 1ere icone ou CHEMIN\mon_icone.ico,2 pour afficher la 3eme icone etc..

Re: Utilitaires basiques

Publié : lun. 22/avr./2019 8:42
par Ar-S
cage a écrit :Voici un fichier reg pour ajouter le menu Applications fichiers au menu clic doit du bureau.
Je suis en train de faire un logiciel pour ajouter des exe / dossiers au menu contextuel.
Pour le moment je n'ai pas implanté les sous dossiers (MUIverb) et l'accès aux commandes windows (ton .reg le fait très bien).

Image

Re: Utilitaires basiques

Publié : lun. 22/avr./2019 9:29
par kernadec
bjr cage
sympa le menu appli..
merci pour le partage :D

Cordialement

Re: Utilitaires basiques

Publié : mer. 30/mars/2022 13:13
par Ar-S
Salut.
Je déterre un peu le topic.
J'ai paumé le code/la clé permettant de directement lancer un "désinstaller" du menu contextuel au clic droit sur un prog.

Re: Utilitaires basiques

Publié : mer. 30/mars/2022 23:02
par Ollivier
ArS a écrit : J'ai paumé le code/la clé permettant de directement lancer un "désinstaller" du menu contextuel au clic droit sur un prog.
Est-ce que tu peux réinterpréter ta phrase en la composant, par exemple, de son contexte que nous fassions jouissance d'une meilleure compréhension ?

Re: Utilitaires basiques

Publié : jeu. 31/mars/2022 14:36
par Ar-S
Via le menu contextuel lors d'un clique droit sur un raccourcis d'appli sur le bureau (ou ailleurs), il me semble qu'il y a une manipulation dans la base de registre pour permettre d'ajouter "désinstaller" l'appli ciblée.

Re: Utilitaires basiques

Publié : jeu. 31/mars/2022 18:56
par Ollivier
(menu fond d'écran)

Code : Tout sélectionner

HKEY_CLASSES_ROOT\Directory\Background\shell
Sous 'Background', il y a 'DefaultIcon' qui suit.

Re: Utilitaires basiques

Publié : jeu. 31/mars/2022 21:00
par Ar-S
Certes.. Mais ça n'explique pas le desinstaller qui lancerait le uninstall du programme ciblé.

Re: Utilitaires basiques

Publié : jeu. 31/mars/2022 21:08
par case
j'ai trouve ça si ça peux aider
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Windows.AddRemovePrograms]
"CanonicalName"="{4E2C075C-1CC1-4E0C-BF69-D0317B8F9539}"
"CommandStateHandler"="{E410F8AE-00A1-4A1B-8247-924705718354}"
"CommandStateSync"=""
"Description"="@shell32.dll,-31328"
"FolderHandler"="{0AC0837C-BBF8-452A-850D-79D08E667CA7}"
"Icon"="shell32.dll,-271"
"MUIVerb"="@shell32.dll,-31327"
"VerbHandler"="{a2e6d9cc-f866-40b6-a4b2-ee9e1004bdfc}"
"VerbName"="AddRemovePrograms"

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Windows.AddRemovePrograms\command]
"DelegateExecute"="{E410F8AE-00A1-4A1B-8247-924705718354}"

Re: Utilitaires basiques

Publié : ven. 01/avr./2022 9:43
par Ar-S
Merci Case,
Hélas cette clé ne fait qu'afficher la possibilité d'ouvrir "ajout/suppression de programme" globale de windows, j'ai déjà cette fonction (dans une version plus courte) dans mon menu.
Image

Je sais que des softs le font. Je crois que je vais sauver ma bdr et en installer un puis comparer la bdr avant/aprés l'installation. Je devrais bien trouver une piste.

Re: Utilitaires basiques

Publié : ven. 01/avr./2022 10:11
par Ar-S
Bon, même en comparant la BDR, je ne trouve pas de référence aux clés principales pour ce genre de manip ni de trace du prog
que ce soit en

Code : Tout sélectionner

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\
ou en

Code : Tout sélectionner

HKEY_CLASSES_ROOT\DesktopBackground\Shell\
Je pense que le programme (windows uninstaller) doit simplement une fois lancer, récupérer le path du fichier selectionner et lancer le "uninstall.exe" dans le dossier si présent.

Re: Utilitaires basiques

Publié : ven. 01/avr./2022 15:39
par Marc56
Regarde aussi sur le net les information concernant le numéro d'AppID (chaine aléatoire générée par les Setup (ie: InnoSetup)) qui identifie un programme Windows au niveau système et le rend unique pour permettre les mises à jour même avec un nom différent.

Ces ID sont listés dans
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
La clé UninstallString indique la commande de déinstallation
:wink: