Page 1 sur 1

[Résolu] Ouvrir poste de travail et autre

Publié : dim. 08/févr./2009 11:39
par Le Soldat Inconnu
Voilà, j'ai ce code, et j'ai un gros doute sur son fonctionnement sous Vista

Donc j'ai besoin de testeur Vista (32 et 64 bit)

Le code suivant affiche une liste de dossier tordu de Windows type poste de travail
Vous doublecliquer sur un élément de la liste, et il doit s'ouvrir dans l'explorateur, dite moi si ca marche.
Merci

Code : Tout sélectionner

; Accès aux dossiers spéciaux et divers au travers du registre Windows

; L'association clé du registre / dossier - programme est référencée en zone data à la fin du listing.

Enumeration
  #Gadget_ListIcon
  #Copier
EndEnumeration

WindowXSize = 800
WindowYSize = 500
Quit = #False
If OpenWindow(0, 0, 0, WindowXSize, WindowYSize, "Dossier spéciaux", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  
  If CreateGadgetList(WindowID(0))
    ListIconGadget(#Gadget_ListIcon, 3, 3, WindowXSize - 6, WindowYSize - 6, "Définition", WindowXSize - 270, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#Gadget_ListIcon, 1, "Dossier", 250)
  EndIf
  If CreatePopupMenu(0)
    MenuItem(#Copier, "Copier")
  EndIf
  
  
  ; On rempli le tableau
  Repeat
    Read.s Definition.s
    Read.s Dossier.s
    If Definition = "EndData"
      Quit = 1
    Else
      AddGadgetItem(#Gadget_ListIcon, -1, Definition + Chr(10) + Dossier)
    EndIf
  Until Quit
  
  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_Menu
        Select EventMenu()
          Case #Copier
            SetClipboardText(GetGadgetText(#Gadget_ListIcon))
        EndSelect
        
    ElseIf Event = #PB_Event_Gadget
        Select EventGadget()
          Case #Gadget_ListIcon
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
                RunProgram(GetGadgetText(#Gadget_ListIcon))
              Case #PB_EventType_RightClick
                DisplayPopupMenu(0, WindowID(0))
            EndSelect
        EndSelect
        
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End

DataSection
    Data.s "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}", "Panneau de configuration"
    Data.s "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}", "Polices"
    Data.s "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}", "Outils d'administration"
    Data.s "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}", "Imprimantes"
    Data.s "::{e17d4fc0-5564-11d1-83f2-00a0c90dc849}", "Résultats de recherche"
    Data.s "::{1f4de370-d627-11d1-ba4f-00a0c91eedba}", "Résultats de recherche - Ordinateurs"
    Data.s "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}", "Connexions réseau et accès à distance"
    Data.s "::{208D2C60-3AEA-1069-A2D7-08002B30309D}", "Favoris réseau"
    Data.s "::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}", "Tâches planifiées"
    Data.s "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", "Poste de travail"
    Data.s "::{86747AC0-42A0-1069-A2E6-08002B30309D}", "Porte-documents"
    Data.s "::{450D8FBA-AD25-11D0-98A8-0800361B1103}", "Mes Documents"
    Data.s "::{645FF040-5081-101B-9F08-00AA002F954E}", "Corbeille"
    Data.s "EndData", "EndData"
EndDataSection

Publié : dim. 08/févr./2009 13:32
par case
panneau de configuration ==> nok (aucun programme n'est associé a ce fichier )
police ==> ok
outil d'administration ==> ok
imprimantes ==> ok
resultats de recherche ==> nok (windows ne trouves pas ....)
resultats de recherche ordinateurs ==> nok (windows ne trouves pas ....)
connection reseau et acces a distance ==> ok
favoris reseau ==> ok
taches planifiées ==> nok (aucun programme n'est associé a ce fichier )
poste de travail ==> ok
porte documents ==> nok (windows ne trouves pas ....)
mes documents ==> ok
corbeille ==> ok

vista 64 bits edition familliale premium

Publié : dim. 08/févr./2009 13:52
par MetalOS
Exactement comme case avec un vista 32 bits édition familiale premium

Publié : dim. 08/févr./2009 16:24
par Le Soldat Inconnu
ouin, et je sais même pas ou trouvé les bonnes valeurs pour vista, j'ai cherché mais rien trouvé ... :?

Publié : dim. 08/févr./2009 23:51
par Le Soldat Inconnu
si quelqu'un sait comment choper les guids de ces dossiers sous Vista, je prend

pour le moment, j'ai modifier le code, et on doit arriver à voir le nom du dossier correspondant à chaque GUID

Code : Tout sélectionner

code retiré, voir poste suivant

Publié : lun. 09/févr./2009 20:33
par Le Soldat Inconnu
bon et comme ça, est-ce que cela marche sous Vista ?

Vous devez avoir une description pour chaque élément et pouvoir les ouvrir en double cliquant dessus

merci

Code : Tout sélectionner

; Accès aux dossiers spéciaux et divers au travers du registre Windows

; L'association clé du registre / dossier - programme est référencée en zone data à la fin du listing.

Enumeration
  #Gadget_ListIcon
  #Copier
EndEnumeration

Procedure.s DisplayName(File.s)
  Protected FileInfo.SHFILEINFO, Name.s
  SHGetFileInfo_(File, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_DISPLAYNAME)
  Name = PeekS( @FileInfo\szDisplayName)
  ProcedureReturn Name
EndProcedure

WindowXSize = 800
WindowYSize = 500
Quit = #False
If OpenWindow(0, 0, 0, WindowXSize, WindowYSize, "Dossier spéciaux", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  
  If CreateGadgetList(WindowID(0))
    ListIconGadget(#Gadget_ListIcon, 3, 3, WindowXSize - 6, WindowYSize - 6, "OS", 40, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#Gadget_ListIcon, 1, "Dossier", WindowXSize - 300)
    AddGadgetColumn(#Gadget_ListIcon, 2, "Nom", 220)
  EndIf
  If CreatePopupMenu(0)
    MenuItem(#Copier, "Copier")
  EndIf
  
  
  ; On rempli le tableau
  Repeat
    Read.s OS.s
    Read.s Dossier.s
    If Dossier = ""
      Quit = 1
    Else
      AddGadgetItem(#Gadget_ListIcon, -1, OS + Chr(10) + Dossier + Chr(10) + DisplayName(Dossier))
    EndIf
  Until Quit
  
  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_Menu
        Select EventMenu()
          Case #Copier
            SetClipboardText(GetGadgetText(#Gadget_ListIcon))
        EndSelect
        
    ElseIf Event = #PB_Event_Gadget
        Select EventGadget()
          Case #Gadget_ListIcon
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
                RunProgram("explorer.exe", "/n,/e," + GetGadgetItemText(#Gadget_ListIcon, GetGadgetState(#Gadget_ListIcon), 1), "")
              Case #PB_EventType_RightClick
                DisplayPopupMenu(0, WindowID(0))
            EndSelect
        EndSelect
        
      EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End

DataSection                                                                             
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; "Poste de travail"
  ; Data.s "Vista", "::{}"; "Poste de travail"
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"; "Panneau de configuration"
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}"; "Panneau de configuration" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}";  "Polices" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}";  "Polices" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}"; "Outils d'administration" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}"; "Outils d'administration" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"; "Imprimantes" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"; "Imprimantes" Vista
  Data.s "XP", "::{e17d4fc0-5564-11d1-83f2-00a0c90dc849}"; "Résultats de recherche"
  ; Data.s "Vista", "::{}"; "Résultats de recherche"
  Data.s "XP", "::{1f4de370-d627-11d1-ba4f-00a0c91eedba}"; "Résultats de recherche - Ordinateurs"
  ; Data.s "Vista", "::{}"; "Résultats de recherche - Ordinateurs"
  Data.s "XP", "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"; "Connexions réseau et accès à distance"
  ; Data.s "Vista", "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"; "Connexions réseau et accès à distance"
  Data.s "XP", "::{208D2C60-3AEA-1069-A2D7-08002B30309D}"; "Favoris réseau"
  ; Data.s "Vista", "::{}"; "Favoris réseau"
  Data.s "XP", "::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}"; "Tâches planifiées"
  ; Data.s "Vista", "::{}"; "Tâches planifiées"
  Data.s "XP", "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"; "Mes Documents"
  ; Data.s "Vista", "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"; "Mes Documents"
  Data.s "XP", "::{645FF040-5081-101B-9F08-00AA002F954E}"; "Corbeille"
  ; Data.s "Vista", "::{}"; "Corbeille"
  Data.s "", ""
EndDataSection

Publié : lun. 09/févr./2009 20:48
par Anonyme2
Voilà

"Poste de travail"
Fenêtre "Ordinateur" qui s'ouvre

"Panneau de configuration"
messagerequester "aucun programme n'est associé bla bla bla..."

"Polices"
Ok

"Outils d'administration"
Ok

"Imprimantes"
Ok

"Résultats de recherche"
??? Fenêtre "mes documents" qui s'ouvre

"Résultats de recherche - Ordinateurs"
??? Fenêtre "mes documents" qui s'ouvre

"Connexions réseau et accès à distance"
Ok, le titre de la fenêtre n'est que "Connexions réseau"

"Favoris réseau"
Une magnifique fenêtre complètement vide

"Tâches planifiées"
messagerequester "aucun programme n'est associé bla bla bla..."

"Mes Documents"
Ok

"Corbeille"
Ok

Publié : mar. 10/févr./2009 10:31
par Le Soldat Inconnu
je peux avoir le contenu de la fenêtre de debug sous vista
merci

Code : Tout sélectionner

; Accès aux dossiers spéciaux et divers au travers du registre Windows

; L'association clé du registre / dossier - programme est référencée en zone data à la fin du listing.

Enumeration
  #Gadget_ListIcon
  #Copier
EndEnumeration

Procedure.s DisplayName(File.s)
  Protected FileInfo.SHFILEINFO, Name.s
  SHGetFileInfo_(File, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_DISPLAYNAME)
  Name = PeekS(@FileInfo\szDisplayName)
  ProcedureReturn Name
EndProcedure

WindowXSize = 800
WindowYSize = 500
Quit = #False
If OpenWindow(0, 0, 0, WindowXSize, WindowYSize, "Dossier spéciaux", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
  
  If CreateGadgetList(WindowID(0))
    ListIconGadget(#Gadget_ListIcon, 3, 3, WindowXSize - 6, WindowYSize - 6, "OS", 40, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_HeaderDragDrop | #PB_ListIcon_AlwaysShowSelection)
    AddGadgetColumn(#Gadget_ListIcon, 1, "Dossier", WindowXSize - 300)
    AddGadgetColumn(#Gadget_ListIcon, 2, "Nom", 220)
  EndIf
  If CreatePopupMenu(0)
    MenuItem(#Copier, "Copier")
  EndIf
  
  
  ; On rempli le tableau
  Repeat
    Read.s OS.s
    Read.s Dossier.s
    If Dossier = ""
      Quit = 1
    Else
      AddGadgetItem(#Gadget_ListIcon, -1, OS + Chr(10) + Dossier + Chr(10) + DisplayName(Dossier))
      Debug DisplayName(Dossier)
    EndIf
  Until Quit
  
  Repeat
    Event = WaitWindowEvent()

    If Event = #PB_Event_Menu
        Select EventMenu()
          Case #Copier
            SetClipboardText(GetGadgetText(#Gadget_ListIcon))
        EndSelect
        
    ElseIf Event = #PB_Event_Gadget
        Select EventGadget()
          Case #Gadget_ListIcon
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
                RunProgram("explorer.exe", "/n,/e," + GetGadgetItemText(#Gadget_ListIcon, GetGadgetState(#Gadget_ListIcon), 1), "")
              Case #PB_EventType_RightClick
                DisplayPopupMenu(0, WindowID(0))
            EndSelect
        EndSelect
        
      EndIf
    
  Until Event = #PB_Event_CloseWindow
  
EndIf

End

DataSection                                                                             
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"; "Poste de travail"
  ; Data.s "Vista", "::{}"; "Poste de travail"
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}"; "Panneau de configuration"
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}"; "Panneau de configuration" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}";  "Polices" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{D20EA4E1-3957-11d2-A40B-0C5020524152}";  "Polices" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}"; "Outils d'administration" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{D20EA4E1-3957-11d2-A40B-0C5020524153}"; "Outils d'administration" Vista
  Data.s "XP", "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"; "Imprimantes" XP
  ; Data.s "Vista", "::{}\::{5399E694-6CE5-4D6C-8FCE-1D8870FDCBA0}\::{2227A280-3AEA-1069-A2DE-08002B30309D}"; "Imprimantes" Vista
  Data.s "XP", "::{e17d4fc0-5564-11d1-83f2-00a0c90dc849}"; "Résultats de recherche"
  ; Data.s "Vista", "::{}"; "Résultats de recherche"
  Data.s "XP", "::{1f4de370-d627-11d1-ba4f-00a0c91eedba}"; "Résultats de recherche - Ordinateurs"
  ; Data.s "Vista", "::{}"; "Résultats de recherche - Ordinateurs"
  Data.s "XP", "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"; "Connexions réseau et accès à distance"
  ; Data.s "Vista", "::{7007ACC7-3202-11D1-AAD2-00805FC1270E}"; "Connexions réseau et accès à distance"
  Data.s "XP", "::{208D2C60-3AEA-1069-A2D7-08002B30309D}"; "Favoris réseau"
  ; Data.s "Vista", "::{}"; "Favoris réseau"
  Data.s "XP", "::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}"; "Tâches planifiées"
  ; Data.s "Vista", "::{}"; "Tâches planifiées"
  Data.s "XP", "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"; "Mes Documents"
  ; Data.s "Vista", "::{450D8FBA-AD25-11D0-98A8-0800361B1103}"; "Mes Documents"
  Data.s "XP", "::{645FF040-5081-101B-9F08-00AA002F954E}"; "Corbeille"
  ; Data.s "Vista", "::{}"; "Corbeille"
  Data.s "", ""
EndDataSection

Publié : mar. 10/févr./2009 13:04
par Anonyme2
Dans la fenêtre du debugger , il y a 12 lignes sans texte, vide quoi !

Publié : mer. 11/févr./2009 19:18
par Le Soldat Inconnu
rha zut, donc c'est

Code : Tout sélectionner

Procedure.s DisplayName(File.s) 
  Protected FileInfo.SHFILEINFO, Name.s 
  SHGetFileInfo_(File, 0, @FileInfo, SizeOf(SHFILEINFO), #SHGFI_DISPLAYNAME) 
  Name = PeekS(@FileInfo\szDisplayName) 
  ProcedureReturn Name 
EndProcedure
qui ne marche pas bien sous vista ....

Publié : mer. 11/févr./2009 19:59
par Anonyme2
L'API SHGetFileInfo_() échoue (retourne 0) et getlasterror donne un code difficile à exploiter :

erreur 1008
ERROR_NO_TOKEN
1008

An attempt was made to reference a token that does not exist.
La fonction ne veut pas de la clé du registre. L'exempe Microsoft utilise un pidl (identifiant) retourné par SHGetFolderLocation_() pour retrouver et afficher le nom de la corbeille

http://msdn.microsoft.com/en-us/library ... S.85).aspx

Publié : mer. 11/févr./2009 20:18
par Le Soldat Inconnu
oui, je suis en train de regarder exactement la même chose que toi :lol:

j'ouvre un sujet pour ça :)