windows限制客户端运行数量
CreateMutex()函数可用来创建一个有名或无名的互斥量对象
1 | CreateMutex //找出当前系统是否已经存在指定进程的实例。如果没有则创建一个互斥量。 |
1 | HANDLE hMutexOne = CreateMutex(NULL, false, "RUNONCE"); |
文章作者: 张拓
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 张拓的博客!
相关推荐

2013-09-25
全局消息钩子代码
123456789101112131415161718192021222324252627#ifndef __UdiskHook_h__#define __UdiskHook_h__#ifdef __cplusplusextern "C" {#endif#define DLL_EXPORT // #ifdef DLL_EXPORT#define DLLAPI __declspec(dllexport)#else#define DLLAPI __declspec(dllimport)#endif LRESULT DLLAPI CALLBACK HookProcAll(int nCode, WPARAM wParam, LPARAM lParam); LRESULT DLLAPI CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); BOOL DLLAPI SetHookProc(); BOOL DLLAPI...

2013-11-05
把后台窗口调至前台显示
把后台窗口调至前台显示123456789101112131415// FindWindow取得窗口句柄 CWnd* hwnd = FindWindow(NULL, _T("PSS V4.06")); if (NULL != hwnd) { CRect rect; // 取得窗口大小 hwnd->GetWindowRect(rect); // 显示 hwnd->SetWindowPos(NULL, rect.left, rect.top, rect.right, rect.bottom, TRUE); }

2013-12-11
获取进程ID
1234567891011121314151617181920212223242526272829303132333435// 返回TRUE成功FALSE失败。 szName进程名称,大小写敏感。 ProcessID获取到的进程ID。BOOL GetProcessID(const CString& szName, DWORD& ProcessID){ //获取进程快照 HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);// 创建快照 if (hSnapshot == INVALID_HANDLE_VALUE) { return FALSE; } PROCESSENTRY32 processList; processList.dwSize=sizeof(PROCESSENTRY32); BOOL bResult=Process32First(hSnapshot,&processL...

2013-12-11
获取进程快照
12345678910111213141516171819202122232425262728293031#include "windows.h"#include "tlhelp32.h"#include "stdio.h"int main(int argc, char* argv[]){ PROCESSENTRY32 pe32; //在使用这个结构前,先设置它的大小 pe32.dwSize = sizeof(pe32); //给系统内所有的进程拍个快照 HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if (hProcessSnap == INVALID_HANDLE_VALUE) { printf("CreateToolhelp32Snapshot 调用失败.\n"); return -1; } //遍历进程快照,轮流显示每个进程的信息...

2013-12-13
根据窗口句柄判断程序运行状态
根据窗口句柄判断程序运行状态12345678910111213141516171819202122BOOL CHungDlg::ProcessRunStatus(HWND hwnd){ HINSTANCE hDll = LoadLibrary(_T("user32.dll")); if (NULL != hDll) { typedef BOOL(WINAPI *PROCISHUNGAPPWINDOW)(HWND); PROCISHUNGAPPWINDOW IsHungAppWindow = (PROCISHUNGAPPWINDOW)GetProcAddress(hDll, "IsHungAppWindow"); if (IsHungAppWindow(hwnd)) { MessageBox("未响应"); CloseApp(hwnd);// 结束进程 ...

2013-12-13
windows结束进程升级版
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162// 用到的头文件#include "tlhelp32.h" // szName获取窗口句柄HANDLE CHungDlg::GetWindowHandle(const CString& szName){ return ::FindWindow(NULL, szName);}// 根据程序窗口句柄结束进程BOOL CHungDlg::CloseApp(HANDLE handle){ DWORD nProcessID; // 根据进程句柄获取进程ID ::GetWindowThreadProcessId((HWND)handle,&nProcessID); return CloseApp(nProcessID);} // 根据进程ID结束进程BOO...
公告
每天都有一个好心情