/查找进程
Function Long CreateToolhelp32Snapshot(Long Flags, Long ProcessId) Library "kernel32.dll"
Function Integer Process32First(ULong Snapshot, Ref s_Process Process) Library "kernel32.dll" //ALIAS FOR "Process32First;ansi"
Function Integer Process32Next(ULong Snapshot, Ref s_Process Process) Library "kernel32.dll" //ALIAS FOR "Process32Next;ansi"
//结束进程
Function ULong TerminateProcess(ULong hProcess, ULong uExitCode) Library "kernel32.dll"
Function ULong OpenProcess(ULong dwDesiredAccess, ULong bInheritHandle, ULong dwProcessId) Library "kernel32.dll"
type s_process from structure
unsignedlong structsize
unsignedlong usage
unsignedlong processid
unsignedlong defaultheapid
unsignedlong moduleid
unsignedlong threads
unsignedlong parentprocessid
unsignedlong classbase
unsignedlong flags
character filename[256]
end type
//--------------------------------------------------------------------
// 描述:枚举进程并返回指定进程号PID
//--------------------------------------------------------------------
// 参数:
// value string as_exename 可执行文件名称
//--------------------------------------------------------------------
// 返回: unsignedlong
//--------------------------------------------------------------------
// 作者: ruic 日期: 2011.06.02
//====================================================================
s_Process lst_Process
String ls_filename[100] ,ls_curexename
ULong ln_ProcessID,ln_SameCount,ln_Snapshot,ln_Circle,ln_Count,ul_PID
ul_PID = 0
ln_Snapshot = CreateToolhelp32Snapshot(2,0)
//创建快照失败
IF (ln_Snapshot < 1) THEN RETURN 0
//创建快照失败 296是windows决定的
lst_Process.StructSize = 296
IF Process32First(ln_Snapshot,lst_Process) = 0 THEN RETURN 0
//枚举当前权限下的进程
DO WHILE 1 = 1
IF Process32Next(ln_Snapshot,lst_Process) = 0 THEN EXIT
ln_Count = ln_Count + 1
ls_filename[ln_Count] = lst_Process.Filename
IF Lower(ls_filename[ln_Count]) = as_exename THEN
//取得进程号
ul_PID = lst_Process.ProcessID
//MessageBox(string(ul_PID),ls_FileName[ln_Count])
END IF
LOOP
RETURN ul_PID
//====================================================================
// 事件: nvo_rc_function.of_killprocess()
//--------------------------------------------------------------------
// 描述:根据进程号结束一个进程
//--------------------------------------------------------------------
// 参数:
// value unsignedlong ul_pid 进程号
//--------------------------------------------------------------------
// 返回: (none)
//--------------------------------------------------------------------
// 作者: ruic 日期: 2011.06.02
//====================================================================
Int li_rc
ULong PROCESS_TERMINATE = 0001
ULong hwdprocess
//获取指定进程号的进程句柄
hwdprocess = OpenProcess(PROCESS_TERMINATE,1,ul_PID)
//MessageBox("提示",string(hwdprocess))
//结束进程,成功返回非零
li_rc = TerminateProcess(hwdprocess,0)
IF li_rc = 0 THEN
MessageBox("提示",'结束进程失败!')
END IF
Function Long CreateToolhelp32Snapshot(Long Flags, Long ProcessId) Library "kernel32.dll"
Function Integer Process32First(ULong Snapshot, Ref s_Process Process) Library "kernel32.dll" //ALIAS FOR "Process32First;ansi"
Function Integer Process32Next(ULong Snapshot, Ref s_Process Process) Library "kernel32.dll" //ALIAS FOR "Process32Next;ansi"
//结束进程
Function ULong TerminateProcess(ULong hProcess, ULong uExitCode) Library "kernel32.dll"
Function ULong OpenProcess(ULong dwDesiredAccess, ULong bInheritHandle, ULong dwProcessId) Library "kernel32.dll"
type s_process from structure
unsignedlong structsize
unsignedlong usage
unsignedlong processid
unsignedlong defaultheapid
unsignedlong moduleid
unsignedlong threads
unsignedlong parentprocessid
unsignedlong classbase
unsignedlong flags
character filename[256]
end type
//--------------------------------------------------------------------
// 描述:枚举进程并返回指定进程号PID
//--------------------------------------------------------------------
// 参数:
// value string as_exename 可执行文件名称
//--------------------------------------------------------------------
// 返回: unsignedlong
//--------------------------------------------------------------------
// 作者: ruic 日期: 2011.06.02
//====================================================================
s_Process lst_Process
String ls_filename[100] ,ls_curexename
ULong ln_ProcessID,ln_SameCount,ln_Snapshot,ln_Circle,ln_Count,ul_PID
ul_PID = 0
ln_Snapshot = CreateToolhelp32Snapshot(2,0)
//创建快照失败
IF (ln_Snapshot < 1) THEN RETURN 0
//创建快照失败 296是windows决定的
lst_Process.StructSize = 296
IF Process32First(ln_Snapshot,lst_Process) = 0 THEN RETURN 0
//枚举当前权限下的进程
DO WHILE 1 = 1
IF Process32Next(ln_Snapshot,lst_Process) = 0 THEN EXIT
ln_Count = ln_Count + 1
ls_filename[ln_Count] = lst_Process.Filename
IF Lower(ls_filename[ln_Count]) = as_exename THEN
//取得进程号
ul_PID = lst_Process.ProcessID
//MessageBox(string(ul_PID),ls_FileName[ln_Count])
END IF
LOOP
RETURN ul_PID
//====================================================================
// 事件: nvo_rc_function.of_killprocess()
//--------------------------------------------------------------------
// 描述:根据进程号结束一个进程
//--------------------------------------------------------------------
// 参数:
// value unsignedlong ul_pid 进程号
//--------------------------------------------------------------------
// 返回: (none)
//--------------------------------------------------------------------
// 作者: ruic 日期: 2011.06.02
//====================================================================
Int li_rc
ULong PROCESS_TERMINATE = 0001
ULong hwdprocess
//获取指定进程号的进程句柄
hwdprocess = OpenProcess(PROCESS_TERMINATE,1,ul_PID)
//MessageBox("提示",string(hwdprocess))
//结束进程,成功返回非零
li_rc = TerminateProcess(hwdprocess,0)
IF li_rc = 0 THEN
MessageBox("提示",'结束进程失败!')
END IF