程序怎样检测到qq运行,并且启动另一个程序的进程?需要哪些函数? 急急急急!~!我的程序想用一个计时器,当检测到qq运行时,启动另一个程序,该用那些函数? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用creatToolhelp32SnapShot查找进程 凑合着看看吧 static BOOL found = 0;void CheckQQ(){ PROCESSENTRY32 exes; BOOL finding; HANDLE hProcessSnap; HANDLE hProcess; exes.dwSize = sizeof(exes); hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); finding = Process32First(hProcessSnap, &exes); if ( found == 1 ) ::ExitProcess; while(finding) { if(strcmp(exes.szExeFile,"vapclt32.exe") == 0) { StartRun(); CloseHandle(hProcess); found = 1; } finding = Process32Next(hProcessSnap, &exes); } sleep(1000); CheckQQ();}void StartRun(){ STARTUPINFO si; PROCESS_INFORMATION pi; LPTSTR szCmdline=_tcsdup(TEXT(installPath + "CSM\\vapclt32.exe")); ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); CreateProcess( NULL, // No module name (use command line) szCmdline, // Command line NULL, // Process handle not inheritable NULL, // Thread handle not inheritable FALSE, // Set handle inheritance to FALSE 0, // No creation flags NULL, // Use parent's environment block NULL, // Use parent's starting directory &si, // Pointer to STARTUPINFO structure &pi); // Pointer to PROCESS_INFORMATION structure} LPTSTR szCmdline=_tcsdup(TEXT(installPath + "CSM\\vapclt32.exe"))中把installPath + "CSM\\vapclt32.exe"换成你的程序就可以 晕.QQ的进程名是不变的...你列举进程就知道QQ是否运行中.然后你想怎么样就怎么样吧...不过,你的说法好像是说检测QQ的启动吧? hSnapShot=::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 pe; Process32First(hSnapShot,&pe); HANDLE mhProcess; do { mhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID); if(mhProcess==NULL){ continue; }else{if(pe.szExeFile=="qq.exe"){run();//你要运行的程序}} }while(::Process32Next(hSnapShot,&pe)); 首先声明不是盗qq,我的意思是检测到qq进程,就启动另一个程序,是不是需要一个定时器不停的扫描进程?怎么写啊老大们!! 何必这么麻烦,还不如注册进程启动的回调函数:PsSetCreateProcessNotifyRoutine 如何通过VC程序更改BIOS的启动顺序项 再问:海量其他格式文件数据(文本文件数据、二进制其他格式文件数据)导入数据库SQL SERVER的效率问题。 第一次逛MSDN,第一个人顶的就给谁. 如何用代码新建一个文件? 各位大虾:请各位指教 编写多线程程序时,为什么要考虑线程同步问题??? ===如何从UNICODE格式的文本文件中读出第一个字符的内容?=== 找一个头文件 结构体大小问题? MFC项目资源文件添加一个Menu然后在代码中用 出现未声明的标识符?头文件已经引入了 怎样截取另外一个进程的按钮事件 请问如何向其他进程的edit控件加文字
static BOOL found = 0;
void CheckQQ()
{
PROCESSENTRY32 exes;
BOOL finding;
HANDLE hProcessSnap;
HANDLE hProcess;
exes.dwSize = sizeof(exes);
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
finding = Process32First(hProcessSnap, &exes);
if ( found == 1 )
::ExitProcess;
while(finding)
{
if(strcmp(exes.szExeFile,"vapclt32.exe") == 0)
{
StartRun();
CloseHandle(hProcess);
found = 1;
}
finding = Process32Next(hProcessSnap, &exes);
}
sleep(1000);
CheckQQ();
}void StartRun()
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
LPTSTR szCmdline=_tcsdup(TEXT(installPath + "CSM\\vapclt32.exe"));
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
CreateProcess( NULL, // No module name (use command line)
szCmdline, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi); // Pointer to PROCESS_INFORMATION structure
}
不过,你的说法好像是说检测QQ的启动吧?
PROCESSENTRY32 pe;
Process32First(hSnapShot,&pe);
HANDLE mhProcess;
do
{
mhProcess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe.th32ProcessID);
if(mhProcess==NULL){
continue;
}else{if(pe.szExeFile=="qq.exe"){
run();//你要运行的程序
}
}
}while(::Process32Next(hSnapShot,&pe));
PsSetCreateProcessNotifyRoutine