utilisation méthodes DLL COM
Bonjour, j'ai une dll (dont je ne suis pas propriétaire) qui a notamment l'interface suivante :
Code:
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();
}; |
J'aimerais pouvoir utiliser une méthode de cet interface (Connect en l'occurence) et donc instancier une classe qui implémentera l'interface.
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 :
Code:
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;
} |
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.