[Résolu] Ouvrir poste de travail et autre

Programmation d'applications complexes
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

[Résolu] Ouvrir poste de travail et autre

Message 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
Dernière modification par Le Soldat Inconnu le mer. 11/févr./2009 21:29, modifié 1 fois.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
ImageImage
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Message par MetalOS »

Exactement comme case avec un vista 32 bits édition familiale premium
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ouin, et je sais même pas ou trouvé les bonnes valeurs pour vista, j'ai cherché mais rien trouvé ... :?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Dans la fenêtre du debugger , il y a 12 lignes sans texte, vide quoi !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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 ....
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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 :)
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Répondre