如何判断,应用程序已经运行

yuanqi007 2007-03-23 12:50:23
比如有2个exe文件:logo.exe、main.exe

运行logo.exe的时候,想要判断当前机器上是否已经运行main.exe。

怎么处理呢?谢谢各位先
...全文
319 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
WOFEIYANG 2007-03-26
  • 打赏
  • 举报
回复
ls_mutex_name = '我的程序' + char (0)
ll_mutex = CreateMutexA (0, 0, ls_mutex_name)
ll_err = GetLastError()
if ll_err = 183 then
// 程序已经运行
MessageBox("确认","系统已经运行")
Halt close
Else
// 程序未运行
end if

xiaofei1107 2007-03-25
  • 打赏
  • 举报
回复
找到进程就行了!!!
仰天长啸qsx 2007-03-25
  • 打赏
  • 举报
回复
Run('logo.exe')

long ll_null
string ls_windowname

//setnull(ll_null)
/*============================================================*/
//循环至logo.exe主窗体打开
/*============================================================*/
Do While ll_handle = 0
ll_handle = FindWindowA(ll_null,ls_windoename)
Yield()
Loop
/*============================================================*/
//等待logo.exe安装完毕
/*============================================================*/
Do While ll_handle > 0
Yield()
ll_handle = FindWindowA(ll_null,ls_windoename)
Loop

Run('main.exe')
xiaofei1107 2007-03-25
  • 打赏
  • 举报
回复


integer WM_CLOSE = 16
long ll_hwnd
long ll_rtn
string ls_null
string ls_window


Setnull(ls_null)
ls_window = "XX" //窗口标题
ll_hwnd = FindWindowA(ls_null,ls_window)

If ll_hwnd = 0 Then

Setnull(ls_null)
ls_window = "XX" //窗口标题
ll_hwnd = FindWindowA(ls_null,ls_window)

end if

if ll_hwnd = 0 then

// messagebox("提示"," XX没有启动! ")
halt
return

end if

//ulong ll_ProcessId
//ulong ll_ProcessHandle
//
//Setnull(ls_null)
//ll_hwnd = FindWindowA(ls_null, ls_window)
////得到窗口相关进程ID
//GetWindowThreadProcessId(ll_hwnd, ll_ProcessId)
////得到进程句柄
//ll_ProcessHandle = OpenProcess( 0001, 0, ll_ProcessId )
////终止进程
//TerminateProcess(ll_ProcessHandle, 0)

//====================================
还要注册几个变量,100%能用,放心吧,我用过N次了!!!
gargoylesky 2007-03-24
  • 打赏
  • 举报
回复
可以用CreateMutex试一下,与窗口标题无关,只要起个名字即可。
yuanqi007 2007-03-23
  • 打赏
  • 举报
回复
...这样不太好了,哈
整个程序的执行过程是
1、执行logo.exe
2、通过logo.exe更新新版本
3、运行main.exe
4、logo.exe关闭

要是能判断.exe是否在运行就好了
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
异常关闭那就没办法了,这样吧
main.exe5秒改写一次注册表
logo.exe5秒读一次注册表 如果前一次读的和后一次相同 main.exe就关闭了
否则就开着呢
yuanqi007 2007-03-23
  • 打赏
  • 举报
回复
这样也会有问题

当程序异常关闭时候,导致状态标识无法恢复。那么,这个程序就永远打不开了
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
那就好办了,你在main.exe open中写个字符在注册表中 close中删除这个字符
在logo.exe里判断注册表中字符是否存在,如存在 则main.exe打开 没有就没打开
yuanqi007 2007-03-23
  • 打赏
  • 举报
回复
logo.exe也是自己编写的
main.exe也是自己编写的
但main.exe是一个mid窗口,它的窗口标题是根据所打开的程序变化的,所以没办法使用FindWindow来判断
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
你那个main.exe是自己编写的 还是已经存在的?
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
问一下 你想在pb里打开别的程序,在pb里判断呢 还是直接打开让pb程序判断呢?
yuanqi007 2007-03-23
  • 打赏
  • 举报
回复
FindWindow的话,需要指定窗口标题。main.exe的窗口标题是变动的。有没有办法判断是否运行main.exe
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
不好意思 发错地方了
给你个地址补偿一下http://topic.csdn.net/t/20030602/13/1865424.html
qyqtn 2007-03-23
  • 打赏
  • 举报
回复
数据窗口--属性--edit--style--dropdownDW
设置完就成了
lycarpy 2007-03-23
  • 打赏
  • 举报
回复
期待
就是要流量 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊大家多给评论 点赞 关注啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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