vc如何判断一个程序是否在运行?

问题描述:用vc编写了一个程序,点一下上面的按钮“运行X”,就会用shell的方法打开一个vb编写的程序X.exe,每次点都会启动,但是,我想只运行一个实例。怎么通过程序... 问题描述:用vc编写了一个程序,点一下上面的按钮“运行X”,就会用shell的方法打开一个vb编写的程序X.exe ,
每次点都会启动,但是,我想只运行一个实例。怎么通过程序实现哪?希望高手能够详细的讲讲!!
展开
 我来答
RussellKing
2010-08-14 · 超过36用户采纳过TA的回答
知道答主
回答量:158
采纳率:0%
帮助的人:111万
展开全部
1. 创建一个 atom
2. 在程序运行的时候判断 atom 是否一斤创建。

或者使用进程枚举的方法,自己判断
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gamespy1991
2010-08-14 · TA获得超过1262个赞
知道小有建树答主
回答量:1636
采纳率:0%
帮助的人:1203万
展开全部
枚举进程,查找x.exe,如果有2个就干掉其中一个,或者干脆不执行Shell
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Love7TX
2010-08-14 · TA获得超过998个赞
知道小有建树答主
回答量:587
采纳率:0%
帮助的人:446万
展开全部
//InstanceName 自定义用于表示应用程序的唯一标识名
//hWndClassName 窗体的注册类名 CreateWindow 函数中指定
//hWndWinName 窗体名 CreateWindow 函数中指定
//mOperate 操作判断变量
BOOL OperateMutex( LPCWSTR InstanceName,LPCWSTR hWndClassName, LPCWSTR hWndWinName, BOOL mOperate)
{
HANDLE hMutex;
hMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,InstanceName);
switch(mOperate)
{
case APP_OPEN: //OPEN = 启动程序
if(hMutex==NULL)
{
hMutex = CreateMutex(NULL,FALSE,InstanceName);
if( (hMutex == NULL) || (GetLastError()==ERROR_ALREADY_EXISTS))
{
ActiveOldApp(hWndClassName,hWndWinName);
return FALSE; //程序已经启动或有错误发生
}
else
{
return TRUE;
} //第一次启动程序
}
else
{
ActiveOldApp(hWndClassName,hWndWinName);
return FALSE; //程序已经启动
}
break;
case APP_CLOSE: //CLOSE = 退出程序
ReleaseMutex(hMutex);
CloseHandle(hMutex);
break;
}
return TRUE;
}

//激活已启动的同一个程序
//参数:hWndClassName 窗体的注册类名 CreateWindow 函数中指定
// hWndWinName 窗体名 CreateWindow 函数中指定
BOOL ActiveOldApp( LPCWSTR hWndClassName, LPCWSTR hWndWinName)
{
HWND hWndApp,hWndPopup;
if (hWndApp = FindWindow(hWndClassName,hWndWinName))
{
//PutLog( "已经启动的实例的窗口句柄是%ld", hWndApp );
SendMessage( hWndApp, WM_ACTIVE, 0, 0 );
hWndPopup = GetLastActivePopup(hWndApp);
//PutLog( "GetLastActivePopup得到的窗口句柄是%ld", hWndPopup );
return TRUE;
}
else
{
return FALSE;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式