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

Delphi Discussion :

Ouvrir une app externe dans une position donnee [FAQ]


Sujet :

Delphi

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut Ouvrir une app externe dans une position donnee
    Salut

    J'ai besion de faire una app qui ouvre une autre. Ça est facile avec ShellExecute mais..... j'ai besoin de le faire avec une taille determinee et dans une position especifique

    Un exemple: je veux ouvrir le word et le Acrobat mais le Word doit s'ouvrir dans la coordonée (0,0) et avec une taille de 100x100 et le Acrobat doit s'ouvrir dans la coordonée (101x0) et avec une taille de 50x100

    Commet peux je le faire?

    Merci a tous

    A+

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Du VB ?
    Mais que diable faisait-il dans cette galére...
    Il n'y a pas ça dans la FAQ Delphi

  4. #4
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Laurent Dardenne
    Du VB ?
    Mais que diable faisait-il dans cette galére...
    Il n'y a pas ça dans la FAQ Delphi
    j'ai donnée ces lien pour les explication et en plus pour voir autre API
    malheuresement il n'y a pas de cite en delphi comme cella
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par edam
    j'ai donnée ces lien pour les explication et en plus pour voir autre API
    Je plaisante, ça m'arrive qq fois

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Laurent Dardenne
    Je plaisante, ça m'arrive qq fois
    oh;
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Merci pour la réponse. Je ne sais pas de VB mais je vais tenter de le compendre et de le faire en Delphi

    Si je peux le faire, je mettrai ici la façon et mettre le résolu

    Merci encore une autre fois

    A+

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par cadetill
    Je ne sais pas de VB mais je vais tenter de le compendre et de le faire en Delphi
    pas la peine de comprendre le vb, ce sont des api que tu peut chercher sur ce cite comment les utilisé, pour plus d'explication sur ces api tu peut les cherché sur internet (voir meme msdn de microsoft ou win32.hlp installé avec delphi)
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    oui oui, j'ai vu

    Bon, ici un morceau de code pour voir comme le faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var
      HInst: THandle;
    begin
      ShellExecute(0, 'OPEN', 'notepad', nil, nil, SW_SHOWNORMAL);
      Sleep(100);
      HInst := FindWindow(nil, 'Sin título - Bloc de Notas');
      SetWindowPos(HInst, HWND_TOP, 0, 0, 500, 500, SWP_SHOWWINDOW);
    end;
    je dois mettre un Sleep parce que si non, le FindWindow ne trouve pas la fenetre

    Bon, merci pour les APIs une autre fois

    A+

  10. #10
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    tu as du voir ce lien avant, pour récupéré directement le handle de l'aplication executé: http://delphi.developpez.com/faq/?pa...oleapplication
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Merci pour le lien edam, mais j'ai essayer de le faire avec CreateProcess mais je n'arrive pas

    Je fais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var
      StartInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
    begin
      FillChar(StartInfo, SizeOf(StartInfo), #0);
      StartInfo.cb := SizeOf(StartInfo);
     
      CreateProcess(Nil, '"Notepad.exe"', Nil, Nil, False, 0, Nil, Nil, StartInfo, ProcessInfo);
      SetWindowPos(ProcessInfo.dwProcessId, HWND_TOP, 0, 0, 500, 500, SWP_SHOWWINDOW);
    Peut etre je dois faire quelque chose de plus ou peut etre que le handle de ProcessInfo c'est le handle du process et pas de la fenetre du process. Je ne sais pas

    Merci en avance

    A+

  12. #12
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If CreateProcess(Nil, '"Notepad.exe"', Nil, Nil, False,
                    0, Nil, Nil, StartInfo,ProcessInfo) Then
    il y a startInfo;: http://msdn.microsoft.com/library/de...upinfo_str.asp
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  13. #13
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Citation Envoyé par edam
    Encore merci edam. Voici c'est que je fais et que ne me fonctionne pas

    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
     
    var
      ret: Boolean;
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
    begin
      with StartupInfo do
      begin
        cb := SizeOf(StartupInfo);
        dwX := 0;
        dwY := 0;
        dwXSize := 100;
        dwYSize := 100;
        wShowWindow := SW_SHOWNORMAL;
        dwFlags := STARTF_USESHOWWINDOW or STARTF_USESIZE or STARTF_USEPOSITION;
        lpReserved := nil;
        lpDesktop  := nil;
        lpTitle    := nil;
        cbReserved2 := 0;
        lpReserved2 := nil;
      end;
     
      ret := CreateProcess(nil, 'notepad.exe', nil, nil, False,
                           CREATE_DEFAULT_ERROR_MODE, nil, nil, StartupInfo, ProcessInfo);
      if not ret then
        ShowMessage('Error (' + IntToStr(GetLastError) + ')');
    J'ai regarde sur le net et sur les forums et j'ai vu des exemples comme mon morceau de code, mais les valeur dwX, dwY, dwXSize et dwYSize est comme s'ils n'existen pas et dwFlags a STARTF_USEPOSITION (pour dwX et dwY) et STARTF_USESIZE (pour dwXSize et dwYSize).

    Je ne sais pas c'est que je fais mal

    Merci encore pour votre aide

    A+

  14. #14
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    voir: http://msdn.microsoft.com/library/de...showwindow.asp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SW_SHOWDEFAULT
    Sets the show state based on the SW_ value specified in the STARTUPINFO
     structure passed to the CreateProcess function by the program that started the application.
    je pance que tu doit changer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wShowWindow := SW_SHOWNORMAL;
    en wShowWindow := SW_SHOWDEFAULT;
    essay;;
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  15. #15
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    J'ai essayer et rien a changer

    Bon, j'ai la solution avec FindWindow, mais j'aimerai bien comprendre pourquoi ça ne marche pas

    Merci a tous

    A+

  16. #16
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    je peut savoir qui a mis [FAQ] au titre??
    si c'est un modérateur, alors il faut qu'il nous aide a touvé le hiq, merci
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  17. #17
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par edam
    je peut savoir qui a mis [FAQ] au titre??
    si c'est un modérateur, alors il faut qu'il nous aide a touvé le hiq, merci
    Le tag FAQ est à usage interne à l'équipe FAQ Delphi, il permet de retrouver les posts qui sont susceptible d'être intégrer dans la nouvelle version de la faq. C'est moi qui ai placé ce tag mais je n'ai pas le temps de me pencher sur le pb.
    La fonction du modérateur n'est pas de répondre à toutes les questions posées sur un forum, d'ailleurs nous n'avons pas réponse à tout, mais de vérifier si la forme des messages (balise code, pas de langage SMS) et le contenu de échanges est conforme à la legislation actuelle.

    [edit]
    Cette méthode n'est peut être pas la bonne, l'application cible peut forcer sa taille.
    Essaie une autre approche avec SetWindowPlacement (après l'appel à FindWindows)...

  18. #18
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Citation Envoyé par Laurent Dardenne
    [...] (après l'appel à FindWindows)...
    Bon, si je dois utiliser FindWindows j'ai déjà la solution avec SetWindowPos

    L'unique probleme est savoir quand l'application a fini de demarrer pour faire le FindWindows (pour ça le sleep)

    A+

  19. #19
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Bon

    En suivant avec ça.... Je dois positionner 2 fenetres. Une est le Acrobat et une autre est un video en format propriétaire (est un .exe qui a le visualisateur et le video tout ensemble).

    Comme nous avons vu ici, je peux mettre le PDF ou je veux avec l'aide de la fonction FindWindows parce que le titre de la fenetre est facile de l'avoir.

    Mais avec le video j'ai un probleme. Je ne sais pas quel est le titre de la fenetre (il n'y a pas). J'ai regardé avec le WinSight avec le résultat de la image.

    Comme je peux utiliser la fontion FindWindows pour savoir le handle de la fenetre?

    Merci encore

    A+
    Images attachées Images attachées  

  20. #20
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Comme je peux utiliser la fontion FindWindows pour savoir le handle de la fenetre?
    Tu connais quand même le nom de ton exécutable ?
    Donc tu énumères tous les process, tu t'arrêtes sur le tien, et là tu énumères toutes ses windows, et tu cherches la main.
    Et voilà !
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 7
    Dernier message: 24/01/2007, 10h01
  3. Réponses: 3
    Dernier message: 08/07/2006, 19h59
  4. Réponses: 12
    Dernier message: 12/05/2006, 09h21
  5. [XHTML11] Comment insérer une page externe dans une page ?
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 17/03/2005, 19h43

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