我做了一个图像处理的软件,想用其处理jpg图像。现在对于jpg图像,点击右键选择打开(指定为我的程序),第一次可以打开,第二次的时候就没有反应了。因为我设置了只运行一个程序实例,当第二次用右键打开图像时,会把已经运行的我的程序激活到前台。但现在的问题是第二次用右键打开图像时,我的程序只是被激活到前台并不打开图像(不知道如果解决)。请大家帮忙想个办法,先谢谢啦。BOOL CPGImageApp::InitInstance()
{
const TCHAR *strMutexName = _T("PGImage");
//使用“互斥”(Mutex)的方法来保证程序只有一个运行实例
HANDLE hMutex = CreateMutex(NULL, true, strMutexName);
if(ERROR_ALREADY_EXISTS == GetLastError() || NULL == hMutex)
{
//当已存在一个实例后,将第一个实例在前端显示
HWND hWnd = FindWindow(NULL, strMutexName);
if (NULL != hWnd)
{
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(hWnd);
//应该显示新的图像
}
return FALSE;
}
.......
}
上面这段代码是用来保证只运行一个实例的,现在只能激活我已经运行的程序,但不执行文档类的打开操作,郁闷。
{
const TCHAR *strMutexName = _T("PGImage");
//使用“互斥”(Mutex)的方法来保证程序只有一个运行实例
HANDLE hMutex = CreateMutex(NULL, true, strMutexName);
if(ERROR_ALREADY_EXISTS == GetLastError() || NULL == hMutex)
{
//当已存在一个实例后,将第一个实例在前端显示
HWND hWnd = FindWindow(NULL, strMutexName);
if (NULL != hWnd)
{
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(hWnd);
//应该显示新的图像
}
return FALSE;
}
.......
}
上面这段代码是用来保证只运行一个实例的,现在只能激活我已经运行的程序,但不执行文档类的打开操作,郁闷。
解决方案 »
- 关于安装程序写run注册表失败的问题
- 求助:各位大哥请帮我写一个产生随机数的函数,好吗?
- vc++学习群
- 急,急,急!!我#include<rapi.h>这个头文件,提示找不到,我该怎么做?!
- 请斑竹推荐一、两本用winsock编程的好书!!!
- 有关加密系统序列号的问题?请各位兄弟,姐妹出出力,万分感激!!!
- 各位高手,如何精确打印连续发票?再加500分。在线等待,急急急!
- 关于下拉菜单
- 十万火急!!紧急求救!!一个月的工作成果毁于一旦!!!那位高手谁有办法恢复误操作删除的文件!!!
- 多线程 如果不想让连接保持,每次都建立新的连接,是在哪个函数里设置
- 怎样查明是哪个进程要调用指定DLL
- 请教高手,关于加载背景图片的问题
BOOL CPGImageApp::InitInstance()
{
const TCHAR *strMutexName = _T("PGImage");
//使用“互斥”(Mutex)的方法来保证程序只有一个运行实例
HANDLE hMutex = CreateMutex(NULL, true, strMutexName);
if(ERROR_ALREADY_EXISTS == GetLastError() || NULL == hMutex)
{
//当已存在一个实例后,将第一个实例在前端显示
HWND hWnd = FindWindow(NULL, strMutexName);
if (NULL != hWnd)
{
PostMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
SetForegroundWindow(hWnd);
//应该显示新的图像
SendMessage(hWnd,WM_YOUMESSAGE,.....)//发送一个自定义消息,把文件路径传过去
//让另外一个实例打开文件
}
return FALSE;
}
.......
}
学习了不少东西,再次谢谢大家。