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

Outils Delphi Discussion :

[Inno Setup] SetTimer


Sujet :

Outils Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut [Inno Setup] SetTimer
    Bonjour,
    actuellement j'essaye de créer un timer en important la fonction SetTimer de windows comme ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Type Func = function() : Integer;
     
    //importing a Windows API function
    function SetTimer(const hWnd: Integer; const nIDEvent: Integer; const uElapse: Integer; const lpTimerFunc: Func): Integer;
    external 'SetTimer@user32.dll stdcall';
     
    { timerFunc }
    function timerFunc() : Integer;
    begin
      Result := 0;
    end;
     
    ....
    // quelquepart dans le code
    SetTimer(handle, 1, 500, @timerFunc);
    Mais à l'exécution, ça plante.

    L'un de vous aurait-il une idée sur ce qui pourrait se passer s'il vous plait ?

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    Citation Envoyé par Calys Voir le message
    Mais à l'exécution, ça plante.

    L'un de vous aurait-il une idée sur ce qui pourrait se passer s'il vous plait ?
    Ben, malheureusement, j'ai perdu ma boule de cristal. Donc à moins que tu me dises quelle est l'erreur que obtiens, et à quel moment, on va avoir du mal à t'aider...
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 6
    Par défaut
    Salut,

    Donc, comme je l'ai dit précédemment, l'installeur plante à l'exécution (plus précisément lorsque SetTimer est exécuté).

    L'erreur obtenue est un "Runtime Error" avec "Access violation at adress...blahblah". Bref, pas très utile comme info

    Merci quand même !

  4. #4
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    C'est ta fonction de call-back qui n'est pas bonne. L'aide des API Windows précise :
    TimerProc Function

    The TimerProc function is an application-defined callback function that processes WM_TIMER messages. The TIMERPROC type defines a pointer to this callback function. TimerProc is a placeholder for the application-defined function name.
    Syntax
    VOID CALLBACK TimerProc(

    HWND hwnd,
    UINT uMsg,
    UINT_PTR idEvent,
    DWORD dwTime
    );
    Parameters
    hwnd [in] Handle to the window associated with the timer. uMsg [in] Specifies the WM_TIMER message. idEvent [in] Specifies the timer's identifier. dwTime [in] Specifies the number of milliseconds that have elapsed since the system was started. This is the value returned by the GetTickCount function.
    Return Value
    This function does not return a value.
    Donc tu dois déclarer Func comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type
      Func = procedure(Handle, Msg, Event, Time: LongWord) stdcall;
    Et déclarer timerFunc selon le même schéma.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. [Inno Setup] Recherche de tutoriels
    Par argon dans le forum Autres langages
    Réponses: 5
    Dernier message: 30/01/2006, 19h55
  2. [instalation] Modifier le language d'inno setup ou d'is tool
    Par méphistopheles dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 26/01/2005, 21h59
  3. Delphi et inno setup
    Par drakes dans le forum Outils
    Réponses: 10
    Dernier message: 17/09/2004, 10h15
  4. [INNO SETUP][ORACLE] Installer le client Oracle avec Inno
    Par AnnSo dans le forum Bases de données
    Réponses: 11
    Dernier message: 19/08/2004, 16h21
  5. Bde Inno Setup et Test
    Par Fxg dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2004, 14h35

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