プロセス名とPIDのどちらでも指定して一時停止が可能です。昔作ったのですので不具合があるかもしれません。
プロセス名とPIDのどちらでも指定して一時停止が可能です。昔作ったのですので不具合があるかもしれません。
#include "kernel32.as"#include "user32.as"#define global STANDARD_RIGHTS_REQUIRED 0x000f0000#define global SYNCHRONIZE 0x00100000#define global THREAD_TERMINATE 0x0001#define global THREAD_SUSPEND_RESUME 0x0002#define global THREAD_GET_CONTEXT 0x0008#define global THREAD_SET_CONTEXT 0x0010#define global THREAD_SET_INFORMATION 0x0020#define global THREAD_QUERY_INFORMATION 0x0040#define global THREAD_SET_THREAD_TOKEN 0x0080#define global THREAD_IMPERSONATE 0x0100#define global THREAD_DIRECT_IMPERSONATION 0x0200#define global THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3ff)#define global TH32CS_SNAPPROCESS 0x02#define global TH32CS_SNAPTHREAD 0x04#module _processkill_#deffunc _initCount = 0return#defcfunc CountCheckreturn Count#deffunc PIDPauseResume int pid,int flagCreateToolhelp32Snapshot TH32CS_SNAPTHREAD,pidhThreadSnap = stat// エラー発生(INVALID_HANDLE_VALUE)if hThreadSnap = 0xFFFFFFFF : return -1dim th32,7 : th32.0 = length(th32) * 4Thread32First hThreadSnap,varptr(th32)repeatif th32.3 = pid {OpenThread 0x0002, 0, th32.2hThread = statif hThread!=0{if flag = 0{// 休止repeatSuspendThread hThreadif (stat != 0){break}loop}else{// 再開repeatResumeThread hThreadif ((stat = 1)| (stat = 0)){break}loop}CloseHandle hThread}}dim th32,7 : th32.0 = length(th32) * 4Thread32Next hThreadSnap,varptr(th32)if stat = 0 : breakloopif flag = 0 : Count++ : else : Count--return Count#deffunc ProcessPauseResume str fname,int flg// スナップショット作成CreateToolhelp32Snapshot TH32CS_SNAPPROCESS,0hProcessSnap = statdim pe32 , 9 + (260/4)pe32.0 = length(pe32) * 4Process32First hProcessSnap,varptr(pe32);mes "PID:"+pe32.2if pe32.9!=0{sdim filename,261memcpy filename,pe32.9,260,0,0;mes filename}repeatdim pe32 , 9 + (260/4)pe32.0 = length(pe32) * 4Process32Next hProcessSnap,varptr(pe32)if stat = 0 : break;mes "PID:"+pe32.2if pe32.9!=0{sdim filename,261memcpy filename,pe32.9,260,0,0;mes filename// 小文字に変換filename = getpath(filename,16)if instr(filename,0,fname)!=-1 : PIDPauseResume pe32.2,flg}loopreturn#global_init// サンプルProcessPauseResume "chrome.exe", 0dialog "OKを押すと復活します"ProcessPauseResume "chrome.exe", 1// PIDが分かっている場合はこっち;PIDPauseResume pid, 0