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

Fortran Discussion :

Fenêtre dos non visible


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut Fenêtre dos non visible
    Bonjour tout le monde,

    Quelqu'un connait-il une instruction/méthode/... en fortran qui permet d'avoir la fenêtre dos invisible à l'écran (ou au moins minimisée) lors de l'éxécution du programme?
    J'utilse déjà l'instruction
    i=SETEXITQQ(2) (de la librairie dflib)
    pour que la fenêtre se ferme automatiquement à la fin de l'exécution. J'ai donc un QuickWinApplication project.
    Ca serait super si quelqu'un avait un tuyau.

    Merci

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    arrete windows, passe à unix....

    sinon cherche dans le Windows API, là tu cherche une fonction windows... comme ton programme est_il lancé? depuis une autre appli de ton jus ou bien depuis l'explorateur?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut
    Citation Envoyé par genteur slayer
    arrete windows, passe à unix....

    sinon cherche dans le Windows API, là tu cherche une fonction windows... comme ton programme est_il lancé? depuis une autre appli de ton jus ou bien depuis l'explorateur?
    Merci du conseil....

    Sinon, l'exécutable fortran est lancé à partir d'une application Delphi qui permet d'avoir une interface windows pour le programme (au lieu d'une interface dos!)

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    dans ce cas tu dois utiliser une fonction du genre 'shellexecute' là tu peux choisir de l'exécuté minimisé c'est un début... ce qui dois être possible de faire, j'avais cherché un peu il y a quelques temps, c'est de redirigé ce qui devrai être écrit dans la console soit écrit dans une zone de texte de l'ihm

    pour cela je te suggère de ne pas utilise 'shellexecute' mais :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    //==============================================================================
    //=== Lance une application et retourne le process ID
    //==============================================================================
    Function StartAndGetProcessID(Command: String): DWord;
    Var
      lpsaProcess: PSecurityAttributes;
      lpsaThread: PSecurityAttributes;
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      AddrCmd: Array[0..255] Of Char;
      ReturnValue: BOOL;
    Begin
      FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
      With StartupInfo Do
      Begin
        cb := SizeOf(TStartupInfo);
        dwFlags := STARTF_USESHOWWINDOW;
        wShowWindow := SW_SHOW;
      End;
      New(lpsaProcess);
      New(lpsaThread);
      Try
        lpsaProcess^.nLength := SizeOf(lpsaProcess^);
        lpsaProcess^.lpSecurityDescriptor := Nil;
        lpsaProcess^.bInheritHandle := True;
     
        lpsaThread^.nLength := SizeOf(lpsaThread^);
        lpsaThread^.lpSecurityDescriptor := Nil;
        lpsaThread^.bInheritHandle := True;
     
        StrPCopy(AddrCmd, Command);
        ReturnValue := CreateProcess(Nil, AddrCmd, lpsaProcess, lpsaThread, False,
          0, Nil, Nil, StartupInfo, ProcessInfo);
      Finally
        Dispose(lpsaProcess);
        Dispose(lpsaThread);
      End;
      result := 0;
      If ReturnValue Then
      Begin
        result := ProcessInfo.dwProcessId;
        SEtThreadIdealProcessor(ProcessInfo.hThread,0);
      End;
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(ProcessInfo.hProcess);
    End;//==============================================================================
    //=== Lance une application et retourne le process ID
    //==============================================================================
    Function StartAndGetProcessID(Command: String): DWord;
    Var
      lpsaProcess: PSecurityAttributes;
      lpsaThread: PSecurityAttributes;
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      AddrCmd: Array[0..255] Of Char;
      ReturnValue: BOOL;
    Begin
      FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
      With StartupInfo Do
      Begin
        cb := SizeOf(TStartupInfo);
        dwFlags := STARTF_USESHOWWINDOW;
        wShowWindow := SW_SHOW;
      End;
      New(lpsaProcess);
      New(lpsaThread);
      Try
        lpsaProcess^.nLength := SizeOf(lpsaProcess^);
        lpsaProcess^.lpSecurityDescriptor := Nil;
        lpsaProcess^.bInheritHandle := True;
     
        lpsaThread^.nLength := SizeOf(lpsaThread^);
        lpsaThread^.lpSecurityDescriptor := Nil;
        lpsaThread^.bInheritHandle := True;
     
        StrPCopy(AddrCmd, Command);
        ReturnValue := CreateProcess(Nil, AddrCmd, lpsaProcess, lpsaThread, False,
          0, Nil, Nil, StartupInfo, ProcessInfo);
      Finally
        Dispose(lpsaProcess);
        Dispose(lpsaThread);
      End;
      result := 0;
      If ReturnValue Then
      Begin
        result := ProcessInfo.dwProcessId;
        SEtThreadIdealProcessor(ProcessInfo.hThread,0);
      End;
      CloseHandle(ProcessInfo.hThread);
      CloseHandle(ProcessInfo.hProcess);
    End;
    bon ça c'est pas du fortran mais du Delphi... l'avantage de cette procedure c'est que tu recois le process ID une fois que tu as cela tu peux faire un peu ce que tu veux de ton appli.... (moi, étant donné que c un code de calcul, je faisait tracé l'utilisation CPU et mémoire de mon code)....

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut
    En fait, au départ j'utilisais shellexecute mais comme l'exécution est relativement longue, il faut attendre qu'elle soit terminée pour continuer la suite du programme et donc je suis passé à CreateProcess, que visiblement tu utilises aussi.
    Alors, à partir du ProcessInfo, il doit y avoir moyen de rendre la fenetre dos invisible ou minimisée ou... Sais-tu me donner une piste, j'ai déjà assez bien cherché et pas moyen! Sans doute avec windowstate ou showwindow mais pas moyen de les utiliser correctement Ou autre chose???
    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 16
    Par défaut
    Ou alors peut-être l'instruction "sendmessage"???

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/07/2005, 11h58
  2. [ClassLoader]icones non visibles
    Par phil_ma dans le forum Général Java
    Réponses: 4
    Dernier message: 19/01/2005, 20h09
  3. Capture d'une form non visible
    Par Linkin dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/04/2004, 14h58
  4. Réponses: 4
    Dernier message: 07/12/2002, 15h24
  5. Form principale non visible au demarrage!!!!
    Par toufou dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/07/2002, 21h49

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