Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Comment pourrais-je récupérer le nom de l'executable?
Hors ligne
En PB pur et dur, pas possible.
Il faut utiliser la fonction getModuleFileName de l'API Windows.
Bien sûr ça ne fonctionnera qu'avec un executable, pas depuis PB.
Hors ligne
Oui, c'est vrai j'ai oublié de dire bonjour, mille excuses: ....
BONJOUR A TOUS !!!!!!!!
Hors ligne
Voilà mon code, mais le problème je pense, vient du handle ...
[PB external function declaration] FUNCTION int GetModuleFileNameA(& ulong hinstModule, & REF string lpszPath, & ulong cchPath) LIBRARY "kernel32.dll" [Powerscript] string ls_Path unsignedlong lul_handle ls_Path = space(1024) lul_handle = Handle(GetApplication()) GetModuleFilenameA(lul_handle, ls_Path, 1024) MESSAGEBOX("CURRENT APPLICATION PATH", LS_PATH)
Dernière modification par poche (20-04-2007 13:51:18)
Hors ligne
Bonjour poche.
Et ceci, ça ne pourrait pas t'aider?
string ls_name
ls_name = GetApplication ().appname
Evidemment, il faut avoir saisi appname dans la DBParam avant de se connecter
à la BDD.
Mais peut-être ai-je mal compris ta question...
Dernière modification par foon (20-04-2007 13:50:27)
Hors ligne
string ls_name
ls_name = getapplication ().appname
Ce code sert à récupérer le nom de l'application et non le nom de l'executable...
En faite, je veux récupérer par exemple : test.exe
Hors ligne
Bon, j'aurais dû m'en douter...
Ton API getmodulefilenamea retourne quelle valeur?
Et le handle est correct?
Hors ligne
Au fait, pour tester tes codes retours:
When you ask for the handle of the application, Handle returns 0 when you are using the PowerBuilder Run command. As far as Windows is concerned, your application does not have a handle when it is run from PowerBuilder. When you build and run an executable version of your application, the Handle function returns a valid handle for the application.
Tu ne peux donc tester ton appli qu'en executable... Comme l'a dit plus haut Shahin
Donc il va falloir mettre des messagebox partout pour tester le handle et le code retour
de l'API et générer un exe afin de détecter ce qui cloche...
Dernière modification par foon (20-04-2007 14:31:57)
Hors ligne
Mon handle me revoi 0 et le getmodulefilename me renvoi 16
Hors ligne
Oui je sais, lorsque je test, je recrais un executable et je met des messagebox pour vérifier les différentes valeurs...
Hors ligne
poche a écrit:
Oui je sais, lorsque je test, je recrais un executable et je met des messagebox pour vérifier les différentes valeurs...
ou alors tu écris les infos de debug dans un fichier log
Hors ligne
La définition de l'API par l'ami Pick:
function ulong getmodulefilename(ulong hmodule,ref string lpfilename,ulong nsize) library "kernel32.dll" alias for "GetModuleFileNameA"
Apparemment, ce n'est pas tout à fait la même que celle que tu utilises, mais bon...
Si le handle n'est pas bon, je doute que ça marche...
Hors ligne
foon a écrit:
La définition de l'API par l'ami Pick:
Code: pb
function ulong getmodulefilename(ulong hmodule,ref string lpfilename,ulong nsize) library "kernel32.dll" alias for "GetModuleFileNameA"
Apparemment, ce n'est pas tout à fait la même que celle que tu utilises, mais bon...
Si le handle n'est pas bon, je doute que ça marche...
Je m'étais trompé, le handle est égal à : 268435456
Et sinon, j'ai essayé avec ton code et ça fonctionne toujours pas
à la place du nom de l'executable, j'ai des petits carrés...
Dernière modification par poche (20-04-2007 15:04:43)
Hors ligne
petit problème d'encodage peut-être ? as-tu essayé :
function ulong getmodulefilename(ulong hmodule,ref string lpfilename,ulong nsize) library "kernel32.dll" alias for "GetModuleFileNameA;ansi"
Hors ligne