| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 931 人关注过本帖
标题:求高手指点,运行中的程序,其中一个窗体隐藏了,再次运行EXE判断
只看楼主 加入收藏
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
结帖率:87.21%
收藏
已结贴  问题点数:20 回复次数:3 
求高手指点,运行中的程序,其中一个窗体隐藏了,再次运行EXE判断
详细解释一下,我有个程序,点击.exe运行后同时加载两个窗体,一个隐藏一个显示,显示的是登录窗口,隐藏的是日历窗体。
关闭除日历窗口以外的窗口以后(日历窗体还在隐藏状态),再次点击.exe,判断程序是否在运行中,我用的是:If App.PrevInstance = True Then
如果在运行状态那么,怎么让运行中的程序show出登录窗口。
我试过用变量数值来判断,但是发现,再次运行的程序不是调用已运行程序的变量,而是调用再次运行产生的变量。
这个怎么处理,请高手指点下,谢谢!!
说穿了就是防止程序两次运行,但是我的日历窗体不允许增加链接登录窗口的功能,只能点击.EXE来show出登录窗体。

[ 本帖最后由 wxflw 于 2012-4-18 18:07 编辑 ]
搜索更多相关主题的帖子: 日历 运行程序 
2012-04-18 18:03
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:7 
縮到右下小圖標。要用再點出來。

不要選我當版主
2012-04-18 18:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:7 
用 WINDOWS 消息吧。这个是王道。

如果不想使用 API ,那么,变通的办法就是 通过
1、临时文件
2、注册表

授人于鱼,不如授人于渔
早已停用QQ了
2012-04-18 20:26
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
版主给个实例吧!wx-flw@谢谢!新手在学习中!~~


看了个DDE的不怎么满意~~好像以后这个方法会不太方便
如下:



Const COMMANDLINE = "CommandLine="                     '     还是为了省事,定义一个常量
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
Static lngCount As Long
Dim Info As String
Info = Text1.Text               '             保留原有信息

Select Case CmdStr                       '         CmdStr   是DDE程序传送过来的参数
    Case "Max"
        Me.WindowState = 2
        Info = Info + vbNewLine + "窗体已被最大化 "
    Case "ShowTime"
        Info = Info + vbNewLine + "最后一次运行这个程序的时间是: " + Str(Now)
    Case "Count"
        lngCount = lngCount + 1
        Info = Info + vbNewLine + "你已经第 " + Str(lngCount) + "次重复调用这个程序。 " _
                        + vbNewLine + "但怕您不多给工资,所以只运行了一个   ^_^ "
End Select

If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then
    Info = Info + vbNewLine + "新程序曾以命令行形式运行 " + vbNewLine + "命令行为: " _
                  + vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))
End If

Text1.Text = Info               '         把信息显示出来

Cancel = False
End Sub
Private Sub LinkAndSendMessage(ByVal Msg As String)
Dim t As Long
Picture1.LinkMode = 0                                   '--
Picture1.LinkTopic = "工程1|form1"           '     |______连接DDE程序并发送数据/参数
Picture1.LinkMode = 2                                   '     |             “|”为管道符,是“退格键”旁边的竖线,
Picture1.LinkExecute Msg                           '--                 不是字母或数字!

t = Picture1.LinkTimeout               '--
Picture1.LinkTimeout = 1               '     |______终止DDE通道。当然,也可以用别的方法
Picture1.LinkMode = 0                     '     |             这里用的是超时强制终止的方法
Picture1.LinkTimeout = t               '--
End Sub

Private Sub Form_Load()
If App.PrevInstance Then               '   程序是否已经运行

    Me.LinkTopic = ""                         '   这两行用于清除新运行的程序的DDE服务器属性,
    Me.LinkMode = 0                             '   否则在连接DDE程序时会出乱子的

    LinkAndSendMessage "Max"                       '--
    LinkAndSendMessage "Count"                   '     |-----连接DDE接受程序并传送数据/参数
    LinkAndSendMessage "ShowTime"             '--

    If Command <> "" Then                                   '   如果有命令行参数,就传递过去
          LinkAndSendMessage COMMANDLINE + Command
    End If
    End                                                               '     结束新程序的运行
End If
End Sub



[ 本帖最后由 wxflw 于 2012-4-18 20:50 编辑 ]

学习--------------学习-------------------学习--------------------!!
2012-04-18 20:48
快速回复:求高手指点,运行中的程序,其中一个窗体隐藏了,再次运行EXE判断
数据加载中...
 
   



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

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