如何检测到一个程序是否开始运行(是否有相关的api函数)望指教~~ 详细说说我的目的:我想自己的机子的QQ 自己独用或者相关的程序 能够不让他人使用,做一个使用验证的小程序,想在用户单击快捷方式后即程序运行前,弹出验证窗口,不知思路如何,望指教~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在你的程序里用定时器 FindWindow 检测QQ是否运行如果是,就先隐藏跳出验证窗口 1你的程序要一直运行,不过应该不会占很多的资源。如何判断一个程序是否运行着-------HWND hwnd = FindWindowEx(NULL, NULL, "目标标题", NULL); 用钩子巴,用来监视所有应用程序的启动和运行。WS_SHELL的HSHELL_WINDOWACTIVATED就是用来监视目的程序的启动的。只有你运行QQ的时候不阻止,其他人运行,一旦发现就WM_CLOSE掉。下面是钩子的代码,关于阻止,你自己再写点东东就可以了//头文件#ifndef EXEHOOKAPI#define EXEHOOKAPI __declspec(dllimport)#endif#define USER_MSG WM_USER+1#define UC_APPSTART 0x80000001#define UC_APPDESTROY 0x80000002EXEHOOKAPI BOOL WINAPI SetHook(HWND hExe);//cpp文件#include <windows.h>#define EXEHOOKAPI __declspec(dllexport)#include "ExeHook.h"#pragma data_seg("shared")HHOOK g_hProc =NULL;HWND g_hForm = NULL;#pragma data_seg()#pragma comment(linker, "/section:shared,rws")// DLL¾ä±úHINSTANCE g_hInstDLL = NULL;//LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam);LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam){ switch(nCode) { case HSHELL_WINDOWCREATED: PostMessage(g_hForm,USER_MSG,UC_APPSTART,LPARAM(wParam)); break; case HSHELL_WINDOWDESTROYED: PostMessage(g_hForm,USER_MSG,UC_APPDESTROY,LPARAM(wParam)); break; } return CallNextHookEx(g_hProc, nCode, wParam, lParam);}BOOL WINAPI SetHook(HWND hwndExe){ BOOL bRet; if(hwndExe) { g_hForm=hwndExe; g_hProc=SetWindowsHookEx(WH_SHELL, (HOOKPROC) HookedShellProc, g_hInstDLL, 0); bRet = (g_hProc!=NULL); } else { bRet=UnhookWindowsHookEx(g_hProc); g_hProc=NULL; g_hForm=NULL; } return bRet;}BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){ if (fdwReason == DLL_PROCESS_ATTACH) g_hInstDLL = hinstDLL; return TRUE;} 关于将文件转存为xml格式 OLE容器出现Out of memory问题 PROGRESS如何使用 【请教】如何设置列表视控件的全行拖拽风格?立即结帐,谢谢! 菜鸟求救:怎样绘制一个新坐标下的曲线?救命!!!分不够好商量! 关于CAboutDlg::CDialog的问题!程序异常退出? 怎样把窗体最小化到任务栏?谢谢! 请问:系统调试器是什么?应用程序调试器又是什么?谢谢! 急!!关于派生类指针和基类指针的疑问????? VC中如何显示Office的帮助文档? 在98下用copyfile拷贝文件,发现时间不对? 怎样使一个按扭(CButton)变灰???谢谢!!
你的程序要一直运行,不过应该不会占很多的资源。
如何判断一个程序是否运行着
-------
HWND hwnd = FindWindowEx(NULL, NULL, "目标标题", NULL);
WS_SHELL的HSHELL_WINDOWACTIVATED就是用来监视目的程序的启动的。只有你运行QQ的时候不阻止,其他人运行,一旦发现就WM_CLOSE掉。下面是钩子的代码,关于阻止,你自己再写点东东就可以了
//头文件
#ifndef EXEHOOKAPI
#define EXEHOOKAPI __declspec(dllimport)
#endif
#define USER_MSG WM_USER+1
#define UC_APPSTART 0x80000001
#define UC_APPDESTROY 0x80000002EXEHOOKAPI BOOL WINAPI SetHook(HWND hExe);//cpp文件
#include <windows.h>
#define EXEHOOKAPI __declspec(dllexport)
#include "ExeHook.h"#pragma data_seg("shared")
HHOOK g_hProc =NULL;
HWND g_hForm = NULL;
#pragma data_seg()
#pragma comment(linker, "/section:shared,rws")
// DLL¾ä±ú
HINSTANCE g_hInstDLL = NULL;
//LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK HookedShellProc(int nCode, WPARAM wParam, LPARAM lParam)
{
switch(nCode)
{
case HSHELL_WINDOWCREATED:
PostMessage(g_hForm,USER_MSG,UC_APPSTART,LPARAM(wParam));
break;
case HSHELL_WINDOWDESTROYED:
PostMessage(g_hForm,USER_MSG,UC_APPDESTROY,LPARAM(wParam));
break;
}
return CallNextHookEx(g_hProc, nCode, wParam, lParam);
}BOOL WINAPI SetHook(HWND hwndExe)
{
BOOL bRet;
if(hwndExe)
{
g_hForm=hwndExe;
g_hProc=SetWindowsHookEx(WH_SHELL, (HOOKPROC) HookedShellProc, g_hInstDLL, 0); bRet = (g_hProc!=NULL);
}
else
{
bRet=UnhookWindowsHookEx(g_hProc);
g_hProc=NULL;
g_hForm=NULL;
}
return bRet;
}BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
if (fdwReason == DLL_PROCESS_ATTACH)
g_hInstDLL = hinstDLL;
return TRUE;
}