begin process at 2012 02 11 20:40:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Problème d'appel JavaScript à partir de C++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'appel JavaScript à partir de C++

vendredi 26 mai 2006 à 13:10:25 | Problème d'appel JavaScript à partir de C++

barraq

Bonjour tout le monde

Je suis en train de travailler sur une interface qui fonctionne à base de DHTML (donc la classe CHtmlView) qui doit se refraichir (par JavaScript) quand arrivent des messages réseau. Sur de divers sites, j'ai trouvé des exemples mais à chaque fois le JavaScript est appelé quand l'utilisateur clique sur un boutton. Problème: l'appel via un autre thread ne marche pas! Je m'expliques:

J'ai généré un projet avec vue HTML en utilisant les options de Visual C++ 6 (projet MFC classique). Dedans, j'ai marqué toutes mes modifications avec le commentaire "JavaScript problem sample" et en effet ces derniers sont dans les fichiers JavaScriptView.h et JavaScriptView.cpp .

Dans JavaScriptView.h, je fais out simplement un override de la méthode OnDocumentComplete.

Dans JavaScriptView.cpp, j'ajoutes deux headers (atlbase.h and mshtml.h) ainsi que la fonction suivante:

    // Added for the JavaScript problem sample
    DWORD WINAPI CallJScriptLater( LPVOID lpParam )
    {
        CComQIPtr<IHTMLDocument2> pHtmlDoc( ((CJavaScriptView*) lpParam)->GetHtmlDocument() );

        CComPtr<IHTMLWindow2> pWnd;
        pHtmlDoc->get_parentWindow( &pWnd );

        CComBSTR bstrMember(CString("alert('boo')"));

        // then simply execute it
        CComBSTR vtlanguage(CString("javascript"));
        VARIANT vresult;

        pWnd->execScript(bstrMember,vtlanguage,&vresult);

        return 0;
    }

Et, la fonction qui va l'appeler quand c'est bon:

    // Added for the JavaScript problem sample
    void CJavaScriptView::OnDocumentComplete( LPCTSTR lpzsURL )
    {
        CHtmlView::OnDocumentComplete( lpzsURL );

    #if 1
        CallJScriptLater( this );
    #else
        CreateThread( NULL, 0, CallJScriptLater, this, 0, NULL);
    #endif

    }


Finalement, j'ai changé OnInitialUpdate pour qu'elle charge about:blank (la page la plus simple imaginable):

    void CJavaScriptView::OnInitialUpdate()
    {
        CHtmlView::OnInitialUpdate();

        // Changed for the JavaScript problem sample
        Navigate2(_T("about:blank"),NULL,NULL);
    }


Donc, le programme::

    - Une fois initialisé, charge la page about:blank
    - Une fois le chargement complet, execute le JavaScript: alert('boo')

La JavaScript peut être appelé de deux manières:

    - Directement (si OnDocumentComplete a la partie #if 1)
    - Via un thread (si OnDocumentComplete a la partie #if 0)

PROBLEME: L'appel direct (JavaScript_directCall.exe) fonctionne alors que l'appel via thread (JavaScript_threadCall.exe) foire!

Si quelqu'un aurait une idée de solution merci de me le faire savoir, vous trouverez les sources sur [ Lien ]

Vous remerciant

S. Ali Tokmen
[ Lien ]


Cette discussion est classée dans : javascript, appel, problem, sample, ondocumentcomplete


Répondre à ce message

Sujets en rapport avec ce message

appel javascript à partie de C [ par jackylaurent2 ] Bonjour. Je voudrais appeler une fonction javascript codée dans une page HTML à partir d'une DLL écrite en langage C (!!!). Quelqu'un a-t-il déjà prat problem dans la programation de codage du huffman [ par wissala ] bonjour, svp j'ai un problem de programer l'algorithm de huffman sur le c++ (pour avoir une image comprissé), alors est ce que quelqu'un peus me aidé Appel d'une DLL à partir d'un code en C ? [ par hitachicm615 ] Bonjour à vous,J'ai un programme que j'ai codé en C.J'ai une carte d'experimentation livrée avec une DLL et je voulais savoir comment l'appeller dans problem d'execution de serveur ""CORBA""" [ par aimenvir12 ] Bonjour, j'essayé de develloper une application Client/Serveur mais en exécutant le serveur j'ai eu un erreur il capte l'IOR mais il tourne pas il maf interface d'un code C en java [ par imenteck ] salut a tous. je veut un petit cou d'aide; j'envie de faire une interface d'un programme avec le turbo C, ils ont me dit que je peut écrit le code de Appel DLL C++ depuis NSDK [ par wislam2007 ] Salut les amis, franchement dans la merde! avec une dll c++. Je doit appelé une methode de cette DLL depuis une environnement NSDK, Sachant que cette Appel librairie COM (en C#) depuis c++ [ par wislam2007 ] Salut quand je met le type de retour de ma fct c++ (qui appel une fct d'une dll c#(com)) en string, pas de probleme par contre qd j utilise le char* c chargement dll c# depuis c++ [ par wislam2007 ] Salut, quand je test sur mon poste l'appel d'une dll c++ qui appel une dll (.tlb) c# ça fonctionne sans probleme, par contre quand je passe a un aut vs 2008 mfc install problem [ par peuImport ] bonjour, lorsque j'installe un vc++ 2008 il ne m'installe pas le folder mfcAtl (c:/programFiles/MicrosVisualC++2008/VC/mfcatl) comme c'est le cas pou Lecture de 2 samples simultanés avec FMOD [ par kouax ] Bonjour, J'utilise actuellement FMOD, et j'ai un soucis pour lire un sample tout en ayant un autre fond sonore qui tourne en boucle. Je joue donc le "


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,903 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales