Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
25 novembre 2015 3 25 /11 /novembre /2015 15:21

Pourquoi connaître le progID?

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

Où est le problème ?

Ben impossible de trouver l’info directement  en affichant les propriétés du fichier:

propriété de acad.exe

propriété de acad.exe

Par exemple pour Autocad

J’essaye avec Visual Studio, mais ce coup-ci avec excel :

Comment connaître le ProgID d’une référence (COM, activeX etc …)

On s’approche, on a du 14, mais comment l’appelle-t-on vraiment ?

Puis encore pour Excel avec l’éditeur VBA

Comment connaître le ProgID d’une référence (COM, activeX etc …)

En référence :

Comment connaître le ProgID d’une référence (COM, activeX etc …)

Je note qu’il s’agit de la version 14, mais pour le reste,  je ne sais pas où on trouve cette info

Quelques pistes :

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

Et un dumpbin ?

Pas plus de succès avec

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, 

Comment connaître le ProgID d’une référence (COM, activeX etc …)

Puis dans les propriétés de la référence

Comment connaître le ProgID d’une référence (COM, activeX etc …)

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

Comment connaître le ProgID d’une référence (COM, activeX etc …)

Au-dessus il y a ProgID :

Comment connaître le ProgID d’une référence (COM, activeX etc …)

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 !

Tout ça pour ça ?

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 quoi je m'attends ?

A un commentaire du genre « mais il suffit de faire alt+shift sur » … vous ne saviez pas ?

 

 

G-EAUX

Partager cet article
Repost0

commentaires