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 :

ShellExecute mais en mieux


Sujet :

Langage Delphi

  1. #1
    Inactif
    Homme Profil pro
    Analyste-programmeur Delphi
    Inscrit en
    Décembre 2003
    Messages
    490
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Analyste-programmeur Delphi

    Informations forums :
    Inscription : Décembre 2003
    Messages : 490
    Points : 287
    Points
    287
    Par défaut ShellExecute mais en mieux
    Bonjour à tous,

    J'ai épluché ShellExecute, que j'utilise depuis longtemps, sans trouver la solution à mon "problème", qui n'en est pas vraiment un d'aileurs.
    Je me demandais, en fait, s'il n'existait pas un moyen pour dimenssionner la fenêtre de l'application lancée par ShellExecute (ou, justement, un autre moyen).
    Ce qui permettrait, par exemple, de limiter la taille des fenêtres ouvertes successivement (actuellement avec plusieurs ShellExecute) et de les positionner proprement côtes à côtes.
    Ce qui serait beau.

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    c'est l'application lancée qui décide de ses dimensions...cf TForm.Position !
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Tu peux toujours passer par FindWindow et SetWindowPos ou MoveWindow.
    Je remplacerais cependant ShellExecute par ShellExecuteEx en spécifiant SEE_MASK_WAITFORINPUTIDLE pour m'assurer que la fenêtre principale est créée et en attente.

    Un exemple avec explorer.exe fait pour un client en Pascal Scripting (RemObjects)
    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
    function FindWindow(lpClassName, lpWindowName: PChar): Longint; external 'FindWindowA@user32.dll stdcall';
    function SetWindowPos(Wnd: Longint; hWndInsertAfter: Longint; X, Y, cx, cy: Integer; uFlags: UINT): BOOL; external 'SetWindowPos@user32.dll stdcall';
     
    var
      Wnd :Longint;
     
    begin
      Exec('open', 'explorer.exe', '', '', SW_SHOW, ewWaitIdle);
     
      //Windows XP
      Wnd := FindWindow('ExploreWClass', '');
     
      if Wnd = 0 then
        //Windows Vista+
        Wnd := FindWindow('CabinetWClass', '');
     
      if Wnd <> 0 then
        SetWindowPos(Wnd, 0, 0, 0, 800, 538, 0)
    end.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2013, 18h25
  2. Réponses: 6
    Dernier message: 20/02/2011, 21h33
  3. Caster un objet mais en mieux.
    Par delas dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2008, 16h03
  4. replace, mais en mieux
    Par ryan dans le forum ASP
    Réponses: 2
    Dernier message: 26/04/2005, 21h15

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