MiniDeskTopMenu

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

MiniDeskTopMenu

Message par Jacobus »

Voici une petite appli qui m'était nécessaire et donc qui peut vous être utile. Il s'agit de réunir tous les raccourcis du bureau dans un menu accessible par une icône dans la zone de notification. Vous me direz, à quoi ça sert vu que le bureau il est dispo de suite? Tout simplement à lancer un programme ou ouvrir un répertoire (si le raccourci est sur le bureau) sans fermer ou cacher les fenêtres ouvertes. Enfin, chacun lui trouvera son utilité ou pas.

Télécharger MDM >> MiniDesktopMenu v1.3
Mis à jour le 16/09/09

Ce qu'il faut savoir :
- Avant de mettre à jour, Quitter MDM depuis le menu, sinon il demandera de redémarrer Windows pour terminer l'installation.
- Installeur automatique
- Il n'y a pas de Trojan ou autre saleté dedans!
- Démarre aussitôt après l'installation
- Il n'y a pas d'interface fenêtrée, c'est juste un menu dans le systray. Un clic droit ou gauche, au choix, sur l'icône pour afficher le menu.
- Génère les menus dynamiquement en fonction des objets du bureau
- Option sonore : 3 sons au choix.
- L'extension .lnk est retiré dans les menus.
- Actualisation auto des préférences ( sauf menus eux mêmes, voir ci-dessous)
- Pour actualiser en cas de nouveau raccourci sur le bureau il faut cliquer sur 'Actualiser les menus' sans avoir à quitter le programme, mais bon on en ajoute pas tous les jours...
- Utilise le registre pour sauvegarder les paramètres utilisateur
- Le désinstalleur inclus nettoie le registre des clés ajoutées (autant faire propre)
- Il faut quelques secondes pour que l'icône apparaisse dans la zone de notification (analyse du bureau) lors du lancement.
- Au premier lancement aller dans Préférences utilisateur\Réglages pour paramètrer les menus.
- C'est toujours freeware 8)
- C'est compatible Windows Xp et Vista, 32 et 64 bits.

Comme d'hab, si des questions, posez...

@+ Jacobus
Dernière modification par Jacobus le mer. 16/sept./2009 9:18, modifié 7 fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

Si ça ne te pose pas de problème, pourrais tu partager les sources? Je suis toujours intéressé par ce genre de petits programmes.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Allez, c'est cadeau, le voilà en open source.
Code in PB 4.30
ATTENTION AUX DATA SECTIONS! Utilisez vos images et sons.

Code : Tout sélectionner

;- Constantes
Enumeration 
#WINMAIN
#SonIn
#PopUp_Raccourcis
#SystrayIcone

#WinMenuSetting
#ContainerTextReglages
#TextReglages
#TextOptionsIcons
#Check_IconsDesktopUser
#Check_IconsDesktopAllUsers
#Check_IconsQuickLaunch
#TextOptionsConfort
#Check_DemarrageWindows
#Check_Sonore
#ContainerSetting
#Btn_ApplySetting
#Check_params
#Btn_CancelSetting
#StatusSetting

#setting
#About
#Website
#QuitMiniDesktop
#DynMenu1 = 100
#DynMenu2 = 200
#DynMenu3 = 300
EndEnumeration

#PROGRAMNAME = "Mini DeskTop Menu"
#VERSION = "1.0.01.09"
#STATUT = "Freeware"

