2009-07-28 11 views
1

J'essaie de créer un CD d'installation avec une application MFC personnalisée configurée pour l'exécution automatique lorsque le CD est inséré.Ouvrir une page html sur un CD d'installation avec le navigateur par défaut

Les instructions sont incluses sous la forme d'une simple page html avec des images et des liens vers des documents PDF, qui se trouvent tous sur le CD.

Dans le passé, je l'avais utilisé ce qui suit pour ouvrir la page html avec le navigateur par défaut:

ShellExecute(NULL, "open", <full path to .htm file including CD drive letter>, NULL, NULL, SHOWNORMAL); 

Mais lors des tests avec IE8 sous vista j'ai rencontré les éléments suivants:

  1. explorer lance
  2. L'onglet dit 'Connexion'
  3. explorer dissappears

Cela a à voir avec le mode protégé, puisque si vous désactivez le mode protégé pour la zone Internet, le problème disparaît. La chose étrange est que le problème n'apparaît qu'une fois que tout est gravé sur un CD. Si je lance l'exécutable autorun manuellement à partir de mon disque dur, la page html apparaît très bien.

Donc, je demande s'il y a quelque chose de spécifique que je peux faire pour résoudre ce problème? Ou s'il existe un autre mécanisme pour l'ouverture d'URL avec le navigateur par défaut de l'utilisateur qui pourrait ne pas avoir ce problème?

+0

Oh, et pour des raisons de bizzare, si IE est déjà ouvert, la page s'affiche également très bien. C'est seulement si IE n'était pas ouvert que cela arrive. –

Répondre

0

Puisque vous pouvez être raisonnablement sûr que IE est installé, vous pouvez exécuter

iexplore.exe [URL] 

dans votre appel shellex.

Si IE n'est pas installé, vérifiez la valeur de retour pour voir si elle n'est pas trouvée. Si oui, faites votre appel shellex original directement sur le fichier .htm. Vous pouvez également copier le fichier .htm dans% TEMP% et exécuter l'appel shellex à partir de là. De cette façon, il contourne l'accès protégé d'un endroit "risqué".

+0

Plutôt que de forcer IE, j'ai un peu de code pour vérifier la clé de registre pour le navigateur par défaut, et si cela semble être IE, je peux essayer une solution de contournement. Cependant en faisant ShellExecute avec iexplore et l'URL, j'ai toujours le même comportement. Si j'appelle d'abord une instance d'IE et que je lance ensuite ShellExecute, alors la page s'affiche correctement, mais aussi une fenêtre de navigateur supplémentaire. Je n'ai pas encore essayé la copie sur% TEMP%, donc nous verrons si cela a un effet. –

+0

Sur une réflexion supplémentaire, une copie temporaire ne fonctionnerait que si je générais une nouvelle page html avec des liens FILE: // vers les images et les PDF sur le CD, ou si je copiais toute la structure du répertoire dans le dossier temp. De plus, il y a des problèmes avec quand nettoyer après. Donc, même si cela fonctionne, cela ne résoudrait pas mon problème. –

+0

est votre ami;) –

0

Pouvez-vous capturer et afficher le code de retour de ShellExecute? Cela pourrait nous donner une idée de ce qui se passe.

result = ShellExecute(... 

codes de retour possibles sont listés ici:

http://support.microsoft.com/kb/238245

Il est dit dans votre question que vous êtes coder en dur le CD-ROM lettre de lecteur. Est-ce que la machine sur laquelle vous testez a une lettre de lecteur différente de celle sur laquelle vous avez créé le CD?

+0

J'utilise en fait le chemin utilisé pour lancer l'exécutable pour construire le chemin de la page .htm. Et comme cela fonctionne, le mode protégé est désactivé, ce n'est pas le problème. Le code de retour, que IE disparaisse ou non, est toujours 42. (Quel est le code de succès normal pour ShellExecute) –

Questions connexes