[C#] ActiveX Adobe PDF Reader - Late Binding

Smashingraph Messages postés 7 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2005 - 4 oct. 2005 à 16:47
Smashingraph Messages postés 7 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2005 - 7 oct. 2005 à 17:15
Bonjour,



J'ai un petit souci avec l'ActiveX d'Adobe Reader (Version 7).

J'ai une application qui charge des documents PDF à l'aide de l'ActiveX fourni par défaut par Acrobat Reader.

Je n'ai aucun souci lorsque je le fais en "early binding", c'est à dire lors du design time.



Cependant un problème est survenu, certains postes où j'installe mon
application n'ont pas la dernière version d'Adobe Reader, et j'aimerais
éviter de forcer l'installation du dernier Reader (surtout certains
systèmes d'exploitation comme Windows 2000 nécessitent l'installation
des service packs...assez lourd pour juste installer le reader...),
c'est pourquoi, j'aimerais lors de l'éxecution de mon application,
chargé l'activeX trouvé sur la machine en cours.



J'ai essayé de la manière suivante pour déjà charger un fichier:



Type objPDFType = Type.GetTypeFromProgID("AcroPDF.PDF");

object oPDF = Activator.CreateInstance(objPDFType);



System.Windows.Forms.Control oPdfActiveX = (System.Windows.Forms.Control)oPDF;

this.Controls.Add(oPdfActiveX);



System.Reflection.MethodInfo oMethodInfo = objPDFType.GetMethod("LoadFile");

if(oMethodInfo!= null)

{

object[] parameters = new object[1];

parameters[0] = myFile;

oMethodInfo.Invokeo(PDF , parameters);

}





1. L'objet COM crée n'est pas le control ActiveX du Reader donc la 4ème
ligne du code ne va pas fonctionner (mauvais cast, mais l'idée est
là...)

2. Les seules méthodes disponibles sont:

CreateObjRef

InitializeLifetimeService

GetLifetimeService

GetHashCode

Equals

ToString

GetType

3. Je ne suis pas sûr du ProgId -> AcroPDF.PDF



Si quelqu'un peut m'éclairer, merci d'avance !



Bonne fin de journée!
A voir également:

2 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
4 oct. 2005 à 23:53
Je crois que c'est plutôt "AcroExch.App"

::|The S@ib|::
MVP C#.NET
0
Smashingraph Messages postés 7 Date d'inscription lundi 20 avril 2009 Statut Membre Dernière intervention 7 octobre 2005
7 oct. 2005 à 17:15
Mmm... j'ai déjà essayé "AcroExch.App", et ça ne marche pas...

en effet, lorsque je fais :

Type objPDFType = Type.GetTypeFromProgID("AcroExch.App");



objPDFType est null...., alors que avec "AcroPDF.PDF" comme ProgId, il me retourne un "System.__ComObject"...



Merci pour toute autre(s) idée(s)...



Bonne soirée !
0
Rejoignez-nous