MFC(C++):
在OnInitDialog()函数中。
CString strClassName = L"AJISWifiShareTool";
HANDLE m_hMutex = NULL;
m_hMutex = OpenMutex(MUTEX_ALL_ACCESS, FALSE, strClassName);
if (m_hMutex == NULL) {
m_hMutex = CreateMutex(NULL, TRUE, strClassName);
}
else {
AfxMessageBox(csPromtRepeatOperation[g_ucLanguageIndex], MB_ICONEXCLAMATION);
::PostMessage(this->m_hWnd, WM_CLOSE, 0, 0);
return FALSE;
}
C#:
static void Main()
{
bool createNew;
using (Mutex m = new Mutex(true, Application.ProductName, out createNew))
{
if (createNew)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new WIFIHotspot());
}
else
{
if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "zh-CN")
{
MessageBox.Show("程序已经运行。");
}
else if (System.Threading.Thread.CurrentThread.CurrentCulture.Name == "ja-JP")
{
MessageBox.Show("プログラムはすでに実行中です。");
}
else
{
MessageBox.Show("Program already running.");
}
}
}
}
本文介绍了如何使用MFC(C++)和C#中的互斥量(Mutex)来确保应用程序仅运行一个实例。在C++示例中,通过创建或打开互斥量并检查返回值来实现这一目标;而在C#中,则使用Mutex类的构造函数来完成相同的功能,并根据是否创建新互斥量显示相应的提示。
1237

被折叠的 条评论
为什么被折叠?



