如何判断一个exe文件是否启动?

huli6666 2006-08-30 10:40:42
如何判断一个exe文件是否启动?
...全文
385 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qkaibo 2006-09-07
  • 打赏
  • 举报
回复
枚举进程 然后找到每个进程的启动路径 然后和你的exe比对一下 就可以了

happy_sea(开心海) ( 一星(中级)) 信誉:100 的做法也是一个很巧妙的方法

我想还没有人 非常无聊到用什么编辑器或者其它东西 去打开一个exe 除非技术人员 一般人不会去干这种事情

所以上面的方法我比较赞同 很巧妙
pigsanddogs 2006-09-07
  • 打赏
  • 举报
回复
CreateFile已完全占有的方式打开一个exe,
如果这个exe正在运行,那么exe也是被自己打开了, 那么完全占有打开就会失败,否则打开成功。
根据这个来判断的。

有个前提就是 exe一定是存在的
还有如果exe被别人的编辑软件打开, 比如winhex等, 那么你的CreateFile也会失败,
也认为exe运行了。
huli6666 2006-09-07
  • 打赏
  • 举报
回复
这个问题好了,对了,我怎么结束一个正在执行的已知exe文件?
一笑拔剑 2006-09-06
  • 打赏
  • 举报
回复
他哪个只是创建文件
xuelianhua 2006-09-06
  • 打赏
  • 举报
回复
CreateFile
函数是取得程序在运行的?
huli6666 2006-08-31
  • 打赏
  • 举报
回复
运行中就算,进程也算在运行中。好象happy_sea(开心海) 位朋友方法行,它是专门针对exe文件判断吗?好象我试着别的文件打开就判断不了,比如记事本txt,这方法安全吧!
huli6666 2006-08-31
  • 打赏
  • 举报
回复
因为,我在进程里删除它后,就判断不对了!
pigsanddogs 2006-08-31
  • 打赏
  • 举报
回复
不安全
guojl 2006-08-30
  • 打赏
  • 举报
回复
If (FindWindow(vbNullString, "备份恢复") = 0) Then
Shell App.Path + "\Backup\备份恢复.exe", vbNormalFocus
End If
i_love_pc 2006-08-30
  • 打赏
  • 举报
回复
if( App.PrevInstance) then
msgbox "alread run"
exit sub
end if
pigsanddogs 2006-08-30
  • 打赏
  • 举报
回复
上述代码并不是判断exe是否启动, 而是判断exe是否被打开了而已。
exe启动只是一个子集。

可用Process32First, Process32Next便利进程。
happy_sea 2006-08-30
  • 打赏
  • 举报
回复
Private Declare Function CreateFile Lib "KERNEL32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As String, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const OPEN_EXISTING = 3
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const INVALID_HANDLE_VALUE = -1
Private Function IsFileRun(ByVal pFile As String) As Boolean
Dim ret As Long
ret = CreateFile(pFile, GENERIC_READ Or GENERIC_WRITE, 0&, vbNullString, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)
IsFileRun = (ret = INVALID_HANDLE_VALUE)
CloseHandle ret
End Function

用法:
if dir("c:\myfile.exe")<>"" and IsFileRun("c:\myfile.exe") then msgbox "文件c:\myfile.exe已运行!"
由于这个函数在文件不存在的情况下也会返回true,所以要先用dir检查一下文件是否存在。

1,066

社区成员

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

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