Parce que c’est la porte d’entrée pour l’utiliser une référence avec vlax-create-object
L’aide Autocad nous l’explique de manière très claire …
(vlax-create-object prog-id)
Use vlax-create-object when you want a new instance of an application to be started, and an object of the type specified by <Component> (see the argument description) to be created. To use the current instance, use vlax-get-object. However, if an application object has registered itself as a single-instance object, only one instance of the object is created, no matter how many times you call vlax-create-object.
Arguments
prog-id
A string containing the programmatic identifier of the desired ActiveX object. The format of prog-id is
<Vendor>.<Component>.<Version>
For example:
AutoCAD.Drawing.15
Ben impossible de trouver l’info directement en affichant les propriétés du fichier:
Par exemple pour Autocad
J’essaye avec Visual Studio, mais ce coup-ci avec excel :
On s’approche, on a du 14, mais comment l’appelle-t-on vraiment ?
Puis encore pour Excel avec l’éditeur VBA
En référence :
Je note qu’il s’agit de la version 14, mais pour le reste, je ne sais pas où on trouve cette info
regsvr32
Vite déçu, cette commande ne me donne aucune info
La base de registre
Je sais que c’est là que se trouve l’info, mais très difficile de faire le lien entre la référence et son progID.
On trouve par exemples des openwithprogids associés à des extensions, mais je n’y ai pas retrouvé mes petits
dumpbin.exe /EXPORTS /All "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe" > excel.txt : pas de excel.application.14 dedans
Ma méthode
Je référence le composant avec Visual studio,
Puis dans les propriétés de la référence
Je trouve le CLSID
Je fais la recherche dans la base avec 00020813-0000-0000-C000-000000000046
Je trouve dans la clé HKEY_CLASSES_ROOT\CLSID\{00020820-0000-0000-C000-000000000046}\Typelib
Au-dessus il y a ProgID :
Je sais que la version est 14, que ce que je veux instancier au départ c’est l’application, donc avec
Excel.application.14 je devrai y arriver :
Commande: (vlax-get-or-create-object "Excel.application.14")
#<VLA-OBJECT _Application 00000000267c1068>
Bingo !
Trouver Excel.application.14, c’est pas sorcier, c’est ultra documenté, mais prenons au hasard
L’obscure dskquota.dll
On essaye bêtement :
Commande: (vlax-get-or-create-object "dskquota.application")
nil
Ça ne marche pas
Dans la base, avec la méthode précédente, je trouve la clé
HKEY_CLASSES_ROOT\CLSID\{7988B571-EC89-11cf-9C00-00AA00A14F56}\ProgID
Qui contient :
Microsoft.DiskQuota.1
Commande: (vlax-get-or-create-object "Microsoft.DiskQuota.1")
#<VLA-OBJECT DIDiskQuotaControl 00000000268eb950>
Re Bingo !
Des explications supplémentaires ici (page 71)
Administration à l’aide de VBScript
Chez Microsoft, tout sur les progID de leurs applis
Une piste à explorer chezsiemens (page 190)
A un commentaire du genre « mais il suffit de faire alt+shift sur » … vous ne saviez pas ?