[Application service] Copie de l'executable. [Résolu]

kinkey_wizard 30 Messages postés dimanche 24 octobre 2004Date d'inscription 4 juillet 2005 Dernière intervention - 27 nov. 2004 à 15:57 - Dernière réponse : ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
kinkey_wizard 30 Messages postés dimanche 24 octobre 2004Date d'inscription 4 juillet 2005 Dernière intervention - 27 nov. 2004 à 18:10
3
Merci
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... :]

Merci kinkey_wizard 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de kinkey_wizard
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 27 nov. 2004 à 19:09
0
Merci
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
Commenter la réponse de cs_Delphiprog
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 27 nov. 2004 à 19:34
0
Merci
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 !
Commenter la réponse de JulioDelphi
kinkey_wizard 30 Messages postés dimanche 24 octobre 2004Date d'inscription 4 juillet 2005 Dernière intervention - 27 nov. 2004 à 20:51
0
Merci
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 ...
Commenter la réponse de kinkey_wizard
ni69 1529 Messages postés samedi 12 juin 2004Date d'inscription 5 juillet 2010 Dernière intervention - 5 déc. 2004 à 14:11
0
Merci
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 ! :)
Commenter la réponse de ni69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.