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 15: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 15: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 16: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 17: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