怎么关闭其它的程序啊??
解决方案 »
- 组件菜单问题
- delphi中的mediaplayer控件怎么判断对某种视频格式是否支持?
- 急,帮我改下系统吧
- 谁解决这个问题,给足够分,不够再开帖给分!
- 大难题:将文件存放到字段中,如何实现存储进度??
- 关于多文档程序的子窗口的问题!
- 一个很简单的问题,求简单的解决方法!
- 如何知道A4(Grephic)字段中为空(即没有图形)
- 我错了?盖次错了?我将win2000的几个共享文件夹限制了用户数,当十多台工作站访问时,打不开文件!
- 优秀程序员请进!
- 怎樣讓程序執行完一個存儲過程后再繼續執行后邊的代碼?
- 在COM的接口方法中能不能用字符串数组,能的话在类型库参数中选择什么Type?不能的话有什么方法替代?如:procedure Tusd_ws.aa(aaa: arr
然后发消息
SendMessage(Handle,WM_CLOSE,0,0);
例如:
var
Wnd:THandle;
begin
Wnd := FindWindow('notepad',nil); //关闭笔记本程序
SendMessage(Wnd,WM_CLOSE,0,0);
end;
use Tlhelp32//加入这个单元function KillTask(ExeFileName: string): Integer;//参数为应用程序名称
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
/////////////////执行
procedure TForm1.Button1Click(Sender: TObject);
begin
KillTask('notepad.exe');
end;
可以任写一个,另一个为nil。要得到程序的类名可以使用SPY++程序(VC带),或是WinSight32程序(delphi带)。
如果FindWindow返回0,表示找不到该程序
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := Winprocs.FindWindow(nil, '计算器'); // close the exist Calculator
if HWndCalculator <> 0 then
SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
end;
就是先查找现在已经打开的窗体的名字,得到句柄,然后发送消息关闭它