|
@@ -9,6 +9,7 @@
|
|
|
#include "INIFILE.h"
|
|
|
#include "Functions/Functions.h"
|
|
|
#include "minidupm.h"
|
|
|
+#include "tlhelp32.h"
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
#define new DEBUG_NEW
|
|
@@ -55,6 +56,13 @@ BOOL CYAServerApp::InitInstance()
|
|
|
//return FALSE;
|
|
|
}
|
|
|
|
|
|
+ //CString g_AppPath;
|
|
|
+ //char cIniFileName[MAX_PATH];
|
|
|
+ //GetModuleFileNameA(NULL,cIniFileName,sizeof(cIniFileName)) ;
|
|
|
+ //char * p = strrchr(cIniFileName, '\\') ;
|
|
|
+ //g_AppPath.Format(_T("%s"),CFunctions::c2wc(p));
|
|
|
+
|
|
|
+
|
|
|
INITCOMMONCONTROLSEX InitCtrls;
|
|
|
InitCtrls.dwSize = sizeof(InitCtrls);
|
|
|
// 将它设置为包括所有要在应用程序中使用的
|
|
@@ -462,3 +470,54 @@ void CYAServerApp::save_reader_conf()
|
|
|
s = t;
|
|
|
writeini(CONF_SECT_READER, CONF_READER_INTERVAL_TIME, s);
|
|
|
}
|
|
|
+
|
|
|
+BOOL CYAServerApp::KillProcessFromName(CString strProcessName)
|
|
|
+{
|
|
|
+ //创建进程快照(TH32CS_SNAPPROCESS表示创建所有进程的快照)
|
|
|
+ HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
|
|
|
+
|
|
|
+ //PROCESSENTRY32进程快照的结构体
|
|
|
+ PROCESSENTRY32 pe;
|
|
|
+
|
|
|
+ //实例化后使用Process32First获取第一个快照的进程前必做的初始化操作
|
|
|
+ pe.dwSize = sizeof(PROCESSENTRY32);
|
|
|
+
|
|
|
+
|
|
|
+ //下面的IF效果同:
|
|
|
+ //if(hProcessSnap == INVALID_HANDLE_VALUE) 无效的句柄
|
|
|
+ if(!Process32First(hSnapShot,&pe))
|
|
|
+ {
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ //将字符串转换为小写
|
|
|
+ strProcessName.MakeLower();
|
|
|
+
|
|
|
+ //如果句柄有效 则一直获取下一个句柄循环下去
|
|
|
+ while (Process32Next(hSnapShot,&pe))
|
|
|
+ {
|
|
|
+
|
|
|
+ //pe.szExeFile获取当前进程的可执行文件名称
|
|
|
+ CString scTmp = pe.szExeFile;
|
|
|
+
|
|
|
+
|
|
|
+ //将可执行文件名称所有英文字母修改为小写
|
|
|
+ scTmp.MakeLower();
|
|
|
+
|
|
|
+ //比较当前进程的可执行文件名称和传递进来的文件名称是否相同
|
|
|
+ //相同的话Compare返回0
|
|
|
+ if(!scTmp.Compare(strProcessName))
|
|
|
+ {
|
|
|
+
|
|
|
+ //从快照进程中获取该进程的PID(即任务管理器中的PID)
|
|
|
+ DWORD dwProcessID = pe.th32ProcessID;
|
|
|
+ HANDLE hProcess = ::OpenProcess(PROCESS_TERMINATE,FALSE,dwProcessID);
|
|
|
+ ::TerminateProcess(hProcess,0);
|
|
|
+ CloseHandle(hProcess);
|
|
|
+ return TRUE;
|
|
|
+ }
|
|
|
+ scTmp.ReleaseBuffer();
|
|
|
+ }
|
|
|
+ strProcessName.ReleaseBuffer();
|
|
|
+ return FALSE;
|
|
|
+}
|