Verbs & InvokeVerb

Verbs & InvokeVerb - VB/VBA/VBS - Programmation

Marsh Posté le 28-12-2006 à 20:14:38    

Salut, je ne programme pas en VBS, plus en mIRC, mais je suis confronté à un problème qui touche les deux parties :)
J'essaye (oui je suis fou) de recréer le menu contextuel de Windows, en mIRC donc.
Après de nombreuses recherches j'ai vu re revus les "Verbs" et "InvokeVerb". Après tout ce que j'ai pu en voir, je sais à peu près que, par exemple, pour lancer la commande "Ouvrir" du menu, il faut faire objFolderItem.InvokeVerb(open) (j'ai le bon code en mIRC), pour afficher les propriétés d'un fichier/dossier, il faut faire objFolderItem.InvokeVerb(properties)
J'ai presque toutes (?) les correspondances entre les noms et ces commandes, voici celles que j'ai trouvé:
Nom - Commande
Ou&vrir - open
&Imprimer - print
&Couper - cut
Co&pier - copy
Créer u&n raccourci - link
Suppri&mer - delete
R&enommer - rename
P&ropriétés - properties
 
 
Jusque là, pas de problème.
Vue que le menu n'est presque jamais fixe, beaucoup d'items changent. Il me faut donc quelque chose pour lister ces items du menu.
Qu'à cela ne tienne.. j'a fait un alias (en mIRC) pour lister ces "Verbs"
J'ai donc été faire un tour sur MSDN: http://msdn2.microsoft.com/en-us/library/ms630699.aspx Pour avoir des infos sur la méthode verbs
Voici donc l'alias en mIRC. S'il ne vous servra pas à grand chose, il me servira à vous montrer mon problème (On y viens, enfin !)
 

Code :
  1. alias getverbs {
  2.   if ($com(Application)) .comclose application
  3.   if ($isfile($1-)) var %file = $1-, %dir = $nofile(%file)
  4.   elseif ($isdir($1-)) var %file = $gettok($1-,-1,92), %dir = $gettok($1-,1- $+ $calc($numtok($1-,92) -1),92)
  5.   .comopen Application Shell.Application
  6.   if (!$com(Application,Namespace,1,bstr,%dir,dispatch* ParseName)) return $false
  7.   .comclose Application
  8.   if ($com(ParseName)) {
  9.     if (!$com(ParseName,ParseName,1,bstr,$nopath(%file),dispatch* InvokeVerb)) return $false
  10.     .comclose ParseName
  11.   } 
  12.   if ($com(InvokeVerb)) {
  13.     if (!$com(InvokeVerb,Verbs,1,dispatch* verbs)) return $false
  14.     .comclose InvokeVerb
  15.   }
  16.   if ($com(verbs)) {
  17.     if (!$com(verbs,Count,3)) return $false
  18.     var %a = 1, %d = $com(verbs).result
  19.     while (%a <= %d) {
  20.       echo -a $comval(verbs,%a,name)
  21.       inc %a
  22.     }
  23.     .comclose verbs
  24.   }
  25.   return $true
  26. }


Syntaxe: //noop $getverbs(Fichier/Dossier)
 
à la fin, se trouve la ligne "      echo -a $comval(verbs,%a,name)"
C'est celle ci qui permet de faire la liste des noms des items.
Comme je l'ai dit précédement, à un "nom" est associée une "commande", open pour Ouvrir, print pour Imprimer.
Mais voilà, dans $comval(verbs,%a,name), name permet de donner le nom, Ou&vrir, &Imprimer etc..
Et je ne sais pas quoi mettre pour avoir la "commande" qui y est associée !!
Voilà mon soucis :(
Donc si quelque se sent d'attaque pour m'aider, sortez les mirc.exe, collez le code dans vos remote et changez c'te foutu valeur "name" pour voir si quelque chose d'autre sort ;D
C'est un problème épineux, je remercie d'avance ceux qui auront le courage de m'aider en ces périodes de fêtes.. :)
 
Merci, et Bonne année, bonne santé ! ;)


Message édité par LuckyFranck le 28-12-2006 à 20:16:28
Reply

Marsh Posté le 28-12-2006 à 20:14:38   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed