IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment deplacer un ficher à la fermeture de windows


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut Comment deplacer un ficher à la fermeture de windows
    Salut,

    Voila, j'ai fait un logiciel qui ne doit lancer une seule fois.
    Il y a de meilleur solutions mais celle la me convient : J'interdis de relancer le logiciel (en le refermant aussitôt) en testant l'existence d'un fichier qui a été créé à la première ouverture du logiciel.

    Je voudrais que ce fichier soit déplacé à la fermeture d'une session ou à l'extinction de l'ordinateur.

    Mon soucis est de savoir comment on fait pour ca alors que mon logiciel est fermé...

    A la fermeture de mon logiciel, je dois lancer un nouveau logiciel invisible qui à sa fermeture déplace le fichier ?
    Il n'y a pas mieux comme solution ?
    Si non comment on détecte le fermeture d'une session ?

    Merci, David.

  2. #2
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut
    Tu es au courant qu'avec un Mutex, tu n'a pas besoin de fichier.
    Tu met ça au lancement de ton appli, et zou, c'est bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Vérification des instances multiples
      //Effacement de la dernière erreur
      SetLastError(NO_ERROR);
      //Création du mutex
      CreateMutex(nil, False, 'Mon_mutex');
      //Vérification des erreurs
      if (GetLastError = ERROR_ALREADY_EXISTS) then
        exit;
    Sinon, pour ton fichier, en effet, pourquoi ne pas lancer une autre appli
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    Le mutex ne m'interesse pas (je m'en sers déjà et ce n'est pas suffisant)

    Je ne veux lancer qu'une seule fois mon logiciel.

    On le lance, on le ferme. on le relance et la il refuse car il a desja ete lancer une fois.
    --> Ca c'est bon pas de soucis

    Comment on deplace un fichier quand on ferme une session ?

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Question : Pourquoi ne pas utiliser une clé de registre, plutôt qu'un fichier ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre régulier Avatar de yoghisan
    Profil pro
    Inscrit en
    Février 2004
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 172
    Points : 113
    Points
    113
    Par défaut
    c'est la prochaine evolution du logiciel mais je ne sais pas trop comment faire pour n'autoriser qu'un seul lancement par allumage d'ordi ou par session

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    quand ton exe se lance il peut créer des fichiers (répertorie windows/temp ect) ou des clés de registre bien cachées.

    si ces fichiers/clés n'existent pas : il se lance normalement.
    si ces fichiers/clés existent : il ferme

    ensuite c'est plus simple d'agir en ouverture que en fin de session...

    par exemple une clé de registre dans

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]

    tu lance un petit programme invisible qui nettoit tous les fichiers/clés au démarrage de l'ordi...

    ton programme pourra se re-lancer une fois

    je sais pas si j'ai été bien clair

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Mieux : tu utilises la clé [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce], qui lance ton programme au démarrage de la session. Windows "supprime" ensuite tout seul l'entrée de la base de registre correspondante.
    Il suffit que ton programme "remette" cette clé lorsqu'il se lance pour entretenir cette méthode.
    Accessoirement, comme te l'as dit the_magik_mushroom, si la clé existe déjà, tu refuses le lancement, tout simplement ! ;-)

    Tu peux compléter ça avec une autre clé (HKCU\Software, par exemple), comme l'utilisent beaucoup d'applications, qui contiendra une clé "spécifique", propre au compte d'utilisateur courant, et qui contient la date et l'heure du dernier lancement du programme.
    Si la différence de temps entre cette date/heure en base de registre et la date/heure courante est inférieure à 23h (pas 24, sinon tu risques des effets de bord), tu refuses le lancement.

    Dans ton cas particulier, tu peux utiliser ce coup de la date/heure avec ton fameux fichier à déplacer, sauf que tu vas écrire, dedans, cette date/heure de dernier lancement, justement. Ainsi, plus besoin de le déplacer, tu devras juste l'ouvrir et vérifier son contenu.

    OK ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Exécuter commande à la fermeture de Windows
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 12
    Dernier message: 19/02/2014, 11h06
  2. [win-registre]Executer un programme à la fermeture de Window
    Par arnolem dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 28/11/2005, 09h44
  3. Comment lancer un programme au démarrage de Windows ?
    Par nesquik dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 29/07/2005, 17h48
  4. Lancer un programme a la Fermeture de Windows
    Par sali dans le forum Windows
    Réponses: 2
    Dernier message: 01/07/2004, 22h54
  5. Comment stocker un ficher dans une table postgres
    Par josoft dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/06/2003, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo