IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

OLE et .NET


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Par défaut OLE et .NET
    Bonjour,
    Voila mon problème, j'ai un exécutable qui génère des clefs de déblocage pour le logiciel de l'entreprise et je n'ai pas accès aux sources de celui-ci.
    Actuellement il y a une fonction vb dans le fichier excell qu'ils utilisent qui permet de lancer la génération du code de déblocage.
    Voici comment est appelé l'objet sur excell:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set RTReg = CreateObject("RTGenkey.RTReg")
    RTReg.ProductKey = Trim(Prod)
    RTReg.UserKey = Trim(Util)
    RTReg.PCKey = Trim(Ident)
    RTReg.DateKey = DateC
    RTReg.GenKind = 1
    SetRegParams = RTReg.Regkey
    Le logiciel est lancé puis fermé tout de suite après la génération du code

    Je dois transformé le fichier excell en un site web asp.net et je voudrais donner la possibilité à l'utilisateur de retrouver cette fonctionnalité. Le problème c'est que je n'ai aucune idée de comment faire ça car je n'ai pas de dll avec. Apparemment l’exécutable peut agir en tant qu'objet OLE, comment puis je faire pour l'appeler coté serveur?

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 2
    Par défaut Create Object
    Et sinon savez vous comment traduire le code ci dessus en c#?

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Abraksas
    En fait les serveurs Com existent sous 2 versions:Exe ou Dll.
    Dans la version exe un exemple connu est l'objet Excel.Application ou Word.application qu 'on peut appeler demarrer avec Create.Object("Excel.Application").

    CreateObject fait appel à l'interface de classe et cree une instance de l'objet objet Com identifie par son "ProgId" s'il installe et inscrit sur le serveur ou machine user. Cest du Late-binding specifique à Com et on n' a pas besoin d'une reference à la compilation pour creer une instance de l'objet .
    C'est pour cela que l'enregistrement des composants Com (de type dll ou exe)est vital.

    Edit

    Voici comment se traduit le code VBA communique en C# (mais en VB.Net c'est du litteral à cause d'api .net specifique).
    Il faut de la Reflection et InvokeMember pour faire du latebinding.
    voici un exemple avec 2 bouton sur un form :
    -le 1er bouton appelle le serveur Excel avec late-binding et l'affiche.
    -le 2eme bouton est pour ton code en late-binding en tenant compte des remarques à propos de l'installation et de l'inscription du composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    //n'oublie pas ce using
    using System.Reflection;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                // Declaration des objets à acceder
                Object objApp_Late;   //Application
                Object objBooks_Late; //collection WorkBooks
                Object objBook_Late;  //classe WorkBook
                Object objProp_Late;  //propriete Visible de l'objet Application
     
                // Tableau de parametres des valeurs à passer aux prop ou methodes p
                //un objet accede
                Object[] mesParametres; 
     
                // Use server localhost.
                string theServer = "localhost";
     
                // Use  ProgID 
                string myStringProdId = "Excel.Application";
     
                // Make a call to the method to get the type information for the given ProgID.
                // Obtient le type suivant ProgId
                System.Type typeCom = System.Type.GetTypeFromProgID(myStringProdId, theServer, true);
     
                // le Create Object
                 objApp_Late = System.Activator.CreateInstance( typeCom );
     
     
                //Accede à une propriete -ici Visible - de l'Objet Application.
    		    mesParametres = new Object[1];
                mesParametres[0] = "True";
                objProp_Late = objApp_Late.GetType().InvokeMember("Visible",
                    BindingFlags.SetProperty, null, objApp_Late, mesParametres);
     
     
     
     
                //Get the workbooks collection.
                //Accede à une propriete -ici collection Workbooks-
                objBooks_Late = objApp_Late.GetType().InvokeMember("Workbooks",
                BindingFlags.GetProperty, null, objApp_Late, null);
                //Add a new workbook.
                //et appelle la methode Add de l'objet collection 
                objBook_Late = objBooks_Late.GetType().InvokeMember("Add",
                    BindingFlags.InvokeMethod, null, objBooks_Late, null);
     
     
     
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
     
                // Declaration de l' objet à acceder
                Object RTReg;         //ton Application
                Object objProriete ;    //variable pour proriete à acceder
     
                // Tableau de parametres des valeurs à passer aux proprietes 
                // de l'objet accede
                Object[] mesParametres;
     
                // Use server localhost.
                string theServer = "localhost";
     
                // Use  ProgID 
                string StringProdId = "RTGenkey.RTReg";
     
     
                 // Make a call to the method to get the type information for the given ProgID.
                // Obtient le type suivant ProgId
                System.Type typeRTreg = System.Type.GetTypeFromProgID(StringProdId, theServer, true);
     
                // le Create Object -cree une instance Com du type specifie 
                RTReg = System.Activator.CreateInstance(typeRTreg);
     
                //Mets la propriete -ici ProductKey - de l'Objet RTReg.
    		    mesParametres = new Object[1];
                mesParametres[0] = Trim(Prod);
                objProriete = RTReg.GetType().InvokeMember("ProductKey",
                    BindingFlags.SetProperty, null, RTReg, mesParametres);
     
                //idem  pour les suivantes
                //Mets la propriete -ici UserKey - de l'Objet RTReg.
    		    mesParametres = new Object[1];
                mesParametres[0] = Trim(Util);
                objProriete = RTReg.GetType().InvokeMember("UserKey",
                    BindingFlags.SetProperty, null, RTReg, mesParametres);
     
                //idem  pour les suivantes
                //RTReg.PCKey = Trim(Ident)
                //RTReg.DateKey = DateC
                //RTReg.GenKind = 1
     
                //NB:SetSetRegParams est -il un objet ? si oui meme traitement
                //que RTReg ensuite ecrire simplement cette affectation.
                //SetRegParams = RTReg.Regkey
     
            }
     
     
        }
    }
    bon code..................

Discussions similaires

  1. [2008R2] Choix du provider: OLE DB ou ADO.NET?
    Par darkterreur dans le forum SSIS
    Réponses: 5
    Dernier message: 10/09/2012, 14h48
  2. DLL OLE ou .NET
    Par sokai dans le forum Windows
    Réponses: 2
    Dernier message: 09/08/2011, 15h58
  3. objet ole en dot net
    Par harakat21 dans le forum Accès aux données
    Réponses: 5
    Dernier message: 11/08/2008, 16h39
  4. [VB.Net] Comment faire un serveur OLE ?
    Par ego dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/10/2006, 16h27
  5. [vb.net] initialisation MS JET OLE DB/exlorateurs serveurs
    Par Manix dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/08/2005, 01h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo