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
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
j'ouvre un sujet pour ça
