Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
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é: ne pas en lancer un autre et lui passer une url (par exemple avoir un objet OLE et effectuer un navigate(newURL) sur l'objet)
- si IE n'est pas lancé, je le lance en lui donnant mon url.
j'ai ici ou là des bouts de code qui fonctionnent plus ou moins mais je n'arrive pas à trouver THE solution qui marche
voici les bouts de scripts que j'utilise :
/// code 1 : tentative de création d'un objet OLE InternetExplorer IE = CREATE OLEObject IE.ConnectToNewObject("InternetExplorer.Application") // comment lancer IE now ? je fais comme suit mais c'est ko : je récupère le fullName de IE , // c'est pas somme si j'avais un vrai objet OLE que je pouvais controler: ls_ie = IE.FullName() Run (ls_ie + " " + "www.yahoo.com") // ne fonctionne pas.. malgré tout l'instruction IE.ConnectToNewObject("InternetExplorer.Application") était ok //elle : IE.navigate("www.google.fr") /// code 2 : essai avec FindWidow pour voir si IE est lancé : // note : findWido a été déclaré dans local external objects long hwnd2 hwnd2 = FindWindowA("scicalc","Microsoft Internet Explorer") if hwnd2 =0 then run("iexplore.exe") end if // ça ne marche pas comme souhaité mais ça fonctionne si je remplace Microsoft Internet Explorer par "Calculatrice" et "iexplorer.exe" par "calc" ! preuve que le principe n'est pas bête pour déterminer si l'appli est déja lancée ou non // conclusion :
J'ai l 'impression de ne pas être loin de la solution mais y'a encore un peu de chemin à faire ;)
Ce que j'essaie de faire n'a pas l'air trop compliqué mais je ne suis pas trés calé en PB
Je précise que je suis en PB 5 (...) et qu'il n'est pas envisageable d'intégrer directement un navigateur IE dans l'appli PB (on veut lancer un IE)
Merci pour votre attention et pour votre aide ! n'hésitez pas à me demander des précisions.
Hors ligne
Hors ligne
yafou2 a écrit:
...Je précise que je suis en PB 5 (...)
...et Windows 3.1 ?
Vous pensez migrer vers Windows 95 un jour ?
Hors ligne
pick ouic a écrit:
http://64.18.163.122/rgagnon/pbdetails/pb-0202.html
J'ai effectivement essayé ce qui est mentionné dans ce lien mais qui s'avère infructueux, voici pourquoi :
Le code donné est :
OLEObject IE string ls_ie string ls_url IE = CREATE OLEObject IE.ConnectToNewObject("InternetExplorer.Application") ls_ie = IE.Fullname () ls_url = "http://wwww.server.com/myWebApp?file=error.log" Run (ls_ie + " " + ls_url)
Or à mon sens (mais je peux me tromper) le Run fonctionne car on a récupéré le fullname de l'objet OLE (c'est à dire: C:/programes files/..)
d'ailleurs si on execute des opérations sur l'objet OLE IE (par exemple IE.navigate(..)) ça ne fonctionne pas
si on va un peu plus loin sur la page on trouve ce code:
string ls_OldURL string ls_NewURL = 'www.yahoo.com' // Go to Document ls_OldURL = IE.LocationURL IE.Navigate (ls_NewURL) // Wait for Document to start loading DO WHILE ls_OldURL = IE.LocationURL Yield () LOOP // Wait for Document to finish Loading DO WHILE IE.Busy Yield () LOOP
Je lai tourné dans tous les sens : ça ne fonctionne pas
si quelqu'un arrive à le faire marcher je dis bravo ^^
Hors ligne
shahin a écrit:
yafou2 a écrit:
...Je précise que je suis en PB 5 (...)
...et Windows 3.1 ?
Vous pensez migrer vers Windows 95 un jour ?
je ne te le fais pas dire
hélas ça ne dépend pas de moi
Cependant ce que j'essaie de faire semble possible même en PB 5 :-)
@++
Hors ligne
tu es sur pb5 et win31 ?
Hors ligne
pick ouic a écrit:
tu es sur pb5 et win31 ?
non quand même pas pb5 et win XP ;)
Hors ligne