[Application service] Copie de l'executable.

Résolu
kinkey_wizard Messages postés 30 Date d'inscription dimanche 24 octobre 2004 Statut Membre Dernière intervention 4 juillet 2005 - 27 nov. 2004 à 15:57
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 - 5 déc. 2004 à 14:11
Bonjour tout le monde, comment allez vous ?

Voyons, voyons... Oui^^... Je pense être bien au bord du suicide^^...
J'ai trouvé cette instruction sur un site il y a peu :

CopyFile(PChar(Application.exeName), PChar(NewPathAndFile), False); 


Pour ceux qui ne sauraient pas, ce code permet de copier le fichier *.exe de l'application Delphi (Nom et chemin trouvés avec "application.exeName") vers le chemin contenu dans la variable "NewPathAndFile"...

Cela fonctionne très bien pour une application classique, mais ce code n'est pas utilisable avec une application service, à savoir que dans une application service il est impossible de trouver la propriété "exeName" de "Application" contrairement aux autres applications, il ne la reconnait pas...

Or moi je voudrais le faire pour une application service justement... C'est pourquoi ma question est donc connaissez-vous un autre moyen de copier l'exe de l'application vers un autre endroit pour une application service et en ne connaissant que l'endroit d'arrivée ?

Ou alors s'il n'existe pas d'autre manière : comment pourrais je recuperer le chemin et le nom du fichier de mon application service à son execution pour que le code ci-dessus fonctionne ?

Merci d'avance pour vos reponses :] ...

PS : Si cela peut aider je précise que je voudrais récuperer le nom de l'exe sans que mon service soit forcement installé... Genre vous venez de compiler, vous l'executez et c'est à ce moment là que je voudrais le recuperer... Merci encore.

5 réponses

kinkey_wizard Messages postés 30 Date d'inscription dimanche 24 octobre 2004 Statut Membre Dernière intervention 4 juillet 2005
27 nov. 2004 à 18:10
Non c'est bon en fait j'ai trouvé...

En fait il suffit de remplacer ceci :
CopyFile(PChar(Application.exeName), PChar(NewPathAndFile), False);


Par ceci :
CopyFile(PChar(ParamStr(0)), PChar(NewPathAndFile), False);


""
ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount. For example, an Index value of 2 returns the second command-line parameter.

On Windows, ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE).

On Linux, ParamStr(0) returns the command used to execute the program, without parameters (for example, ./myprogram). This behavior is dependent on information returned by the shell program and may not be consistent among all shells.

Note: Use double quotes to wrap multiple words as one parameter (such as long file names containing spaces).
""

Merci de m'avoir lu et navré pour le dérangement... :]
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
27 nov. 2004 à 19:09
Tiens, j'étais persuadé que ExeName renvoyait la même chose que ParamStr(0).
Il n'y a donc pas de dérangement, bien au contraire, puisque tu as même pris du temps pour poster la réponse. C'est sympa ;)

May Delphi be with you
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
27 nov. 2004 à 19:34
euh idem :| et selon la description je n'en vois pas de différence :/ laquelle est ce ?

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! ;)

-------------------------------------------
http://diabloporc.free.fr : mon site refait ! Delphi power !
0
kinkey_wizard Messages postés 30 Date d'inscription dimanche 24 octobre 2004 Statut Membre Dernière intervention 4 juillet 2005
27 nov. 2004 à 20:51
Encore heureux que j'ai pris du temps pour poster la réponse, j'aurais été des plus mal élevés si tel n'avait pas été le cas... :]

Sinon la difference fondamentale ? Je n'en ai aucune idée^^. Je débute encore en Delphi... J'ai juste remarqué que pour les applications normales "ParamStr(0)" et "ExeName" fonctionnaient alors que pour les applications services seul "ParamStr(0)" marchait... Je ne sais absolument pas pourquoi O_o ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ni69 Messages postés 1418 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 5 juillet 2010 12
5 déc. 2004 à 14:11
Je pense que la différence réside en ceci :

L'emploi de Application.ExeName est possible si l'unit FORMS est déclarée dans uses.
L'emploi de paramstr(0) est possible si l'unit WINDOWS est déclarée dans uses....
Donc dans le cas d'application service, seul 'paramstr(0)' marche...

@+
Bonne Prog'
Nico

N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient ! :)
0
Rejoignez-nous