实现了IClassFactory的COM Exe程序,他通过CreateInstance来创建实例,好像系统会保证一个单实例
但是在某些特殊情况下,实际测试比如采用run as administrator,还是会出现多个实例
所以想问一下有没有什么好方法,或者说正宗的方法,可以实现单实例效果通过CreateEvent和GetLastError() == ERROR_ALREADY_EXISTS配合实现的方法我已经知道了
到底行不行我还没试因为对COM不了解,想问一下,COM下正宗的处理方法是什么?
谢谢!
但是在某些特殊情况下,实际测试比如采用run as administrator,还是会出现多个实例
所以想问一下有没有什么好方法,或者说正宗的方法,可以实现单实例效果通过CreateEvent和GetLastError() == ERROR_ALREADY_EXISTS配合实现的方法我已经知道了
到底行不行我还没试因为对COM不了解,想问一下,COM下正宗的处理方法是什么?
谢谢!
解决方案 »
- 线程中sleep醒不来了?为啥
- javascript响应ocx控件事件,这样写对吗?
- 数组指针和指针数组的疑惑
- 一个技术群:14857829
- 为什么会这样呢?
- 自动向TEXTAREA区域写入内容,解决送 100 分!
- Intel(R) Jpeg Lib的问题啊啊啊啊啊
- ?急!寻找一个图标,类似XP中的那个黄色小锁。
- 有谁可以提供显示一张BMP图象的代码!!(是从文件中间加载的:如C:\hj.BMP.)谢谢那!!!!!
- 用csocketfile时,高手看进来,socket问题
- 单步跟踪为啥不去调用OnInitialUpdate? 详情如下,请帮忙分析一下,谢谢
- 小学期作业快到时间了,求各位大神学长救救我!!!!100分速度送!!!!
InterLockedIncrement和InterLockedDecrement来实现的。如果你要单例的话,就在CreateInstance里面查询m_cref这个全局(本来是由上面两个函数控制的)
如果LZ使用MFC,参考以下代码
//////////
class CMyOleObjectFactory : public COleObjectFactory
{
public:
CMyOleObjectFactory( REFCLSID clsid, CRuntimeClass* pRuntimeClass,
BOOL bMultiInstance, LPCTSTR lpszProgID ) :
COleObjectFactory(clsid,pRuntimeClass,bMultiInstance,lpszProgID)
{}; // singleton version of CreateInstance
CCmdTarget *OnCreateObject()
{
// return static singleton object
static CMySrv obj;
return &obj;
}
};//////////