Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

je viens de trouver une solution pour récupérer un chemin UNC d'un lecteur mappé.

Il faut changer la lettre de lettre-mappe.

J'utilise net use, pour avoir le chemin et récupère la ligne dans la variable chem1-unc.

 

J'aimerais avoir votre avis, et comment clarifier le code.

 

(defun netuse ( / TempReturn)
 (setq lettre-mappe "c")
(command "_.shell" (strcat "net use "(strcase lettre-mappe)": >%temp%\\rapport1.txt"))
 (setq chem_temp (vl-filename-directory (VL-FILENAME-MKTEMP "vide.txt")))

(setq TempReturn (open (strcat chem_temp "\\rapport1.txt") "r")
     ligne1 (str2lst (read-line TempReturn) " ")
     ligne2 (str2lst (read-line TempReturn) " ")
     chem1-unc (last ligne2)
)
 )
 

(defun str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons (substr str 1 pos)
         (str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)

Posté(e)

Salut,

 

Il y a plus simple pour avoir le dossier temporaire sans créer de fichier vide

(setq chem_temp (getenv "temp"))

 

Et ne pas oublier de fermer le fichier ouvert à la fin

(close TempReturn)

Aide au téléchargement du cadastre dgfip-download-helper
Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0
Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js

Posté(e)

Re,

merci vincentp010,

voici une autre version avec des modifs qui me semble importantes.

 

 

;;; Routine pour récupérer le nom UNC d'un lecteur mappé.
;;; Aviglémy ; mars 2015
;;;
;;; entrer (netuse VARIABLE)
;;; VARIABLE doit être un string
;;;
;;; Retourne chem1-unc
;;;
;;; Exemple :
;;; (setq lettre "f") ; lettre mappé dans windows
;;; (netuse lettre)
;;; chem1-unc : "\\\\serveur\\nom_repertoire_partagé"

(defun netuse (lettre-mappe / TempReturn)

 (setq chem_temp (getenv "temp"))

 (command "_.shell" (strcat "net use "(strcase lettre-mappe)": >%temp%\\netuse-unc.txt"))
 
(while (appli "cmd.exe")) ;; mise en attente du retour de cmd 
 
(setq TempReturn (open (strcat chem_temp "\\netuse-unc.txt") "r")
     ligne1 (str2lst (read-line TempReturn) " ")
     ligne2 (str2lst (read-line TempReturn) " ")
     chem1-unc (last ligne2)
     )
 (close TempReturn)
)
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;   Routine de (Gile)   ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun str2lst (str sep / pos)
 (if (setq pos (vl-string-search sep str))
   (cons (substr str 1 pos)
         (str2lst (substr str (+ (strlen sep) pos 1)) sep)
   )
   (list str)
 )
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;   Routine de Patrick_35 pour vérifier que le shell est en fonction   ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun appli (qui / apps item lst meth1 meth2 WMI)
 (vl-load-com)

 (setq	WMI   (vlax-create-object "WbemScripting.SWbemLocator")
meth1 (vlax-invoke
	WMI 'ConnectServer nil nil nil nil nil nil nil nil)
meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process")
 )
 (vlax-for item meth2
   (setq lst (cons (vlax-get item 'CommandLine) lst))
 )
 (foreach item	(list WMI meth1 meth2)
   (vlax-release-object item)
 )
 (vl-remove-if-not
   '(lambda (x)
      (and x
    (vl-string-search
      (strcase qui)
      (strcase x)
    )
      )
    )
   lst
 )
)

Posté(e)

salut,

regarde si cela peut t'aider:

(setq ObjWsh (vlax-create-object "Scripting.FileSystemObject"))
(setq ObjFile (vlax-invoke-method ObjWsh 'GetFile (findfile "acad.lsp")))
(vlax-get-property  (vlax-get-property  
(vlax-get-property  objfile 'parentFolder) 'drive) 'ShareName)

j'arrive à obtenir la racine UNC:

"\\\\serveur\\e"

ça me parait plus "propre" comme methode

 

 

maintenant, j'étais plutôt partit sur shell32.dll, que j'arrive à implémenter, mais que je n'arrive pas à instancier.

car là il y aurait tout ce qu'on peut faire avec le shell, je pense.

a+

Gégé

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e) (modifié)

Salut

 

Et avec ceci ?

 

(setq fso (vlax-create-object "Scripting.FileSystemObject"))
(vlax-for drv (vlax-get fso 'drives)
 (terpri)
 (vlax-dump-object drv)
)

 

Et encore

(vlax-get (vlax-get-property (vlax-get fso 'drives) 'item "F:") 'ShareName)

 

@+

Modifié par Patrick_35

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

en fait, je m'éloigne un peu du sujet, mais je faisais fausse route avec shell32,

la fenêtre dos c'est plutot cmd.exe (ou avais-je la tête ?)

mais du coup c'est quand même intéressant de manipuler l'explorateur windows:

;;§/files/test pour utiliser shell32 (l'explorateur)/none

(defun c:Shelltest ( / shell shs sh )
 (vl-load-com)
 (setq	shell (vlax-create-object "Shell.Application"))
 (if (not shm-help)
 (if	(not (vlax-import-type-library
       :tlb-filename
       (findfile "C:\\WINDOWS\\system32\\shell32.dll")
       :methods-prefix
       "shm-"
       :properties-prefix
       "shp-"
       :constants-prefix
       "shc-"
       )
     )
    (progn (alert "Cannot find \"shell32.dll\"") (exit))
 )
   )
 

 ;;ouvre une fenêtre de l'eplorateur sur C:\\
(shm-open shell "c:\\")

 ;;les fenetres
 (setq shs (shm-windows shell))
 ;;la fenetre
 (setq sh (vla-item shs 0))
 (vlax-dump-object sh T)
 (vlax-release-object sh)
 ;;ferme l'objet shell
 (vlax-release-object shell)

 )

----------------------------------------------------------------------

Site: https://www.g-eaux.fr

Blog: http://g-eaux.over-blog.com

Posté(e)

Hello,

Merci Patrick !

j'aime beaucoup :

(setq fso (vlax-create-object "Scripting.FileSystemObject"))
(vlax-get (vlax-get-property (vlax-get fso 'drives) 'item "F:") 'ShareName)

 

Je le garde et l'ajoute à ma routine.

 

Gégé, tu pars dans des contrées où je n'arrive pas à te suivre, mais très intéresant ton code, en fait j'essai de décoder ... :)

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité