Bonjour, j'ai une dll (dont je ne suis pas propri�taire) qui a notamment l'interface suivante :
J'aimerais pouvoir utiliser une m�thode de cet interface (Connect en l'occurence) et donc instancier une classe qui impl�mentera l'interface.
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 dispinterface IScoutManagementSession { properties: methods: [id(0x00000001)] VARIANT_BOOL Disconnect(); [id(0x00000002)] IDispatch* GetServerLogManager(); [id(0x00000003)] VARIANT_BOOL GetConnectionStatus(); [id(0x00000004)] IDispatch* GetProfileManager(); [id(0x00000005)] VARIANT_BOOL Connect( BSTR sServerName, short nPort, BSTR sPassword); [id(0x00000006)] BSTR GetLastErrorText(); [id(0x00000007)] short GetLastErrorNum(); [id(0x00000008)] IDispatch* GetServerSettingManager(); [id(0x00000009)] IDispatch* GetServiceManager(); [id(0x0000000a)] IDispatch* GetBatchManager(); [id(0x0000000b)] IDispatch* GetDeviceManager(); [id(0x0000000c)] IDispatch* GetInstallManager(); };
Le probl�me, c'est qu'avec les IDispatch, les IMPLEMENT_DYNCREATE, les COleDispatchDriver, je n'arrive toujours pas � d�clarer un objet qui me cr�e une instance de cette interface IScoutManagementSession , une id�e comment faire svp ?
J'ai test� en faisant :
Mais �a ne marche pas �videmment, le compilo ne me reconnait pas GetConnectionStatus car m_session est un COleDispatchDriver et n'a donc pas les m�thodes de l'interface.
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 class ScoutSessionMgr { public: explicit ScoutSessionMgr (); virtual ~ScoutSessionMgr (); bool InitInstance (); private: COleDispatchDriver m_Session; }; ScoutSessionMgr::ScoutSessionMgr () { } ScoutSessionMgr::~ScoutSessionMgr () { } bool ScoutSessionMgr::InitInstance () { HRESULT hr = CoInitialize (NULL); m_Session.CreateDispatch (LPCTSTR("ScoutManagement.ScoutManagementSession")); if (m_Session.GetConnectionStatus()) { m_Session.Disconnect (); return true; } else { return (m_Session.Connect ("128.1.208.219", 8026, ""); } return true; }
Partager