pb 如何结束其它程序的进程

ko888888 2012-05-22 02:53:51
请教在线的大侠们,PB 如何根据进程名称(如: boss.exe) 结束其运行??
这个进程是电脑上任意进程名称,只要输入进程名称,按下结束就可以关闭它.谢谢!
...全文
607 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ko888888 2012-09-05
  • 打赏
  • 举报
回复
处理完毕,稍做改变还可以干好多事,谢谢
ko888888 2012-08-24
  • 打赏
  • 举报
回复
会报错,不知在那里出错了?
l_8_l 2012-05-22
  • 打赏
  • 举报
回复
//查找进程
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

wag_enu 2012-05-22
  • 打赏
  • 举报
回复
查一下这些API ,或许可以实现这个要求:
Function Ulong CreateToolhelp32Snapshot(Ulong dwFlags,Ulong th32ProcessID) Library "Kernel32.dll"
Function Boolean CloseHandle(Ulong hObject) Library "Kernel32.dll"
Function Boolean Process32First(Ulong hSnapshot, Ref PROCESSENTRY32 lppe) Library "Kernel32.dll" alias for "Process32First;Ansi"
Function Boolean Process32Next(Ulong hSnapshot, Ref PROCESSENTRY32 lppe) Library "Kernel32.dll" alias for "Process32Next;Ansi"
Function Ulong OpenProcess(Ulong dwDesiredAccess,Boolean bInheritHandle,Ulong dwProcessId) Library "Kernel32.dll"
Function Boolean TerminateProcess(Ulong hProcess,Ulong uExitCode) Library "Kernel32.dll"
952 2012-05-22
  • 打赏
  • 举报
回复
你用PB要知道他的優勢在那裡,不要和潘長江比高矮。
pb11来了,大家的希望有了; 作者起初花了近一段的时间研究PB11,写点心得,希望大师们不要见笑: 感觉还是比较方便的和强大的,使用了AJAX技术,无刷新,用于做查询还是很不错的,(如果要求不高的话,做个小程序也可以,效率上不比一般的.NET程序差多少);但是倘若用在大的项目中,本人觉得可能还是需要值得商榷的,有兴趣的同仁可以研究研究; 2. WEBSERVICE: 因为之前有写过PB6的三层,因此也特意研究了一下PB11的WEBSERVICE, ,只要代码写的可以的话,在INTERNET上跑,感觉还是不错的,特别是WEBSERVICE+CS框架的二合一,更有效的决绝了对高性能要求; 我觉得基于pb11的最好的web解决方案是: pb程序(webservice)+IIS for .net框架 +客户端 或者是:pb程序+.net winform+智能客户端+IIS for .net框架 如果你想pb源代码执行不要受任何.net框架限制,就用第一种, 如果想用智能客户端,那可能还是要用第二种。非常建议用第二种。 最后讲一句,其实我觉得做企业应用,软件功能,客户的体验应该是最重要, 就像pb程序(webservice)+IIS for .net框架 +客户端 架构 ,就已经解决了程序安装维护的问题,大可不必再迷信和崇拜纯web的应用了。我觉得winform比web更适合企业级用户 补充: 经过几个月的努力,终于把PB11 WEBSERVICE 框架完成(除了没有封装动态调用存储过程外,已经封装了全部常用功能); 本想把客户端程序上传让大家测试,但是由于公司的WEB服务器上有其它正式的程序在用,所以暂时不准本把 SERVER端程序挂到该服务器上供大家测试,以免带来安全隐患,还请见谅 如有问题可以通过以下方式联系: 本代码非本人所写,在其他网站下载,仅供学习交流之用!

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