Bonjour,
Je tourne en rond, je ne vois pas où ça buggue !!!
[...]
Le problème :
Tout a l'air de fonctionner normalemenr.
Mais... si dans le texte HTML, il y a par exemple ceci : <IMG
src="http://machintruc"></IMG>, au premier appel du dialogue la fenêtre de
connexion apparaît, ce qui est normal.
Mais quand je referme le dialogue et que je le réouvre deux ou trois fois,
ça "plante" à la fermeture comme si quelque chose n'était pas libéré...
Le dialogue se ferme, mais ne rend pas la main à la proceduré principale !
Je dois passer par "Le programme ne répond pas, terminer maintenant, envoyer
le rapport etc....."
Bonjour,
Je tourne en rond, je ne vois pas où ça buggue !!!
[...]
Le problème :
Tout a l'air de fonctionner normalemenr.
Mais... si dans le texte HTML, il y a par exemple ceci : <IMG
src="http://machintruc"></IMG>, au premier appel du dialogue la fenêtre de
connexion apparaît, ce qui est normal.
Mais quand je referme le dialogue et que je le réouvre deux ou trois fois,
ça "plante" à la fermeture comme si quelque chose n'était pas libéré...
Le dialogue se ferme, mais ne rend pas la main à la proceduré principale !
Je dois passer par "Le programme ne répond pas, terminer maintenant, envoyer
le rapport etc....."
Bonjour,
Je tourne en rond, je ne vois pas où ça buggue !!!
[...]
Le problème :
Tout a l'air de fonctionner normalemenr.
Mais... si dans le texte HTML, il y a par exemple ceci : <IMG
src="http://machintruc"></IMG>, au premier appel du dialogue la fenêtre de
connexion apparaît, ce qui est normal.
Mais quand je referme le dialogue et que je le réouvre deux ou trois fois,
ça "plante" à la fermeture comme si quelque chose n'était pas libéré...
Le dialogue se ferme, mais ne rend pas la main à la proceduré principale !
Je dois passer par "Le programme ne répond pas, terminer maintenant, envoyer
le rapport etc....."
le code apparait correct et n'a pas de raison de se bloquer (pas d'object
trop ref. compter par exemple).
- si la connexion est coupée ou si la requête générée par Navigate() est
bloquée par un firewall, le composant mets un temps variable à répondre,
je n'ai pas pour autant obtenu de blocage, ni crash ou exception.
il est possible que les comportements observés viennent de votre couche
PPP (sinon IP) et non de votre code lui-même.
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
autre piste, coder un destroy plus autoritaire:
case WM_DESTROY:
for (VARIANT_BOOL pBool = VARIANT_TRUE; pBool == VARIANT_TRUE; ){
if (pIWeb->get_Busy(&pBool) != S_OK)
break;
if (pBool == VARIANT_TRUE)
pIWeb->Stop();
}
pIWeb->Quit();
return true;
le code apparait correct et n'a pas de raison de se bloquer (pas d'object
trop ref. compter par exemple).
- si la connexion est coupée ou si la requête générée par Navigate() est
bloquée par un firewall, le composant mets un temps variable à répondre,
je n'ai pas pour autant obtenu de blocage, ni crash ou exception.
il est possible que les comportements observés viennent de votre couche
PPP (sinon IP) et non de votre code lui-même.
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
autre piste, coder un destroy plus autoritaire:
case WM_DESTROY:
for (VARIANT_BOOL pBool = VARIANT_TRUE; pBool == VARIANT_TRUE; ){
if (pIWeb->get_Busy(&pBool) != S_OK)
break;
if (pBool == VARIANT_TRUE)
pIWeb->Stop();
}
pIWeb->Quit();
return true;
le code apparait correct et n'a pas de raison de se bloquer (pas d'object
trop ref. compter par exemple).
- si la connexion est coupée ou si la requête générée par Navigate() est
bloquée par un firewall, le composant mets un temps variable à répondre,
je n'ai pas pour autant obtenu de blocage, ni crash ou exception.
il est possible que les comportements observés viennent de votre couche
PPP (sinon IP) et non de votre code lui-même.
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
autre piste, coder un destroy plus autoritaire:
case WM_DESTROY:
for (VARIANT_BOOL pBool = VARIANT_TRUE; pBool == VARIANT_TRUE; ){
if (pIWeb->get_Busy(&pBool) != S_OK)
break;
if (pBool == VARIANT_TRUE)
pIWeb->Stop();
}
pIWeb->Quit();
return true;
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
Là, je n'ai pas tout compris... Dans la doc MSDN,
CInternetSession::GetHttpConnection fait bien partie des MFC...
autre piste, coder un destroy plus autoritaire:
J'ai essayé ce destroy : comportement identique !
Pour info, je suis sous XP Pro, MSVC++ 2003, atl.dll v3.5.2284.0
Dernière remarque, si IE est hors connexion (coche en face de
Fichier/Travailler hors connexion), mon dialogue ne me propose même pas la
connexion... Je pensais que l'instance IWebBrowser2 que j'utilisais était
indépendante de IE lui-même ?
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
Là, je n'ai pas tout compris... Dans la doc MSDN,
CInternetSession::GetHttpConnection fait bien partie des MFC...
autre piste, coder un destroy plus autoritaire:
J'ai essayé ce destroy : comportement identique !
Pour info, je suis sous XP Pro, MSVC++ 2003, atl.dll v3.5.2284.0
Dernière remarque, si IE est hors connexion (coche en face de
Fichier/Travailler hors connexion), mon dialogue ne me propose même pas la
connexion... Je pensais que l'instance IWebBrowser2 que j'utilisais était
indépendante de IE lui-même ?
vous pouvez essayer de minimiser les blocages en testant la connexion (Cf
CInternetSession::GetHttpConnection, afxinet.h qui ne dépends pas des MFC)
avant d'essayer d'ouvrir l'URL.
Là, je n'ai pas tout compris... Dans la doc MSDN,
CInternetSession::GetHttpConnection fait bien partie des MFC...
autre piste, coder un destroy plus autoritaire:
J'ai essayé ce destroy : comportement identique !
Pour info, je suis sous XP Pro, MSVC++ 2003, atl.dll v3.5.2284.0
Dernière remarque, si IE est hors connexion (coche en face de
Fichier/Travailler hors connexion), mon dialogue ne me propose même pas la
connexion... Je pensais que l'instance IWebBrowser2 que j'utilisais était
indépendante de IE lui-même ?
char* newStr = new char[capacity];
char* newStr = new char[capacity];
char* newStr = new char[capacity];
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
J'ai essayé ce destroy : comportement identique !
y compris avec le Quit() ?
VC 2003 est mort-né (c'était un peu le véhicule marketting de C#), quitte
à abandonner VC6, passez plutôt à VC2005 [1] (version express (limitée)
gratuite).
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
J'ai essayé ce destroy : comportement identique !
y compris avec le Quit() ?
VC 2003 est mort-né (c'était un peu le véhicule marketting de C#), quitte
à abandonner VC6, passez plutôt à VC2005 [1] (version express (limitée)
gratuite).
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
J'ai essayé ce destroy : comportement identique !
y compris avec le Quit() ?
VC 2003 est mort-né (c'était un peu le véhicule marketting de C#), quitte
à abandonner VC6, passez plutôt à VC2005 [1] (version express (limitée)
gratuite).
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
gl wrote:Je "débute" en C++. Jusque-là je développais (en amateur) avec des
langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
Ah ! Ah ! :'-D
Ça, pour du troll, c'est du troll...
gl wrote:
Je "débute" en C++. Jusque-là je développais (en amateur) avec des
langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
Ah ! Ah ! :'-D
Ça, pour du troll, c'est du troll...
gl wrote:Je "débute" en C++. Jusque-là je développais (en amateur) avec des
langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
^^^^^^^^^^^^ ^^^^^^ ^^
Ah ! Ah ! :'-D
Ça, pour du troll, c'est du troll...
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
Avec ces langages, le développement d'une petite appli est très rapide, mais
l'exe est tout de suite très volumineux et son exécution dépend de DLLs pas
forcément présentes sur tous les systèmes !
Alors, j'ai eu envie de me mettre au C pur (que je ne connaissais que très
peu), sans les MFC, sinon, pourquoi quitter Delphi ?
En plus en API pur, on "voit" et on "sait" vraiment ce qu'on fait, mais le
codage est évidemment bien plus ardu ! Et j'ai assez de mal avec les
allocations méaoire et les pointeurs, ce qui est relativement transparent
dans Delphi !
Si j'ai bien compris ce nouveau code, on ouvre une URL, on lit le header, on
lit ensuite le document et on met tout ça dans un stream ?
Non ? J'ai tout faux ?
Même avec le Quit(), inéluctablement, à la nièmeme réouverture du dialogue,
le browser ne se ferme manifestement pas.
En mode Debug, j'arrive *très rarement* à reprendre la main... j'ai alors un
petit triangle vert devant la ligne :
-> DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_WEBDLG),
MainDlg,(DLGPROC)WebProc,
(LPARAM)st.c_str()); qui appelle la boîte de dialogue censée être fermée.
Il m'est alors indiqué un message du genre : "Cette procédure a appelé une
fonction qui n'est pas terminée. Elle reprendra ensuite...".
Mais aujourd'hui, je ne comprends rien, dès le deuxième appel, la connexion
n'est même plus proposée !??! Avec le même code !! Donc je n'arrive même
plus en mode Debug à reproduire cette situation !! [...]
La couche PPP (ou IP) de mon PC a, commme vous dites, un comportement
bizarre...
Je crois que je vais laisser tomber.. ou alors repartir sur d'autres bases
La finalité du soft que je suis en train de développer est de créer des
fichiers texte respectant un format bien précis destinés à préparer par
avance des posts pour un forum. [...]
A l'aide de boutons de commande, je permets à l'utilisateur d'insérer
automatiquement des balises BBCode. Ainsi, une fois le fichier texte
enregistré, un simple copier/coller dans l'éditeur PHP du forum contient
toute la mise en forme (couleur, gras, polices etc). [...]
Ce n'est qu'au fil du temps que j'ai pensé rajouter cette fonction "Preview"
qui me paraissait agréable, d'où l'utilisation de IWebBrowser2.
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
Avec ces langages, le développement d'une petite appli est très rapide, mais
l'exe est tout de suite très volumineux et son exécution dépend de DLLs pas
forcément présentes sur tous les systèmes !
Alors, j'ai eu envie de me mettre au C pur (que je ne connaissais que très
peu), sans les MFC, sinon, pourquoi quitter Delphi ?
En plus en API pur, on "voit" et on "sait" vraiment ce qu'on fait, mais le
codage est évidemment bien plus ardu ! Et j'ai assez de mal avec les
allocations méaoire et les pointeurs, ce qui est relativement transparent
dans Delphi !
Si j'ai bien compris ce nouveau code, on ouvre une URL, on lit le header, on
lit ensuite le document et on met tout ça dans un stream ?
Non ? J'ai tout faux ?
Même avec le Quit(), inéluctablement, à la nièmeme réouverture du dialogue,
le browser ne se ferme manifestement pas.
En mode Debug, j'arrive *très rarement* à reprendre la main... j'ai alors un
petit triangle vert devant la ligne :
-> DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_WEBDLG),
MainDlg,(DLGPROC)WebProc,
(LPARAM)st.c_str()); qui appelle la boîte de dialogue censée être fermée.
Il m'est alors indiqué un message du genre : "Cette procédure a appelé une
fonction qui n'est pas terminée. Elle reprendra ensuite...".
Mais aujourd'hui, je ne comprends rien, dès le deuxième appel, la connexion
n'est même plus proposée !??! Avec le même code !! Donc je n'arrive même
plus en mode Debug à reproduire cette situation !! [...]
La couche PPP (ou IP) de mon PC a, commme vous dites, un comportement
bizarre...
Je crois que je vais laisser tomber.. ou alors repartir sur d'autres bases
La finalité du soft que je suis en train de développer est de créer des
fichiers texte respectant un format bien précis destinés à préparer par
avance des posts pour un forum. [...]
A l'aide de boutons de commande, je permets à l'utilisateur d'insérer
automatiquement des balises BBCode. Ainsi, une fois le fichier texte
enregistré, un simple copier/coller dans l'éditeur PHP du forum contient
toute la mise en forme (couleur, gras, polices etc). [...]
Ce n'est qu'au fil du temps que j'ai pensé rajouter cette fonction "Preview"
qui me paraissait agréable, d'où l'utilisation de IWebBrowser2.
le code ci-après [2] ne dépend que de wininet.h et permet de "pinger" une
url (directement via readInetDoc ou plus finement via getInetDoc).
D'accord, mais ça ne répond pas à mon attente !!
Je "débute" en C++. Jusque-là je développais (en amateur) avec des langages
plus évolués (Pascal d'abord, VB et surtout Delphi).
Avec ces langages, le développement d'une petite appli est très rapide, mais
l'exe est tout de suite très volumineux et son exécution dépend de DLLs pas
forcément présentes sur tous les systèmes !
Alors, j'ai eu envie de me mettre au C pur (que je ne connaissais que très
peu), sans les MFC, sinon, pourquoi quitter Delphi ?
En plus en API pur, on "voit" et on "sait" vraiment ce qu'on fait, mais le
codage est évidemment bien plus ardu ! Et j'ai assez de mal avec les
allocations méaoire et les pointeurs, ce qui est relativement transparent
dans Delphi !
Si j'ai bien compris ce nouveau code, on ouvre une URL, on lit le header, on
lit ensuite le document et on met tout ça dans un stream ?
Non ? J'ai tout faux ?
Même avec le Quit(), inéluctablement, à la nièmeme réouverture du dialogue,
le browser ne se ferme manifestement pas.
En mode Debug, j'arrive *très rarement* à reprendre la main... j'ai alors un
petit triangle vert devant la ligne :
-> DialogBoxParam(hInst,MAKEINTRESOURCE(IDD_WEBDLG),
MainDlg,(DLGPROC)WebProc,
(LPARAM)st.c_str()); qui appelle la boîte de dialogue censée être fermée.
Il m'est alors indiqué un message du genre : "Cette procédure a appelé une
fonction qui n'est pas terminée. Elle reprendra ensuite...".
Mais aujourd'hui, je ne comprends rien, dès le deuxième appel, la connexion
n'est même plus proposée !??! Avec le même code !! Donc je n'arrive même
plus en mode Debug à reproduire cette situation !! [...]
La couche PPP (ou IP) de mon PC a, commme vous dites, un comportement
bizarre...
Je crois que je vais laisser tomber.. ou alors repartir sur d'autres bases
La finalité du soft que je suis en train de développer est de créer des
fichiers texte respectant un format bien précis destinés à préparer par
avance des posts pour un forum. [...]
A l'aide de boutons de commande, je permets à l'utilisateur d'insérer
automatiquement des balises BBCode. Ainsi, une fois le fichier texte
enregistré, un simple copier/coller dans l'éditeur PHP du forum contient
toute la mise en forme (couleur, gras, polices etc). [...]
Ce n'est qu'au fil du temps que j'ai pensé rajouter cette fonction "Preview"
qui me paraissait agréable, d'où l'utilisation de IWebBrowser2.
gl wrote on 17/03/2006 15:00:
votre bouton prévisualiser peut donc (avantageusement?) être transformé en
un appel au browser pré-enregistré pour lui demandé d'afficher la page que
vous venez de créer dynamiquement (plaçant l'utilisateur dans un cadre
qu'il connaît); vous réaliserez cela avec un simple WinExec ou
CreateProcess qui ne créera pas les noeuds actuels (et si IE plante, ce ne
sera que de sa faute!).
le nom du butineur choisi par l'utilisateur est stocké sous
[HKEY_CLASSES_ROOTHTTPshellopenddeexecApplication]
Et encore un grand merci pour vos conseils précieux.
gl wrote on 17/03/2006 15:00:
votre bouton prévisualiser peut donc (avantageusement?) être transformé en
un appel au browser pré-enregistré pour lui demandé d'afficher la page que
vous venez de créer dynamiquement (plaçant l'utilisateur dans un cadre
qu'il connaît); vous réaliserez cela avec un simple WinExec ou
CreateProcess qui ne créera pas les noeuds actuels (et si IE plante, ce ne
sera que de sa faute!).
le nom du butineur choisi par l'utilisateur est stocké sous
[HKEY_CLASSES_ROOTHTTPshellopenddeexecApplication]
Et encore un grand merci pour vos conseils précieux.
gl wrote on 17/03/2006 15:00:
votre bouton prévisualiser peut donc (avantageusement?) être transformé en
un appel au browser pré-enregistré pour lui demandé d'afficher la page que
vous venez de créer dynamiquement (plaçant l'utilisateur dans un cadre
qu'il connaît); vous réaliserez cela avec un simple WinExec ou
CreateProcess qui ne créera pas les noeuds actuels (et si IE plante, ce ne
sera que de sa faute!).
le nom du butineur choisi par l'utilisateur est stocké sous
[HKEY_CLASSES_ROOTHTTPshellopenddeexecApplication]
Et encore un grand merci pour vos conseils précieux.
les codes montrent comment on peux faire pour tester si une page est
accessible, en aucun cas vous devez nécessairement faire comme cela; je
répète ces exemples peuvent soit servir en phase de mise au point
uniquement (pour déterminer le truc qui coince) ou au pire comme moyen de
contournement si un blocage potentiel demeure et que vous voulez ajouter
un code testant l'environnement (par exemple la connexion) avant de lancer
bille en tête la procédure pouvant échouer.
à vous de voir si cela peut apporter et ce que ça apporte effectivement.
les codes montrent comment on peux faire pour tester si une page est
accessible, en aucun cas vous devez nécessairement faire comme cela; je
répète ces exemples peuvent soit servir en phase de mise au point
uniquement (pour déterminer le truc qui coince) ou au pire comme moyen de
contournement si un blocage potentiel demeure et que vous voulez ajouter
un code testant l'environnement (par exemple la connexion) avant de lancer
bille en tête la procédure pouvant échouer.
à vous de voir si cela peut apporter et ce que ça apporte effectivement.
les codes montrent comment on peux faire pour tester si une page est
accessible, en aucun cas vous devez nécessairement faire comme cela; je
répète ces exemples peuvent soit servir en phase de mise au point
uniquement (pour déterminer le truc qui coince) ou au pire comme moyen de
contournement si un blocage potentiel demeure et que vous voulez ajouter
un code testant l'environnement (par exemple la connexion) avant de lancer
bille en tête la procédure pouvant échouer.
à vous de voir si cela peut apporter et ce que ça apporte effectivement.