faceyao 发表于 2012-6-26 15:11:44

(已解决)母程序如何因子程序的结束而退出

本帖最后由 faceyao 于 2012-6-26 22:44 编辑

B为A的子程序。

如何当点了B子程序的关闭X退出时,A程序也关闭退出?。

思路应该把两个程序分开写,还是用fileinstall更合适,

谁能帮忙写个这样的框架代码,谢谢,

半芯竹 发表于 2012-6-26 15:41:24

回复 1# faceyao


    搜索论坛 ‘子窗口’

faceyao 发表于 2012-6-26 15:56:58

回复 2# 半芯竹

谢谢,搜索过了,没有同类的,

shqf 发表于 2012-6-26 17:00:49

B程序退出时kill掉A程序的进程。

Qokelate 发表于 2012-6-26 17:52:52

把母进程的PID作为参数传递给子进程,检测母PID退出则退出自身

ooxxgod 发表于 2012-6-26 18:25:14

好想设定退出的A窗口也可以 没试过纯想的

Qokelate 发表于 2012-6-26 18:26:10




If 0 = $CMDLINE Then
        ;母进程代码
        Run(@ScriptFullPath & ' ' & @AutoItPID)
        Sleep(10000)
        Exit
EndIf

;子进程代码

Local $PID = Number($CMDLINE)
While ProcessExists($PID)
        Sleep(10)
WEnd
Exit

faceyao 发表于 2012-6-26 19:55:18

非au3

本帖最后由 faceyao 于 2012-6-26 20:14 编辑

看到楼上码上代码,辛苦了,分先给您,谢谢了,

如果子进程不是au3程序,而是一个独立的绿色软件,比如ss.exe,本身没有检测母PID的功能,请问代码该怎么改,万分感谢!

faceyao 发表于 2012-6-26 20:45:51

回复 7# Qokelate

运行您的代码之后,提示:


Error: "EndI声明没有匹配的      "If"声明.

kevinch 发表于 2012-6-26 20:59:49

母程序先启动,建立pid清单,调用子程序,对比pid清单,找出新出现的符合子程序名的pid,一直循环判断,如果该pid消失,母程序退出

872777825 发表于 2012-6-26 21:18:54

运行子程序后让母程序等待子程序进程 结束而结束
ProcessWaitClose

faceyao 发表于 2012-6-26 21:22:14

回复 10# kevinch

通过任务管理器 查看ss.exe的pid每启动一次都是不同的,它每次都变化的,我又如何找出新出现的符合子程序名的pid呢,而且,启动其他软件,会不会误认为是这个ss.exe软件呢,因为也是一个新的pid啊,

kevinch 发表于 2012-6-26 21:55:05

回复 12# faceyao
认真读我写的每一个字

afan 发表于 2012-6-26 21:56:24

GUICreate('')
Local $iBtn = GUICtrlCreateButton('计算器', 100, 100, 150, 25), $pid
GUISetState()
While 1
        If $pid And Not ProcessExists($pid) Then Exit
        Switch GUIGetMsg()
                Case -3
                        Exit
                Case $iBtn
                        $pid = Run('calc.exe')
        EndSwitch
WEnd

楼上风云 发表于 2012-6-26 22:17:32

回复 1# faceyao


最简单的,B里一个EXIT(没考虑控件和其他现场的清理)
页: [1] 2
查看完整版本: (已解决)母程序如何因子程序的结束而退出