标题:如何让程序预定执行一段代码(定时或闲时)
只看楼主
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
回复 20楼 吹水佬
感谢!有空研究一下。
2021-03-12 16:35
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2021-3-12 12:12:12的发言:

最简单的示例(消息)

** 主进程
** test1.exe
**
cDefPath = ADDBS(JUSTPATH(SYS(16)))
_screen.Visible = .F.
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
of = CREATEOBJECT("Form1")
of.show
READ EVENTS
RETURN

DEFINE CLASS Form1 as Form
    ShowWindow = 2
    hSubpro = 0
    ADD OBJECT cmd as CommandButton WITH top=10,left=10,height=22,caption="启动子进程"
    ADD OBJECT edt as EditBox WITH top=40,left=10,width=300,height=200
   
    PROCEDURE Init
        BINDEVENT(this.hWnd, 0x401, this, "_Message")
    ENDPROC
   
    PROCEDURE Destroy
        IF this.hSubpro > 0
            SendMessage(this.hSubpro, 0x401, 0, 0)
        ENDIF
        CLEAR EVENTS
    ENDPROC
   
    PROCEDURE cmd.Click
        oApp = CREATEOBJECT("Shell.Application")
        oApp.ShellExecute(cDefPath+"test2.exe", TRANSFORM(thisform.hWnd), "", "", 1)
    ENDPROC

    PROCEDURE _Message(hWnd, nMsg, wParam, lParam)
        DO CASE
            CASE wParam == 1
                this.edt.SelText = "子进程启动" + 0h0D0A
                this.hSubpro = lParam
            CASE wParam == 2
                this.edt.SelText = "子进程关闭" + 0h0D0A
        ENDCASE
    ENDPROC
ENDDEFINE


** 子进程
** test2.exe
**
PARAMETERS cParam
_screen.Visible = .F.
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
of = CREATEOBJECT("Form1", cParam)
of.show
READ EVENTS
RETURN

DEFINE CLASS Form1 as Form
    ShowWindow = 2
    AutoCenter = 1
    hMain = 0
   
    PROCEDURE Init(cParam)
        this.hMain = INT(VAL(cParam))
        SendMessage(this.hMain, 0x401, 1, this.hWnd)
        BINDEVENT(this.hWnd, 0x401, this, "_Message")
    ENDPROC
   
    PROCEDURE Destroy
        IF this.hMain> 0
            SendMessage(this.hMain, 0x401, 2, 0)
        ENDIF
        CLEAR EVENTS
    ENDPROC
   
    PROCEDURE _Message(hWnd, nMsg, wParam, lParam)
        DO CASE
            CASE wParam == 0
                MESSAGEBOX("主程序关闭")
                this.Release
            CASE wParam == 1
            CASE wParam == 2
        ENDCASE
    ENDPROC
ENDDEFINE


在主进程中启动子进程还是要用到timer ……,如果每分钟启动子进程一次!
2021-03-12 16:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用radiofan在2021-3-12 16:46:35的发言:



在主进程中启动子进程还是要用到timer ……,如果每分钟启动子进程一次!

每分钟启动子进程一次就没必要。
启动子进程后就可以一直工作,直到完成整个任务,什么时候需要子进程做什么是可以控制。
2021-03-12 18:47
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用吹水佬在2021-3-12 18:47:39的发言:


每分钟启动子进程一次就没必要。
启动子进程后就可以一直工作,直到完成整个任务,什么时候需要子进程做什么是可以控制。


嗯,我的意思是:主进程中定时启动子进程还是要用到timer !比如在整点运行子程序1,在每个分钟点,如果满足特定条件运行子程序2 等等 ……
2021-09-24 10:28
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
似乎可以用windows的计划任务程序,来调用你的程序。

dBase有人接盘了。
2021-09-24 10:52
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 
以下是引用xuminxz在2021-9-24 10:52:42的发言:

似乎可以用windows的计划任务程序,来调用你的程序。


计划任务不能检索和判断我的需求
2021-09-24 11:00
nbwww
Rank: 6Rank: 6
等 级:贵宾
威 望:10
帖 子:222
专家分:468
注 册:2021-1-9
得分:0 
以下是引用radiofan在2021-9-24 11:00:35的发言:



计划任务不能检索和判断我的需求

计划任务定时启动你的程序  程序打开后判断需求   符合就执行后续部分   没有就退出
到下个时间点又会启动你的程序   理论上符合你的要求的
2021-09-24 19:44
独木星空
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:河北省曲阳县
等 级:版主
威 望:57
帖 子:713
专家分:556
注 册:2016-6-29
得分:0 
回复 20楼 吹水佬
有空学习一下。并加以运用。

素数问题的解决是我学习编程永恒的动力。
2021-09-25 07:15
radiofan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:466
专家分:696
注 册:2006-7-30
得分:0 


吹版的思路不错,定时程序测试中,每整点运行二号进程,其他时间每隔一分钟运行其他进程。

[此贴子已经被作者于2021-9-26 09:40编辑过]

2021-09-26 08:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505079-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.213423 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved