Mais je suis pas sur que ce soit la meme partout... Comment la retrouver ?::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Poste de travail
-
- Messages : 1092
- Inscription : mer. 28/janv./2004 16:22
- Localisation : 76
- Contact :
Poste de travail
Bon, j'aimerais connaitre l'adresse du poste de travail afin de pouvoir l'ouvrir à l'aide d'un RunProgram. La mienne :
Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL

-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
ben, soit tu fais un raccourci vers le poste de travail et après, tu le lances avec shellexecute.
je te remet le poste que j'avais déjà écrit :
une autre solution, tu ouvres l'explorateur et tu lui envoie dans la barre d'adresse "Poste de travail"
je te remet le poste que j'avais déjà écrit :
exemple :
Code:
ShellExecute_(WindowID(), 0, GetFilePart(Fichier), GetPathPart(Fichier), #SW_SHOWNORMAL)
Attention, shellexecute, c'est du windows donc y'a des bugs dont celui ci que j'ai mis du temps à trouver (sous XP) :
si tu lances avec shellexecute un fichier dont on retrouve le même nom sur le bureau, il va te sortir une boite de dialogue de téléchargement (le truc de téléchargement de iexplore avec ouvrir, enregistrer et impossible de toujours faire ouvrir car pour lui, la source n'est pas sur) en clair, il veut télécharger le fichier qui est présent sur ton ordi
exemple :
si tu as sur le bureau un fichier "explorateur.lnk" et que tu veut lancer le raccourci "c:\Truc\Explorateur.lnk" et bien ça va planter comme je l'ai expliquer ci dessus. On dit quoi à windows ?
l'astuce est de copier le *.lnk sous un nom tordu du type, "je n'aime pas windows.lnk" puis de lancer ce raccourci et le supprimer. Génial
une autre solution, tu ouvres l'explorateur et tu lui envoie dans la barre d'adresse "Poste de travail"
ça je peux te passer le code si cette solution t'intéresseTu mets "Poste de travail" dans le clipboard
Alt + D
Ctrl + V
Return
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
-
- Messages : 1092
- Inscription : mer. 28/janv./2004 16:22
- Localisation : 76
- Contact :
Je préfére la deuximèe méthode. Si tu pouvais filer le bout de code 

Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL

-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
je te prépare ça 
...
Finis, le résultat, et qui marche en plus :

...
Finis, le résultat, et qui marche en plus :
Code : Tout sélectionner
Procedure KeyBoardEvent(Touche, ToucheSpecial)
; WindowID : fenêtre qui va recevoir la touche
; Touche : Touche appuyée, voir constantes PB dans l'aide de AddKeyboardShortcut()
; ToucheSpecial :
; = 1 si touche Control appuyée
; = 2 si touche Alt appuyée
; = 0 sinon
SetForeGroundWindow_(WindowID)
If OpenLibrary(0, "user32.dll")
Select ToucheSpecial
Case 1
CallFunction(0, "keybd_event", #VK_CONTROL, 0, 0, 0)
Case 2
CallFunction(0, "keybd_event", #VK_MENU, 0, 0, 0)
EndSelect
CallFunction(0, "keybd_event", Touche, 0, 0, 0)
Delay(10)
CallFunction(0, "keybd_event", Touche, 0, #KEYEVENTF_KEYUP, 0)
Select ToucheSpecial
Case 1
CallFunction(0, "keybd_event", #VK_CONTROL, 0, #KEYEVENTF_KEYUP, 0)
Case 2
CallFunction(0, "keybd_event", #VK_MENU, 0, #KEYEVENTF_KEYUP, 0)
EndSelect
CloseLibrary(0)
EndIf
EndProcedure
NewList Liste_Fenetres()
Procedure.l RunProgramEx(NomFichier$, Parametre$, RepertoireCourant$)
ClearList(Liste_Fenetres())
; Fenêtre au premier plan
WindowID = GetForegroundWindow_()
; On liste les fenêtres ouvertes
hWnd.l = FindWindow_( 0, 0 )
While hWnd <> 0
If GetwindowLong_(Hwnd, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
AddElement(Liste_Fenetres())
Liste_Fenetres() = hWnd
EndIf
hWnd = GetWindow_(hWnd, #GW_HWNDNEXT)
Wend
; On lance le programme
RunProgram(NomFichier$, Parametre$, RepertoireCourant$)
; On cherche l'ID du la fenêtre créée
Time = GetTickCount_()
Repeat
LastWindowID = GetForegroundWindow_()
If GetTickCount_() - Time > 5000
ProcedureReturn 0
EndIf
If LastWindowID <> 0 And LastWindowID <> WindowID
; On compare avec la liste des fenêtres qui étaient ouvertes
ResetList(Liste_Fenetres())
While NextElement(Liste_Fenetres())
If LastWindowID = Liste_Fenetres()
WindowID = LastWindowID
EndIf
Wend
EndIf
Until LastWindowID <> 0 And LastWindowID <> WindowID And GetwindowLong_(LastWindowID, #GWL_STYLE) & #WS_VISIBLE = #WS_VISIBLE
ProcedureReturn LastWindowID ; On renvoie l'ID de la dernière fenêtre créé
EndProcedure
; Debut du test
SetClipboardText("Poste de travail") ; on met "Poste de travail" dans le presse papier
WindowExploreur = RunProgramEx("explorer.exe", "/n,/e", "") ; on lance l'explorateur window
; les paramètres signifie :
; /n : ouvre dans le volets d'exploration les dossiers
; /e : ouvre obligatoirement une nouvelle fenêtre de l'explorateur windows
KeyBoardEvent(#PB_Shortcut_D, 2) ; Envoie la touche Alt + D, cela permet d'aller dans la barre d'adresse
KeyBoardEvent(#PB_Shortcut_V, 1) ; Envoie la touche Ctrl + V, pour copier le texte du presse papier dans la barre d'adresse
KeyBoardEvent(#PB_Shortcut_Return, 0) ; Envoie la touche Entrée, pour valider
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)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]