Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# ouvrir un nouveau tab en C++ depuis une extension.

Envoyé par : Amiba

Date : 31/07/2007 12:28

Bonjour, je suis en train de terminer la conception d'une extension Firefox en C++. L'application en elle-même est relativement basique: elle se connecte à un serveur, identification, etc... puis elle reçoit des informations qui sont utilisés pour envoyer vers une/plusieurs page web. (fichier.php?id=XXXXXX)

Toute cette conception est terminée, mais il me reste un dernier problème: la création d'un nouveau tab vers url. Je ne parviens pas à trouver des informations me permettant de faire comme le window.open(); en js. (Je précise que je ne peux pas utiliser Javascript pour établir le nouveau tab)

J'ai trouvé quelques lignes de code sur le web, mais j'ai quelques problèmes pour les compiler:

nsresult rv;
nsCOMPtr<nsIWebBrowser> theWebBrowser;
nsCOMPtr<nsIWebNavigation> theWebNav;
theWebBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
theWebNav = do_QueryInterface(theWebBrowser, &rv);
rv =  theWebNav->LoadURI(NS_ConvertASCIItoUCS2("http://www.netscape.com/").get(), LOAD_FLAGS_NONE);
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h: At global scope:
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h: In instantiation of 'nsDerivedSafe<nsIWebBrowser>':
MyCerb.cpp:228:   instantiated from here
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h:197: error: invalid use of undefined type 'struct nsIWebBrowser'
IMyCerb.h:31: error: forward declaration of 'struct nsIWebBrowser'
MyCerb.cpp: In member function 'virtual nsresult Cerb::Login(const char*, PRInt16*)':
MyCerb.cpp:228: error: no matching function for call to 'do_QueryInterface(nsCOMPtr<nsIWebBrowser>&, nsresult*)'
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h:379: note: candidates are: nsQueryInterface do_QueryInterface(nsISupports*)
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h:386: note:                 nsQueryInterfaceWithError do_QueryInterface(nsISupports*, nsresult*)
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h: At global scope:
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h: In instantiation of 'nsDerivedSafe<nsIWebNavigation>':
MyCerb.cpp:229:   instantiated from here
/home/alex/gecko/gecko-sdk/include/nsCOMPtr.h:197: error: invalid use of undefined type 'struct nsIWebNavigation'
IMyCerb.h:33: error: forward declaration of 'struct nsIWebNavigation'

Aussi non, il apparait que nsCOMPtr<nsIDOMWindow> puisse le gèrer, mais je n'ai rien de concrêt... Quelqu'un aurait-il un simple snippet en C++ pour ouvrir un simple tab vers une url définie ou simplement m'aider à trouver une solution?

Merci beaucoup!

PS: pour information j'utilise: gecko-sdk-i686-pc-linux-gnu-1.8b1.tar.gz

# Re: ouvrir un nouveau tab en C++ depuis une extension.

Envoyé par : Paul Rouget

Date : 01/08/2007 20:46

Non... on ne fait pas ça en C++ (meme si c'est faisable). Il est préférable que tu appelles un callback codé en JS.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.