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

Windows Discussion :

Problème avec IWebBrowser2 et les threads.


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut Problème avec IWebBrowser2 et les threads.
    Bonjour

    Je vous expose le problème.

    J'ai créé une toolbar pour IE. Dans cette toolbar j'ai une classe qui utilise un pointeur m_pBrowser de type IWebBrowser2. Tout cela fonctionne bien, je peux naviguer comme je veux sur Internet à l'aide de ce pointeur.

    Pour certaines actions je lance des threads. Au lancement du thread j'affiche une URL, et à un certain moment déclenché par un évènement, j'affiche une autre URL. Pour l'attente de cet évènement, et pour ne pas bloquer IE, je lance un deuxième thread. Je récupère bien cet évènement et je lance lance l'affichage de la seconde URL. (Vous me suivez ?).

    Le problème est que je suis sorti du contexte de ma classe, j'utilise donc un pointeur externe global ext_gl_ptrMaClasse vers ma classe pour pouvoir utiliser m_pBrowser. Sous Vista ça fonctionne mais sous XP, le système me dit qu'il ne trouve pas l'URL indiquée : le ext_gl_ptrMaClasse->m_pBrowser->Navigate(bsSite, &vEmpty, &vEmpty, &vEmpty, &vEmpty); échoue avec une erreur inconnue (j'ai testé ce n'est ni E_INVALIDARG ni E_OUTOFMEMORY).

    J'ai voulu mettre une méthode publique de ma classe pour lancer le thread d'attente, mais le compilo refuse avec ce message "'cast de type'*: impossible de convertir de 'overloaded-function' en 'LPTHREAD_START_ROUTINE'".

    Alors voilà, je suis bloqué, est-ce du à une méconnaissance des mécanismes C++, où je n'utilise pas la bonne fonction pour lancer les thread ? (je n'utilise pas les MFC)

    Si vous avez une piste je suis preneur.

    Merci.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Tu ne peux pas utiliser "comme ça" un objet COM en multithread:
    • La fonction CoInitializeEx() doit être appelée pour chaque thread
    • Un pointeur d'interface ne doit pas être passé directement d'un thread à l'autre, à moins que l'objet soit garanti free-threadé.
    • Si un objet est mono-threadé, tous les appels sont effectués en réalité sur le thread qui a créé l'objet (si ce thread est initialisé en mode mono-threadé). Celui-ci doit implémenter une boucle de messages.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Ok et merci pour la réponse, je crois que je vois ce que tu dis.

    Je vais tester tout celà ce soir.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Merci, ça marche impec
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/02/2007, 19h39
  2. [WD9] Problème avec l'utilisation des threads
    Par ramaro dans le forum WinDev
    Réponses: 2
    Dernier message: 29/01/2007, 11h51
  3. problème avec JDIC et les TrayIcon
    Par arasium dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 17/07/2006, 13h40
  4. Réponses: 11
    Dernier message: 14/02/2006, 00h26
  5. Problème avec ifstream et les headers
    Par Philippe299 dans le forum MFC
    Réponses: 1
    Dernier message: 29/07/2005, 03h33

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