windows 下确保只有一个程序实例
2014-01-28 18:39
344 查看
1、 确保只有一个实例http://
2、如果是窗口程序,往往希望在发现程序已运行的情况下,将已运行的程序前置显示。
执行ForegroundProgram的DoForeground方法。
ForegroundProgram.h
代码如下:
ForegroundProgram.cpp
代码如下:
ForegroundProgram代码下载地址:
点击打开链接
#include <Windows.h> #include <stdio.h> int main () { HANDLE hMutex = CreateMutexW(NULL, FALSE, L"ProgramName"); if ( (hMutex != NULL) && (::GetLastError() != ERROR_ALREADY_EXISTS) ) { //do program getchar(); return 0; } else { printf("Program's instance is already running\n"); return 0; } }
2、如果是窗口程序,往往希望在发现程序已运行的情况下,将已运行的程序前置显示。
执行ForegroundProgram的DoForeground方法。
ForegroundProgram.h
代码如下:
#ifndef _FOREGROUND_PROGRAM_H_ #define _FOREGROUND_PROGRAM_H_ class ForegroundProgram { public: static void DoForeground(wchar_t *sProgramWindowName); protected: static BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam); public: ForegroundProgram(); ~ForegroundProgram(); private: static wchar_t ms_ProgramWindowName[1024]; }; #endif//_FOREGROUND_PROGRAM_H_
ForegroundProgram.cpp
代码如下:
#include "stdafx.h" #include "ForegroundProgram.h" #define WIN32_LEAN_AND_MEAN #include <Windows.h> wchar_t ForegroundProgram::ms_ProgramWindowName[1024] = {0}; ForegroundProgram::ForegroundProgram() { } ForegroundProgram::~ForegroundProgram() { } void ForegroundProgram::DoForeground(wchar_t *sProgramWindowName) { if (sProgramWindowName != NULL) { wcscpy(ms_ProgramWindowName, sProgramWindowName); EnumWindows(EnumWindowsProc, NULL); } } BOOL CALLBACK ForegroundProgram::EnumWindowsProc(HWND hWnd, LPARAM lParam) { wchar_t sWindowName[1024]; ::GetWindowTextW(hWnd, sWindowName, 1024); if (wcsstr(sWindowName, ms_ProgramWindowName) != NULL) { ShowWindow(hWnd, SW_SHOW); SetForegroundWindow(hWnd); } return TRUE; }
ForegroundProgram代码下载地址:
点击打开链接
相关文章推荐
- 确保只有一个程序实例运行(C#)之解决方案
- Win32 程序 确保只有一个实例运行
- C# 确保程序只有一个实例在运行[转]
- 确保程序只有一个实例在运行
- 确保只有一个程序实例运行(C#)之解决方案
- 使用互斥量保证程序最多只有一个实例运行
- 单例模式--确保一个类只有一个实例,并提供一个全局访问点。
- 使windows应用程序中只有一个实例
- 程序只有一个实例运行
- 让程序只有一个实例运行
- windows下程序启动检查,只启动一个实例
- 保证程序只有一个运行实例
- C#建立了一个windows程序,如何防止多个程序实例运行?
- 如何让程序只有一个实例运行(用tftp时的感想)?
- windows下程序启动检查,只启动一个实例
- 如何确保应用只有一个实例运行
- 如何实现程序只有一个实例
- 确保一个程序只运行一个实例(BCB,Delphi)
- c/c++ 确保程序只有唯一的实例
- C#代码实现,确保windows程序只有一个实例(instance)