发信人: foxzz()
整理人: foxzz(2004-07-23 16:52:25), 站内信件
|
请参考:
*!**********************************************
proc killtitle
para p_wintitle
#Define GW_HWNDNEXT 2
&& API函数申明
Declare INTEGER GetActiveWindow IN "user32"
Declare INTEGER GetWindow IN "user32" INTEGER hwnd, INTEGER wFlag
Declare INTEGER GetWindowText IN "user32" INTEGER hand, STRING @ctitle, INTEGER ntitle
local m_hCurrent,m_return
m_hCurrent = GetActiveWindow() && 从当前活动窗口开始
Do WHILE hCurrent > 0
lcWinTitle = SPACE(255)
&& 获得句柄后,用GetWindowText取得这个窗口的名称/应用程序的标题/进程名称
lnlength = GetWindowText(m_hCurrent, @lcWinTitle, LEN(lcWinTitle))
lcWinTitle = iif(lnlength>0, STRTRAN(TRIM(lcWinTitle),CHR(0),""), "")
If !empt(lcWinTitle) and p_wintitle $ lcWinTitle
&& 如果进程名称中含有p_wintitle,则杀死此进程
m_return = killhwnd(m_hCurrent)
Endif
hCurrent = GetWindow (m_hCurrent, GW_HWNDNEXT) && 得到下一个窗口句柄
Enddo
return m_return
*!****************************
proc killhwnd
para hwnd
local m_return
&& api函数申明
Declare Integer GetWindowThreadProcessId In user32 INTEGER HWnd,INTEGER @ lpdwProcId
Declare Integer OpenProcess In kernel32 INTEGER dwDesiredAccess, Integer bInheritHandle,INTEGER dwProcId
DECLARE Integer TerminateProcess IN kernel32 As TerminateProcess Integer hProcess ,Integer uExitCode
DECLARE Integer CloseHandle IN kernel32 As CloseHandle Integer hProcess
&& 得到句柄所在线程的线性标识符以及拥有此线程的进程标识符
hWinThreadId = GetWindowThreadProcessId(hwnd, @hWinProcId)
&& 获得一个已经运行的进程的“进程句柄”
hProcess = OpenProcess(1, 0, hWinProcId)
&& 调用函数TerminateProcess来强制终止一个进程
m_return=TerminateProcess(hProcess, 0)
&& 销毁事件对象
=CloseHandle(hProcess)
return m_return
---- 天行健,君子以自强不息
|
|