Trouver le Path d'una application
Salut tous le monde,
Le problème:
Les applications sont installées sur un disque réseau par exemple H:\
sur les bureaux des différents Desktop est installé un Short Cut (Icon)
Quand on lance l'application à partir du Short Cut, elle doit automatiquement configurer
sa base de registre locale et enregistrer dans cette base le Path Source de l'application.
Par exemple la source est H:\Easywindows\Bin\[ICM].EXE
J'ai fait le module suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
: $LEFT-CLICK S( --- Flag )
PAD 255 ERASE S( --- ) \ On purge le PAD
S" [ICM].EXE" AX$ $! S( --- ) \ Nom de l'application Racine dans la chaine AX$
AX$ DROP GetModuleHandleA S( --- mHdl ) \ On passe ce nom à la fonction GetModuleHandle
?NIL SysAbort" $LEFT-CLICK MODULE_HANDEL_ERROR" S( mHdl --- mHdl | Error ) \ On teste si erreur, si oui on sort
PAD 255 GetModuleFileName S( mHdl --- n ) \ On passe le Handel obtenu à la fonction GetModuleFileName
PAD SWAP ROOT$ $! S( --- ) \ Qui retourne le Path. On récupère ce Path dans la Chaine ROOT$
( ROOT$ Racine )$RegKey.Write S( --- ) \ On enregistre le contenu de ROOT$ sous l'étiquette Racine dans la base de Registre locale
LPARAM LOWORD fg_xvb XMPOS !
LPARAM HIWORD fg_yvb YMPOS !
RacineMenu.Get
hAPP WM_CLOSE 0 0 SendMessage DROP
; |
Au lieu de retourner le Path de la source, ça me retourne le Path du Short Cut
Ce qui est souhaité H:\Easywindows\Bin\[ICM].EXE
Ce qui est obtenu C:\Users\Acer\Desktop\[ICM].EXE
LA QUESTION:
Y a t'il des fonctions autres que GetModuleHandleA et GetModuleFileNameA pour obtenir le path de la source?
Je pense qu'il doit exister quelque chose puisque Windows installe correctement les applications en mode local alors que les
sources sont sur le réseau.
Merci pour vos réponses
Cordialement
Ludwig
Trouver le Path d'una application
Citation:
Envoyé par
Pol63
System.reflection.assembly.getentryassembly().location
Salut,
Merci pour la réponse,
Le fait est que je ne travaille pas ni avec #C ni avec .Net et autre mais avec une machine Virtuelle qui utilise les fonctions
MS écrites en C++. La machine travaille en notation Polonaise inversée, il me faut juste le nom de la fonction.
Une fois que j'ai ce nom le reste ne pose plus de PB.
EXEMPLE:
Code:
1 2 3 4 5 6 7 8 9
|
PAD 255 ERASE S( --- ) \ On purge le PAD qui recevra le PATH
S" [ICM].EXE" AX$ $! S( --- ) \ Nom de l'application Racine dans la chaine AX$
AX$ DROP GetModuleHandleA S( --- mHdl ) \ On passe le nom de l'application cherchée à la fonction GetModuleHandleA
\ Qui retourne un Handel que l' on passe à la fonction GetModuleFileName laquelle fonction
\ expédie le Path dans le PAD que l'on à passé en argument
mHdl PAD 255 GetModuleFileName |
Trouver le Path d'una application
Citation:
Envoyé par
Pol63
System.reflection.assembly.getentryassembly().location
Salut,
Merci pour la réponse,
Le fait est que je ne travaille pas ni avec #C ni avec .Net et autre mais avec une machine Virtuelle qui utilise les fonctions
MS écrites en C++. La machine travaille en notation Polonaise inversée, il me faut juste le nom de la fonction.
Une fois que j'ai ce nom le reste ne pose plus de PB.
EXEMPLE:
Code:
1 2 3 4 5 6 7 8 9
|
PAD 255 ERASE S( --- ) \ On purge le PAD qui recevra le PATH
S" [ICM].EXE" AX$ $! S( --- ) \ Nom de l'application Racine dans la chaine AX$
AX$ DROP GetModuleHandleA S( --- mHdl ) \ On passe le nom de l'application cherchée à la fonction GetModuleHandleA
\ Qui retourne un Handel que l' on passe à la fonction GetModuleFileName laquelle fonction
\ expédie le Path dans le PAD que l'on à passé en argument
mHdl PAD 255 GetModuleFileName |
Cordialement
Ludwig