| 网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 |
![]() |
| Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道 |
2.C++客户端测试代码
网管u家www.bitscn.net
#include \"stdafx.h\"
#import \"Server.tlb\" 
class COMHelper 

{
public: 
COMHelper()
{ ::CoInitialize(NULL);} 
~COMHelper()
{ ::CoUninitialize();} 网管有家bitscn.net 
HRESULT FindRunningInstance(LPOLESTR lpszItem, IUnknown** ppUnk)

{ 网管联盟bitsCN@com
HRESULT hr = S_OK;
IMonikerPtr pMoniker; 
hr = CreateItemMoniker(_T(\"!\"), lpszItem, &pMoniker);
if(!SUCCEEDED(hr))
return hr; 网管网www_bitscn_com

IRunningObjectTablePtr pROT;
GetRunningObjectTable(0, &pROT);
hr = pROT->GetObjectW(pMoniker, ppUnk);
return hr;
}
}; 网管网www.bitscn.com 
int _tmain(int argc, _TCHAR* argv[])

{
COMHelper comSystem; 
IUnknownPtr pUnk;
HRESULT hr = S_OK;
//look up the ROT table directly
hr = comSystem.FindRunningInstance(_T(\"{58C142C7-E599-4921-BF29-33DC0FCCBECA}\"), &pUnk); 网管u家www.bitscn.net
//alternative approach find running object in OLE way
//hr = ::GetActiveObject(__uuidof(Server::ProviderImp), NULL, &pUnk); 
//if no running instance found start a new one.
if(!SUCCEEDED(hr))

{
hr = CoCreateInstance(__uuidof(Server::ProviderImp), NULL, CLSCTX_LOCAL_SERVER,
__uuidof(Server::IProvider), (LPVOID*)&pUnk);
if(!SUCCEEDED(hr))
throw 0;
} 
//convert IUnknown to IProvider
Server::IProviderPtr pProvider;
hr = pUnk->QueryInterface(__uuidof(Server::IProvider), (LPVOID*)&pProvider);
if(!SUCCEEDED(hr)) 网管u家www.bitscn.net
throw 0; 
//call IProvider
pProvider->Test();
return 0;
}|
0
|
评论加载中…