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

Powerbuilder Discussion :

[PB 5] Lancement une seule instance appli


Sujet :

Powerbuilder

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [PB 5] Lancement une seule instance appli
    Bonjour à tous

    Je lance un navigateur IE (avec une url en paramètre) depuis une application PowerBuilder,
    ça fonctionne actuellement avec l'instruction "winexec(iexplore, 1)"

    note: winexec provient de l'api "kernel32.dll", à mon sens c'est comme un run

    je souhaiterai avoir le fonctionnement suivant:

    - si IE est déjà lancé (mais comment le déterminer ?), ne pas en lancer un autre et lui passer une url (mais par quel moyen ?)

    - si IE n'est pas lancé (aucune instance dans les processus), je le lance en lui donnant mon url.

    La seconde ligne est ce qui est fait actuellement à part que je le lance systématiquement un autre IE (qu'il tourne déjà ou pas), voici le code grosso modo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string ls_filename
    uint rtn, wstyle
    ls_filename = "c:\windows\iexplorer.exe"
    wstyle = 1
    rtn = WinExec(ls_filename, wstyle)
    Messagebox("Return Code", string(rtn))
    (je peux remplacer éventuellement le winexec par un run)

    Ce que je souhaite faire vous paraît techniquement possible ? et si oui quelles pistes me suggérierez-vous ?

    Merci pour toute idée

    ps: je suis sous PB 5 (no choice ) et IE 6 (pas le choix non plus)

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Tu as meilleurs temps d'intégrer un l'internet explorer comme un objet ole (Microsoft Web Browser) dans ton appli. Ceci te permet de contrôler toi-même ce qui se passe.

    Tu peux p. ex. naviguer sur un site par la commande ole_browser.object.Navigate2(url)

    ou parcourir tous les éléments qui se trouvent sur le site et p. ex. remplir des champs, etc.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par highlander Voir le message
    Tu as meilleurs temps d'intégrer un l'internet explorer comme un objet ole (Microsoft Web Browser) dans ton appli. Ceci te permet de contrôler toi-même ce qui se passe.

    Tu peux p. ex. naviguer sur un site par la commande ole_browser.object.Navigate2(url)

    ou parcourir tous les éléments qui se trouvent sur le site et p. ex. remplir des champs, etc.
    Je te remercie pour ta réponse Highlander, je me pose néanmoins des questions sur la mise en pratique d'une solution de ce type...
    concrétement peux tu m'en dire 2 mots afin que j'oriente plus efficacement mes recherches ?

    en gros les lignes type dans PB ou toute manip' à laquelle tu penses (sans détailer) est le bienvenue

    si ça aboutit, je posterai ici la 'solution' complète à mon problème

    Re-Merci pour ta réponse et pour tout élément me permettant d'avancer plus efficacement.

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Hello Yafou2

    Je ne sais pas exactement ce que tu veux réaliser. Moi par exemple, j'ai automatisé la commande d'un produit sur un site d'une entreprise. Pour ceci, j'ai créé une fenêtre qui contient un objet ole du type Microsoft Web Broser":
    - menu Insert / Control / OLE
    - onglet "Insert Control" --> choisir "Microsoft Web Browser"
    - placer l'ojet sur la fenêtre, adapter la grandeur et év. changer le nom
    - ouvrir un site dans l'ole (p. ex. dans le "open" script de la fenêtre): ole_browser.object.navigate2("www.developpez.net")

    Si tu veux aller plus loins, tu peux placer une "singlelineedit"-box et un bouton pour permettre à l'utilisateur de naviguer sur un autre site, etc.

    Comme indiqué plus haut, par script, tu peux également cliquer sur un bouton ou un link qui se trouve sur le site. Pour ceci, il faut créer une boucle du style (le bouton en question s'appel "SIGNIN") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    li_link_ctr = ole_browser.object.document.Links.Length
    	FOR li_link = 0 TO li_link_ctr - 1
    		ls_text = upper(ole_browser.object.document.Links[li_link].ID)
    		CHOOSE CASE upper(ls_text)
    			CASE 'SIGNIN'
    				ole_browser.object.document.Links[li_link].Click()
    		END CHOOSE
    	NEXT
    Voilà, pour t'orienter dans une direction...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    nickel ta réponse, je sais vers quoi m'orienter pour trouver une solution now

    question subsidiaire : tu travailles avec quelle version de PB ?

    étant sur PB 5 j'ai peur d'être assez vite limité par les possibilités

    merci pour ton aide en tout cas

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Ce que j'ai décrit j'ai réalisé avec la version 10.2. Je ne peux malheureusement pas te dire, si cela fonctionne avec la version 5. Désolé encore pour le retard et bonne chance...

Discussions similaires

  1. [FAQ] une seule instance de mon appli avec Mutex
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 26/11/2008, 09h44
  2. Une seule instance de l'appli et exécuter une procédure
    Par Manic dans le forum API, COM et SDKs
    Réponses: 11
    Dernier message: 08/03/2006, 11h52
  3. [JUnit] Avoir une seule instance
    Par hocinema dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 25/10/2005, 15h48

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