;-Catch Sounds
InitSound()
Global SonIn
SonIn  = CatchSound(#SonIn, ?SonIn)
DataSection 
SonIn  : IncludeBinary "..\Salut Bonhomme.wav"
EndDataSection

;-Fonts
Global Font0 
Font0 = LoadFont(0, "Arial", 8,#PB_Font_Bold|#PB_Font_HighQuality)
;-Images
Global Image0, Image1, Image2, Image3, Image4
Image0  = CatchImage(0, ?Image0)
Image1  = CatchImage(1, ?Image1)
Image2  = CatchImage(2, ?Image2)
Image3  = CatchImage(3, ?Image3)
Image4  = CatchImage(4, ?Image4)


Procedure.s GetSystDirectory(Flag.l)

    hKey.l = 0
    keyvalue.s = Space(255)
    datasize.l = 255
    If Flag < 24 Or Flag = 36
        OpenKey.l = #HKEY_CURRENT_USER
    Else
        OpenKey.l = #HKEY_LOCAL_MACHINE
    EndIf
    SubKey.s = "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
    Select Flag
        Case 1 ; Dossier où se trouve les outils d'administration
            ValueName.s = "Administrative Tools"
        Case 2 ; Application Data
            ValueName.s = "AppData"
        Case 3 ; Repertoire temporaire pour les fichiers internet
            ValueName.s = "Cache"
        Case 4 ; Repertoire temporaire pour les fichiers à graver
            ValueName.s = "CD Burning"
        Case 5 ; Dossier des cookies
            ValueName.s = "Cookies"
        Case 6 ; Bureau de l'utilisateur
            ValueName.s = "Desktop"
        Case 7 ; Dossier des favoris
            ValueName.s = "Favorites"
        Case 8 ; Dossier contenant les polices de Windows
            ValueName.s = "Fonts"
        Case 9 ; Historique de Windows
            ValueName.s = "History"
        Case 10 ; Application Data dans paramètres locaux
            ValueName.s = "Local AppData"
        Case 11 ; Paramètres locaux
            ValueName.s = "Local Settings"
        Case 12 ; Dossier contenant vos musiques dans Mes Documents
            ValueName.s = "My Music"
        Case 13 ; Dossier contenant vos images dans Mes Documents
            ValueName.s = "My Pictures"
        Case 14 ; Dossier contenant vos vidéos dans Mes Documents
            ValueName.s = "My Video"
        Case 15 ; Voisinage réseau
            ValueName.s = "NetHood"
        Case 16 ; Mes Documents
            ValueName.s = "Personal"
        Case 17 ; Voisinage d'impression
            ValueName.s = "PrintHood"
        Case 18 ; Menu Démarrer\Progammes
            ValueName.s = "Programs"
        Case 19 ; Fichiers récemments ouverts (contient des raccourcis)
            ValueName.s = "Recent"
        Case 20 ; Dossier envoyer vers
            ValueName.s = "SendTo"
        Case 21 ; Menu Démarrer
            ValueName.s = "Start Menu"
        Case 22 ; Menu Démarrer\Progammes\Démarrage
            ValueName.s = "Startup"
        Case 23 ; Modèles
            ValueName.s = "Templates"
        Case 36 ; Microsoft\Internet Explorer\Quick Launch
            ValueName.s = "AppData"
;         Case 37 ; C:\WINDOWS\system32
;             ValueName.s = "system32"
            
            ; Même chose mais pour 'Tous les utlisateurs'
            
        Case 24
            ValueName.s = "Common Administrative Tools"
        Case 25
            ValueName.s = "Common AppData"
        Case 26
            ValueName.s = "Common Desktop"
        Case 27 ; Documents de tous les utilisateurs , il est aussi le dossier nommé 'Documents partagés'
            ValueName.s = "Common Documents"
        Case 28
            ValueName.s = "Common Favorites"
        Case 29
            ValueName.s = "Common Programs"
        Case 30
            ValueName.s = "Common Start Menu"
        Case 31
            ValueName.s = "Common Startup"
        Case 32
            ValueName.s = "Common Templates"
        Case 33
            ValueName.s = "CommonMusic"
        Case 34
            ValueName.s = "CommonPictures"
        Case 35
            ValueName.s = "CommonVideo"
;         Case 41  ; C:\WINDOWS\system32
;             ValueName.s = "System32"
    EndSelect
    
    If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)
        MessageBeep_(#MB_ICONEXCLAMATION)
        keyvalue = "Pas de clé"
    Else
        If RegQueryValueEx_(hKey, ValueName, 0, 0, @keyvalue, @datasize)
            keyvalue = "" ; si la sous-clé n'éxiste pas renvoi un texte vide
        Else
            keyvalue = Left(keyvalue, datasize - 1) ; si la sous clé existe renvoi l'adresse du repertorie demandé
        EndIf
        RegCloseKey_(hKey)
    EndIf
    If Flag = 36
        keyvalue = keyvalue + "\Microsoft\Internet Explorer\Quick Launch"
    EndIf
    If Right(keyvalue, 1) <> "\" : keyvalue = keyvalue + "\" : EndIf
    ProcedureReturn keyvalue
EndProcedure

Procedure.l ExtractSmallIconFile(IconPath.s) ; 16*16
  SHGetFileInfo_(IconPath, 0, @InfosFile.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON | #SHGFI_SMALLICON) 
  ProcedureReturn InfosFile\hIcon 
EndProcedure 

;-------------------------------------------------------
;-Registry functions
;-------------------------------------------------------

Structure OneByte 
  a.b 
EndStructure 

Procedure RegConvertRegKeyToTopKey(Key.s)
  
  topKey.s=StringField(Key,1,"\")
  topKey=UCase(topKey)
  
  Select topKey
    
    Case "HKEY_CLASSES_ROOT"
      retour=#HKEY_CLASSES_ROOT
      
    Case "HKEY_CURRENT_USER"
      retour=#HKEY_CURRENT_USER
      
    Case "HKEY_LOCAL_MACHINE"
      retour=#HKEY_LOCAL_MACHINE
      
    Case "HKEY_USERS"
      retour=#HKEY_USERS 
      
    Case "HKEY_CURRENT_CONFIG"
      retour=#HKEY_CURRENT_CONFIG 
      
  EndSelect
  
  ProcedureReturn retour
  
EndProcedure

Procedure.s RegConvertRegKeyToKeyName(Key.s)
  PositionSlash=FindString(Key,"\",1)
  retour.s=Right(Key,(Len(Key)-PositionSlash))
  ProcedureReturn retour
EndProcedure

Procedure RegDeleteKeyWithAllSubInternal(Key.s,ComputerName.s)
  
  topKey=RegConvertRegKeyToTopKey(Key)
  KeyName.s=RegConvertRegKeyToKeyName(Key)
  
  i=0 
  a$="" 
  Repeat 
    b$=a$ 
    a$=RegListSubKey(Key,0,"") 
    If a$<>"" 
      RegDeleteKeyWithAllSubInternal(Key+"\"+a$,"") 
    EndIf 
  Until a$=b$ 
  RegDeleteKey(Key, ComputerName) 
  
EndProcedure 

Procedure.l DeleteRegValue(topKey.l, sKeyName.s, sValueName.s)  
    GetHandle.l  
    hKey.l  
    lReturnCode.l  
    lhRemoteRegistry.l  
     
    If Left(sKeyName, 1) = "\"  
        sKeyName = Right(sKeyName, Len(sKeyName) - 1)  
    EndIf  
     
    GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)  

    If GetHandle = #ERROR_SUCCESS  
        GetHandle = RegDeleteValue_(hKey, @sValueName)  
        If GetHandle = #ERROR_SUCCESS  
            DeleteValue = #True  
        Else  
            DeleteValue = #False  
        EndIf  
    EndIf  
    RegCloseKey_(hKey)  
    ProcedureReturn DeleteValue  
EndProcedure 

Procedure.l CreateRegKey(topKey, sKeyName.s)  
    hNewKey.l  
    lpSecurityAttributes.SECURITY_ATTRIBUTES  
    GetHandle.l  
    lReturnCode.l  
    lhRemoteRegistry.l  
 
    If Left(sKeyName, 1) = "\"  
        sKeyName = Right(sKeyName, Len(sKeyName) - 1)  
    EndIf  
     
    GetHandle = RegCreateKeyEx_(topKey, sKeyName, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, @lpSecurityAttributes, @hNewKey, @GetHandle)  

    If GetHandle = #ERROR_SUCCESS  
        GetHandle = RegCloseKey_(hNewKey)  
        CreateKey = #True  
    Else  
        CreateKey = #False  
    EndIf  
    ProcedureReturn CreateKey  
EndProcedure

Procedure.l SetRegValue(topKey.l, sKeyName.s, sValueName.s, vValue.s, lType.l)  
  GetHandle.l  
  hKey.l  
  lType.l  
  lpcbData.l  
  lpData.s  
  lReturnCode.l  
  lhRemoteRegistry.l  
   
  If Left(sKeyName, 1) = "\"  
    sKeyName = Right(sKeyName, Len(sKeyName) - 1)  
  EndIf   

  GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)  
 
  If GetHandle = #ERROR_SUCCESS  
    lpcbData = 255  
    lpData = Space(255)  
       
    Select lType  
      Case #REG_SZ  
        GetHandle = RegSetValueEx_(hkey, sValueName, 0, #REG_SZ, @vValue, Len(vValue) + 1)  
      Case #REG_DWORD  
        lValue = Val(vValue)  
        GetHandle = RegSetValueEx_(hKey, sValueName, 0, #REG_DWORD, @lValue, 4)  
    EndSelect  
       
    RegCloseKey_(hkey)  
    ergebnis = 1  
    ProcedureReturn ergebnis  
  Else  
      
    RegCloseKey_(hKey)  
    ergebnis  = 0  
    ProcedureReturn ergebnis  
  EndIf  
EndProcedure 
 
Procedure.s GetRegValue(topKey, sKeyName.s, sValueName.s)  
   GetHandle.l  
   hKey.l  
   lpData.s  
   lpDataDWORD.l  
   lpcbData.l  
   lType.l  
   lReturnCode.l  
   lhRemoteRegistry.l  
   Shared getRegValue.s  
     
   If Left(sKeyName, 1) = "\"  
       sKeyName = Right(sKeyName, Len(sKeyName) - 1)  
   EndIf  

   GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)  
            
   If GetHandle = #ERROR_SUCCESS  
       lpcbData = 255  
       lpData = Space(255)  
         
       GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)  
             
       If GetHandle = #ERROR_SUCCESS  
           Select lType  
               Case #REG_SZ  
                   GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lType, @lpData, @lpcbData)  
                 
                   If GetHandle = 0  
                       getRegValue = Left(lpData, lpcbData - 1)  
                   Else  
                       getRegValue = ""  
                   EndIf  
                     
               Case #REG_DWORD  
                   GetHandle = RegQueryValueEx_(hKey, sValueName, 0, @lpType, @lpDataDWORD, @lpcbData)  
                     
                   If GetHandle = 0  
                       getRegValue = Str(lpDataDWORD)  
                   Else  
                       getRegValue = "0"  
                   EndIf  
                 
           EndSelect  
       EndIf  
   EndIf  
   RegCloseKey_(hKey)  
   ProcedureReturn GetRegValue  
EndProcedure 

Procedure.l LoadParameter()
  
  a.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_params")  
  b.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopUser")
  c.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopAllUsers")
  d.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsQuickLaunch")
  e.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_DemarrageWindows")
  f.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_Sonore")

  SetGadgetState(#Check_params, Val(a))  
  SetGadgetState(#Check_IconsDesktopUser, Val(b))    
  SetGadgetState(#Check_IconsDesktopAllUsers, Val(c))
  SetGadgetState(#Check_IconsQuickLaunch, Val(d))
  SetGadgetState(#Check_DemarrageWindows, Val(e))
  SetGadgetState(#Check_Sonore, Val(f))
 
 ProcedureReturn Val(a)
 
EndProcedure

Procedure SaveParameter()
  
  CreateRegKey(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME)
  
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_params", Str(GetGadgetState(#Check_params)), #REG_DWORD)  
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopUser", Str(GetGadgetState(#Check_IconsDesktopUser)), #REG_DWORD)
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopAllUsers", Str(GetGadgetState(#Check_IconsDesktopAllUsers)), #REG_DWORD)
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsQuickLaunch", Str(GetGadgetState(#Check_IconsQuickLaunch)), #REG_DWORD) 
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_DemarrageWindows", Str(GetGadgetState(#Check_DemarrageWindows)), #REG_DWORD) 
  SetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_Sonore", Str(GetGadgetState(#Check_Sonore)), #REG_DWORD)
 
EndProcedure

;--------------------------------------------------
;-ANALYSE BUREAU
;--------------------------------------------------
Procedure AnalyseBureau() 
 
  If LoadParameter() = 0
    b.s = Str(0)
    c.s = Str(0)
    d.s = Str(0)
  Else 
    b.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopUser")
    c.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsDesktopAllUsers")
    d.s = GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_IconsQuickLaunch")
  EndIf 
  
    If Val(b)=1 
       dossier.s = GetSystDirectory(6)
        If ExamineDirectory(n, dossier , "*.*")
          nb=0
          Repeat 
            FileType = NextDirectoryEntry(n) 
            If FileType = 1 
              nb + 1
              nom.s = DirectoryEntryName(n)
              If nom<>"desktop.ini" And nom<>"Thumbs.db" And nom<>"." And nom<>".."
                icone = ExtractSmallIconFile(dossier+nom)
                MenuItem(#DynMenu1+nb, nom, icone) 
              EndIf 
            EndIf 
          Until FileType = 0 
        EndIf
       FinishDirectory(n)   
       MenuBar()
    EndIf 
   
    If Val(c)=1 
       dossier.s = GetSystDirectory(26)
        If ExamineDirectory(n1, dossier , "*.*")
          nb=0
          Repeat 
            FileType = NextDirectoryEntry(n1) 
            If FileType = 1 
              nb + 1
              nom.s = DirectoryEntryName(n1)
              If nom<>"desktop.ini" And nom<>"Thumbs.db" And nom<>"." And nom<>".."
                icone = ExtractSmallIconFile(dossier+nom)
                MenuItem(#DynMenu2+nb, nom, icone) 
              EndIf 
            EndIf 
          Until FileType = 0 
        EndIf 
       FinishDirectory(n1)
       MenuBar()
    EndIf 
   
    If Val(d)=1
       dossier.s = GetSystDirectory(36)
        If ExamineDirectory(n2, dossier , "*.*")
          nb=0
          Repeat 
            FileType = NextDirectoryEntry(n2) 
            If FileType = 1 
              nb + 1
              nom.s = DirectoryEntryName(n2)
              If nom<>"desktop.ini" And nom<>"Thumbs.db" And nom<>"." And nom<>".."
                icone = ExtractSmallIconFile(dossier+nom)
                MenuItem(#DynMenu3+nb, nom, icone) 
              EndIf 
            EndIf 
          Until FileType = 0 
        EndIf 
       FinishDirectory(n2)
    EndIf 
  
EndProcedure

Procedure MenuSetting()

  If OpenWindow(#WinMenuSetting,0,0, 500, 305,"Réglage de "+#PROGRAMNAME, #PB_Window_SystemMenu |#PB_Window_ScreenCentered |#PB_Window_TitleBar)=0 
    End 
  EndIf 
  
  ContainerGadget(#ContainerTextReglages, 0,0,500,50,#PB_Container_Flat)
  SetGadgetColor(#ContainerTextReglages, #PB_Gadget_BackColor, RGB(200, 203, 202))
    TextGadget(#TextReglages, 10,0,480,45,"Appliquez vos choix des éléments à afficher dans le menu, ils seront effectifs lors du prochain lancement du programme. Pour les valider immédiatement, cliquez sur 'Appliquer'.")
    SetGadgetColor(#TextReglages, #PB_Gadget_BackColor, RGB(200, 203, 202))
    SetGadgetColor(#TextReglages, #PB_Gadget_FrontColor, RGB(113, 120, 118))
    SetGadgetFont(#TextReglages,Font0)
  CloseGadgetList()
  
  TextGadget(#TextOptionsIcons, 10,60,200,15,"Choix des Items de menus")
  SetGadgetFont(#TextOptionsIcons,Font0)
  SetGadgetColor(#TextOptionsIcons, #PB_Gadget_FrontColor, RGB(113, 120, 118))
  
    CheckBoxGadget(#Check_IconsDesktopUser,100,80,300,20,"Raccourcis bureau de l'utilisateur actuel")
    
    CheckBoxGadget(#Check_IconsDesktopAllUsers,100,105,300,20,"Raccourcis bureau de tous les utilisateurs")
     
    CheckBoxGadget(#Check_IconsQuickLaunch,100,130,300,20,"Raccourcis de la barre de lancement rapide")
   
  TextGadget(#TextOptionsConfort, 10,160,200,15,"Autres options de confort")
  SetGadgetFont(#TextOptionsConfort,Font0)
  SetGadgetColor(#TextOptionsConfort, #PB_Gadget_FrontColor, RGB(113, 120, 118))
  
    CheckBoxGadget(#Check_DemarrageWindows,100,180,300,20," Démarrer "+#PROGRAMNAME+" avec Windows")
    
    CheckBoxGadget(#Check_Sonore,100,205,300,20,"Avertir lors de l'affichage du menu")
  
  ContainerGadget(#ContainerSetting, 10,230,480,50,#PB_Container_Single) 
    
    CheckBoxGadget(#Check_params,10,10,100,20,"Paramètrer")
    GadgetToolTip(#Btn_ApplySetting,"Cochez cette case pour utiliser ces paramètres lors du prochain lancement.")
    
    ButtonGadget(#Btn_ApplySetting,265,10,100,25,"Appliquer")
    GadgetToolTip(#Btn_ApplySetting,"Sauvegarde vos choix et quitte le programme. Redémarrez "+#PROGRAMNAME+" pour valider.")
    
    ButtonGadget(#Btn_CancelSetting,375,10,100,25,"Annuler")
    GadgetToolTip(#Btn_CancelSetting,"Fermer et conserver les choix précédents.")
    
  CloseGadgetList() 
 
If CreateStatusBar(#StatusSetting, WindowID(#WinMenuSetting))
    AddStatusBarField(20)
    AddStatusBarField(#PB_Ignore)
    StatusBarImage(#StatusSetting,0,Image2,#PB_StatusBar_Raised)
    StatusBarText(#StatusSetting,1,"WolfoRan LogEditor "+ Chr(169) + " 2006-2009 Tous droits réservés.",#PB_StatusBar_Raised|#PB_StatusBar_Right)
EndIf 

LoadParameter()
  
  Repeat
    EventSetting = WaitWindowEvent() 
    If EventSetting = #PB_Event_Gadget
      Select EventGadget() 
      
        Case #Btn_ApplySetting 
          SetGadgetState(#Check_params,1)
            SaveParameter() 
              CloseWindow(#WinMenuSetting) : End 
                     
        Case #Btn_CancelSetting : EventSetting = #PB_Event_CloseWindow
        
        Case #Check_DemarrageWindows
          If GetGadgetState(#Check_DemarrageWindows) = 1
            If RegCreateKeyEx_(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo) = #ERROR_SUCCESS  
              StringBuffer$ = ProgramFilename() 
              RegSetValueEx_(NewKey, #PROGRAMNAME, 0, #REG_SZ,  StringBuffer$, Len(StringBuffer$)+1)
              RegCloseKey_(NewKey)  
            EndIf               
          Else
           DeleteRegValue(#HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", #PROGRAMNAME)  
          EndIf    
         SaveParameter()
        
        
      EndSelect  
    EndIf 
  
  Until EventSetting = #PB_Event_CloseWindow
  CloseWindow(#WinMenuSetting)
  
EndProcedure 

;--------------------------------------------------
;-FENETRE PRINCIPALE
;--------------------------------------------------
;-Vérification du Lancement
Global F.l
Procedure ExeLance(nomfenetre$) 
 F=FindWindow_(0, nomfenetre$) 
  If F<>0 
   ProcedureReturn 1
  Else 
   ProcedureReturn 0
  EndIf 
EndProcedure

Procedure WinMain()

ExamineDesktops()
Largeur$ = Str(DesktopWidth(0))
Hauteur$ = Str(DesktopHeight(0))
FlagWin = #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_TitleBar |#PB_Window_Invisible  
If OpenWindow(#WINMAIN,Val(Largeur$)-120,Val(Hauteur$)-170,100,100,#PROGRAMNAME ,FlagWin)=0  
End 
EndIf
;-PopUp Raccourcis Bureau
;{
  HPopUpRaccourcis = CreatePopupImageMenu(#PopUp_Raccourcis,#PB_Menu_ModernLook)
  If HPopUpRaccourcis    
    AnalyseBureau()            
    OpenSubMenu("Préférences utilisateur")
      MenuItem(#setting, "Réglages", Image4)
      MenuItem(#About, "A propos...", Image3)
      MenuItem(#Website, "WolfoRan sur internet", Image2)
    CloseSubMenu()
    MenuItem(#QuitMiniDesktop, "Quitter "+#PROGRAMNAME, Image1)          
  EndIf 
;}  
  AddSysTrayIcon(#SystrayIcone, WindowID(#WINMAIN), Image0)
  SysTrayIconToolTip(#SystrayIcone, #PROGRAMNAME)

EndProcedure

;--------------------------------------------------   
;-PROGRAMME
;--------------------------------------------------

If ExeLance(#PROGRAMNAME) = 1   
   MessageRequester(#PROGRAMNAME,#PROGRAMNAME+" a déjà été lancé!"+Chr(13)+"L'icône doit se trouver dans la zone de notification en bas à droite.",#MB_ICONINFORMATION)      
  End 
 Else 
  WinMain()
EndIf


Repeat 
 Event = WaitWindowEvent() 
 
  MenuID = EventMenu()
    If Event =  #PB_Event_Menu
       
      If MenuID>#DynMenu1 And MenuID<#DynMenu2      
        RunProgram(GetSystDirectory(6)+"\"+GetMenuItemText(#PopUp_Raccourcis, MenuID))      
      ElseIf MenuID>#DynMenu2 And MenuID<#DynMenu3
        RunProgram(GetSystDirectory(26)+"\"+GetMenuItemText(#PopUp_Raccourcis, MenuID))      
      ElseIf MenuID>#DynMenu3
        RunProgram(GetSystDirectory(36)+"\"+GetMenuItemText(#PopUp_Raccourcis, MenuID))
      Else
        Select MenuID
            
          Case #QuitMiniDesktop : quit=#True         
          
          Case #setting : MenuSetting()
          
          Case #About
            TexteAbout$ = #PROGRAMNAME+" "+#VERSION+" "+#STATUT+ Chr(13)+""+Chr(13)
            TexteAbout$ = TexteAbout$ +"WolfoRan LogEditor"+Chr(169)+"2006-2009"+Chr(13)+""+Chr(13)
            TexteAbout$ = TexteAbout$ +"Sur le web:"+Chr(13)
            TexteAbout$ = TexteAbout$ +"            http://www.wolforan.fr"+Chr(13)
            TexteAbout$ = TexteAbout$ +"            http://www.wolforan.com/PureSofts/"+Chr(13)+""+Chr(13)
            TexteAbout$ = TexteAbout$ +"Merci d'utiliser notre produit, Jacobus"
            MessageRequester("A propos de "+#PROGRAMNAME,TexteAbout$,#MB_ICONINFORMATION)
          
          Case #Website
           Connexion = ShellExecute_(0,"open","http://www.wolforan.com/PureSofts/",0,0,1) 
            If Connexion
              ;Event=#PB_Event_CloseWindow 
             Else 
              MessageRequester("Connexion...", "Impossible de se connecter au site web", #MB_ICONEXCLAMATION)
            EndIf
          
        EndSelect
      EndIf 
       
    EndIf 
    
    
  If Event = #PB_Event_CloseWindow 
      quit=#True
  EndIf 
  
  If Event = #PB_Event_SysTray
      If EventType() = #PB_EventType_RightClick 
        If Val(GetRegValue(#HKEY_LOCAL_MACHINE, "Software\"+#PROGRAMNAME, "Check_Sonore"))=1
         PlaySound(#SonIn)  
        EndIf      
        DisplayPopupMenu(#PopUp_Raccourcis, WindowID(#WINMAIN))
      EndIf      
  EndIf

Until quit=#True
End 
;-Data Images
DataSection 
Image0 : IncludeBinary "ICONES48\WindowsVista01.ico"
Image1 : IncludeBinary "ICONES16\Shutdown.ico"
Image2 : IncludeBinary "ICONES16\wolforan.ico"
Image3 : IncludeBinary "ICONES16\Comments.ico"
Image4 : IncludeBinary "ICONES16\Affichage.ico"
EndDataSection  
Dernière modification par Jacobus le ven. 16/janv./2009 13:11, modifié 1 fois.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

j'ai desinstallé ton appli sur l'ordi du boulot, mais elle s'entête à s'executer à chaque redémarrage du pc... ??? j'ai merdé quelque part ou quoi ?

pat
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Non c'est moi qui a merdé en oubliant de supprimer l'option de démarrage avec windows dans le registre en désinstallant.

tu RegEdit et tu supprimes cette clé:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ Mini DeskTop Menu

Je vais faire un correctif pour l'appli.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Merci pour tout ça :D

Sinon, sur ton site, dans Police Manager je ne sais pas ce que c'est des MC :roll:
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Salut Denis, merci.
Les MC sont des main-courantes (rapports textuels) à ne pas confondre :mrgreen:

Je viens d'updater l'executable (premier post) qui corrige le bug trouvé par Patrick88 lors de la désinstallation. le registre est complètement nettoyé maintenant.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

J'ai installé sous Vista home edition, c'est bien pensé et pratique.

Mes remarques (constructives)

J'ai paramétré en raccourci de tous les utilisateurs (il n'y a qu'un utilisateur).

Plusieurs raccourcis sont manquant, j'ai paramétré et comme l'icône systray a disparu j'ai relancé (et j'avais cliqué pour que ça démarre avec Windows) et c'est revenu. Je ne sais pas pourquoi il manque plusieurs liens.

Si je supprime un raccourci (ce que j'ai fait car inutile), ce n'est pas pris en compte je suppose avant la relance, je pense que c'est pareil si on en ajoute, c'est possible de modifier ça ?

autre chose que j'aimerais bien, c'est de cliquer aussi avec le bouton gauche pour l'ouvrir, ça peut être des cases à cocher en paramètre.

Et encore un souhait, c'est possible de supprimer le .lnk à la fin de la ligne dans le menu ?

Je n'ai pas trop le temps de regarder ton code, je retourne sur le mien :D

A+
Denis
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Un sacré boulot 8)
Et je rejoint denis, c'est bien pensé

T'es drolement cool d'en faire cadeau et de le partager, merci beaucoup
Denis a écrit :Et encore un souhait, c'est possible de supprimer le .lnk à la fin de la ligne dans le menu ?
J'suis aussi d'accord, ça fait drole de voir cettte extension 8O

C'est vrai que ce serait bien aussi de separer la config des menus de lancement.
Clic gauche lancement et clic droit preference et quitter

Encore bravo

Quel installateur utilise tu ????
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Oui tout est possible.
Je verrais ce que je peux faire pour vous être agréable chers amis :wink:

Actuellement il faut redémarrer le programme pour actualiser (ajout ou retrait).
Dès que tu fais 'Appliquer' pour les réglages, ça ferme le prog et donc l'icône du systray. Cela oblige à relancer MDM.

Il faut cocher les deux options 'utilisateur actuel' et 'Tous les utilisateurs' même s'il n'y en a qu'un pour retrouver tous les raccourcis du bureau. Windows les place dans des répertoires différents en fonction des droits, même s'ils apparaissent tous sur le même bureau.

@+
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Avatar de l’utilisateur
Jacobus
Messages : 1559
Inscription : mar. 06/avr./2004 10:35
Contact :

Message par Jacobus »

Mes installeurs:

Smart Install Maker qui est très bien facile et rapide à paramétrer (j'ai fais la version française)

Install Creator Pro pratique à tous points de vue. utilisé pour MiniDeskTopMenu.
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Jacobus a écrit :Oui tout est possible.
Je verrais ce que je peux faire pour vous être agréable chers amis :wink:

Actuellement il faut redémarrer le programme pour actualiser (ajout ou retrait).
Dès que tu fais 'Appliquer' pour les réglages, ça ferme le prog et donc l'icône du systray. Cela oblige à relancer MDM.

Il faut cocher les deux options 'utilisateur actuel' et 'Tous les utilisateurs' même s'il n'y en a qu'un pour retrouver tous les raccourcis du bureau. Windows les place dans des répertoires différents en fonction des droits, même s'ils apparaissent tous sur le même bureau.

@+
Ok pour cocher le tout.

Sur le redémarrage de MDM, c'est pas possible de le lancer via un thread ?
Avatar de l’utilisateur
venom
Messages : 3136
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message par venom »

chez moi mon anti virus se met en route cheval de troie :?




@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

venom a écrit :chez moi mon anti virus se met en route cheval de troie :?

@++
J'ai la suite complète Bitdefender et je n'ai aucune alerte.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Sinon Jacobus, c'est ta voix le "Salut Bonhomme"
Répondre