2010-10-17 14 views
0

J'ai une page HTML qui contient un fichier Flash et une fonction JavaScript qui renvoie l'objet du fichier Flash. Jusqu'à présent, je peux appeler la fonction JavaScript à partir de C# et lui faire retourner un objet, mais je veux le transformer en AxShockwaveFlash et accéder à l'objet COM directement à partir de C#.C# Accès à l'objet COM Flash à l'aide du contrôle WebBrowser

J'ai vu cela avec Windows Media Player intégré dans la page HTML, mais cela ne semble pas fonctionner avec flash.

<script type="text/JavaScript"> function GetWMP() { return(testing); } <script>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="857" height="480" id="testing">

<param name="movie" value="test.swf" />

<param name="quality" value="high" />

<param name="bgcolor" value="#ffffff" />

<param name="allowScriptAccess" value="always" />

<param name="allowFullScreen" value="true" />

</object>

Ci-dessous mon code C# qui retourne l'objet.

object o = webBrowser1.Document.InvokeScript("ReturnFlash");

AxShockwaveFlashObjects.AxShockwaveFlash flash = (AxShockwaveFlashObjects.AxShockwaveFlash)o;

Lorsque je tente de jeter l'objet de AxShockwaveFlash échoue, mais je l'ai vu travailler casting l'objet à WindowsMediaPlayer.

J'ai essayé de trouver si AxShockwaveFlash supporte les appels QueryInterface, selon le message d'erreur mais Google n'a rien retourné de valeur.

Merci

Répondre

0

AxShockwaveFlash est un contrôle de Windows généré d'auto-Forms, créé par Aximp.exe. Vous pouvez donc le mettre sur un formulaire. Cet objet que vous avez n'est pas ce contrôle. Vous ne pouvez lancer que vers l'interface exposée par l'encapsuleur, qui devrait être ShockwaveFlashObjects.ShockwaveFlash.

+0

Merci. La conversion de l'objet en ShockwaveFlash fonctionne très bien et, même s'il expose les événements (FlashCall, OnReadyStateChange, etc.), ils ne semblent pas être déclenchés. Une idée pourquoi? – Marcus

+0

Mise à jour: Il semble qu'il ne gère pas les événements car Flash Com Object ne les émet jamais, car il est dans un navigateur et attend une fonction JavaScript à appeler. Tant pis. – Marcus