none
[C#.net] WebBrowser et Vista RRS feed

  • Question

  • Bonjour mon problème est simple, j'ai creer une petite application qui, lors d'un clic sur un bouton ouvre un onglet qui affiche une page web contenant un activeX. Sous xp, aucun probleme tout s'affiche correctement, mais sous Vista j'ai la jolie croix qui indique qu'un element n'a pas ete charger hors ceci est asser embetant ....

    Code Snippet

    int index = tabControl1.TabCount;
    string title = "Compte: " + index.ToString();
    TabPage myTabPage = new TabPage(title);
    try
    {
    // AxSHDocVw.AxWebBrowser myWebPage = new AxSHDocVw.AxWebBrowser();
    WebBrowser myWebPage = new WebBrowser();
    myWebPage.Dock = DockStyle.Fill;
    myTabPage.Controls.Add(myWebPage);
    tabControl1.TabPages.Add(myTabPage);
    // tabControl1.TabPages[tabControl1.TabPages.IndexOfKey(title)].Focus();
    myWebPage.Navigate(@"C:\Program Files (x86)\Dofus\Dofus.html");


    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    Clipboard.SetData(DataFormats.Text, ex.Message);
    }



    (Je Rappel que sous xp tout passe bien mais pas sous vista)
    jeudi 15 janvier 2009 17:00

Réponses

  • Bon, un amis a trouvé pour moi Smile le probleme vient du fait que mon ordinateur sous xp est 32 bits et que mon pc de développement (vista) est 64bits. l'activeX ne fonctionne qu'en 32bits, il suffit donc de forcer le compilateur a compiler en 32 bits.

     

    lundi 19 janvier 2009 16:44

Toutes les réponses

  • Salut,

    je vais p'tet dire une bétise mais il est bizarre ton chemin d'accès. Le (x86), c'est pas ça qui pose problème ?

    Personnelement, pour récupérer le chemin de Program Files, pourquoi ne fais-tu pas ainsi :

    System.Environment.GetFolderPath( System.Environment.SpecialFolder.ProgramFiles)

    Peut être qu'ainsi ca te donnerait le bon path et que ca fonctionnerait Wink
    jeudi 15 janvier 2009 20:00
  • Nan le chemin est bon c'est juste que l'activeX n'est pas charger la page se chage mais sans le controle

     

    jeudi 15 janvier 2009 20:03
  • J'ai modifier le code pour eviter les incompatibiliter entre les Os de type 32 et 64 bits mais j'ai toujours le meme probleme et uniquement sous Vista :

     

    Code Snippet

    string OS_Type = System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)).Equals(8) ? OS_Type = " (x86)" : OS_Type = string.Empty;

    string dofusPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) + OS_Type + @"\Dofus\Dofus.html";

    int index = tabControl1.TabCount;

    string title = "Compte: " + index.ToString();

    TabPage myTabPage = new TabPage(title);

    try

    {

    // AxSHDocVw.AxWebBrowser myWebPage = new AxSHDocVw.AxWebBrowser();

    WebBrowser myWebPage = new WebBrowser();

    myWebPage.Dock = DockStyle.Fill;

    myWebPage.ScriptErrorsSuppressed = true;

    myWebPage.CausesValidation = true;

    myTabPage.Controls.Add(myWebPage);

    tabControl1.TabPages.Add(myTabPage);

    // tabControl1.TabPages[tabControl1.TabPages.IndexOfKey(title)].Focus();

    myWebPage.Navigate(dofusPath);

    }

    catch (Exception ex)

    {

    MessageBox.Show(ex.Message);

    Clipboard.SetData(DataFormats.Text, ex.Message);

    }

     

     

    si besoin est je peux vous fournir le code de la page :

     

    Code Snippet

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <LINK href="styles/dofus.css" rel="stylesheet" type="text/css">

    <script type="text/javascript">
     function closeBrowserWindow(){
      window.close();
     }
     
     function setFlashStyle(divid, styleName){
      document.getElementById(divid).className = styleName + getUserAgentID();
     }
     
     function canResizeFlash(){
      var ua = navigator.userAgent.toLowerCase();
      var opera = ua.indexOf("opera");
      if( document.getElementById ){
       if(opera == -1) return true;
       else if(parseInt(ua.substr(opera+6, 1)) >= 7) return true;
      }
      return false;
     }
     
     function getUserAgentID(){
      var ua = navigator.userAgent.toLowerCase();
      if(ua.indexOf("msie") != -1) return "IE";
      else if(ua.indexOf("gecko") != -1) return "MOZILLA";
      return "";
     }
    </script>

    <title>Dofus</title>
    <BODY marginwidth="0" marginHeight="0" topmargin="0" leftmargin="0" scroll="no" bgcolor="#29261F">

    <table width="100%" height="100%" cellpadding="0" cellspacing="0" border="0">
    <tr valign="middle" align="center">
     <td align="center">

        <script type="text/javascript">
          e = canResizeFlash();
       document.write('<div id="flashid" class="start' + getUserAgentID() + '" >');
          document.write('<object data="loader.swf" width="100%" height="100%" type="application/x-shockwave-flash">');
          document.write('  <param name="movie" value="loader.swf" />');
          document.write('  <param name="FlashVars" value="&allowResize=' + e + '" />');
          document.write('  <param name="bgcolor" value="#000000" />');
          document.write('</object>');
          document.write('</div>');
        </script>
        <noscript>
       <table cellpadding="2" cellspacing="0" bgcolor="white" border="0">
       <tr>
        <td>
        <table width="742px" height="556px" cellpadding="0" cellspacing="0" bgcolor="#000000">
        <tr>
         <td>

         <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="742" height="556" id="DOFUS" align="">
          <param name="movie" value="loader.swf?htmlLang=es" />
          <param name="quality" value="high" />
          <param name="bgcolor" value="#000000" />
          <param name="menu" value="true" />
          <embed src="loader.swf?htmlLang=es" quality="high" menu="true" bgcolor="#000000" width="742" height="556" name="DOFUS" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
         </object>
      
         </td>
        </tr>
        </table>
        </td>
       </tr>
       </table>
        </noscript>

    </td>
    </tr>
    </table>

    </body>
    </html>

     

     

     

    il est a noter que la page fonctionne parfaitement sous IE mais nessecite l'autorisation d'executer l'activeX

    jeudi 15 janvier 2009 22:32
  • Bon, un amis a trouvé pour moi Smile le probleme vient du fait que mon ordinateur sous xp est 32 bits et que mon pc de développement (vista) est 64bits. l'activeX ne fonctionne qu'en 32bits, il suffit donc de forcer le compilateur a compiler en 32 bits.

     

    lundi 19 janvier 2009 16:44