我写了一个全局钩子,放到了dll中,然后又在dll中写了一个导出类,该类在dll中和exe程序中都将被用到。怎末能保证该类只被实例化一次,就是使他成为单态类?
解决方案 »
- 原子操作InterlockedExchange中关于定义volatile,是不是必须的,是不是指向LONG地址就可以?
- 怎么用VC做com口通讯
- 菜鸟提问windows编程,大虾抢分了!
- 如何在工程A和工程B之间通过共享内存来共享数据,看到很多例子,都是在一个工程内(急).
- 高分求高手,短信软件怎么写?
- 关于VC中调用标准库的min函数的问题
- 向高手请教用VC6制作自动生成向导遇到的问题
- 关于字符串的转换 乱码问题知道的看下
- 请教:如何在菜单左侧添加图标,就像VC++的Fiel/New左侧的小图标那种?
- 请问怎么调用动态连接库中自己定义的资源??急,帮我看一下代码有什么问题??
- 关于DEVMODE的用法怎么用才能设置自定义纸张
- 菜鸟问题:什么样的程序也可以被加上插件?
设成单态没有用,是在两个进程中
myclass::myclass()
{
CString strClassName="SingleInstance";
// 判断是否有一名为"SingleInstance"的mutex存在
m_hMutex = OpenMutex (MUTEX_ALL_ACCESS, FALSE, strClassName) ;
if (m_hMutex == NULL)
{
// m_hMutex不存在,表示没有其它实例在运行,创建一个m_hMutex
m_hMutex = CreateMutex (NULL, TRUE, strClassName) ;
}
else
{
// 如果m_hMutex存在,表示已经有一个实例在运行,
// 或者其它的程序创建了一个名为"SingleInstance"的m_hMutex
::AfxMessageBox("已经有一个实例在运行!",MB_OK|MB_ICONEXCLAMATION);
// 结束程序
return FALSE;
}
}
m_hMutex:在你的类中定义这个句柄希望对你有所帮助!
我在我的dll中导出了很多方法,如:Test1,我怎样在我的exe程序中直接调用
Test1,而不用LoadLibrary?
void CreateObject(IDatachunk **ppdc)
{
static bool isfirst=true;
if(isfirst)
{
*ppdc=new CDatachunk;
isfirst=false;
}
else
{
*ppdc=NULL;
}
}
或者像icelight说的那样也不错。
我试了下面方法,但是没编译过
MyClass* __declspec(dllexport)__stdcall GetMyClass();
但是这个可以编译通过
BOOL __declspec(dllexport)__stdcall GetBOOL();
icelight的想法应该怎样做?