| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4159 人关注过本帖
标题:求禁止重复运行,激活最小化或隐藏窗口置前焦点代码
只看楼主 加入收藏
rogersgb
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2016-2-3
结帖率:47.37%
收藏
已结贴  问题点数:9 回复次数:8 
求禁止重复运行,激活最小化或隐藏窗口置前焦点代码
If App.PrevInstance ThenMsgBox "程序已运行", vbExclamation + vbOKOnly, "操作提示"EndEndIf
2016-03-03 11:03
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
代码没在这,就说一个原理吧。使用到了系统自定义消息。

1、程序运行,判断是不是第一个运行。如果是,继续 ,如果否,跳4
2、挂钩自己的消息,监控自定义消息。自定义消息,你这里面只需要定义一个。
3、如果检测到自定义的消息,把自己显示出来。

4、以自己的名字来 检索系统 句柄,应该能发现2个。对这二个系统句柄 都发自定义消息。
5、结束自己。




授人于鱼,不如授人于渔
早已停用QQ了
2016-03-04 11:45
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
可以使用进程间通讯DDE通知已运行的进程自动前置,获得焦点,然后自己退出。

能编个毛线衣吗?
2016-03-04 11:51
rogersgb
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 3楼 wmf2014
好象试过,但我这程序运行后,最小化或隐藏后,就不会激活窗口到显示,点击没反应
2016-03-04 12:27
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
DDE 我没用过,看过介绍,据说已被微软放弃了,所以更没去看。

我喜欢自己掌握所能掌握的部分,对DDE无视。

授人于鱼,不如授人于渔
早已停用QQ了
2016-03-04 12:54
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
楼主可提交自己的工程文件嘛,估计这里的有大神瞬间帮你解决的。
vb里设置dde比较简单,只需要设置窗体的LinkMode属性,几行代码即可搞定,不需要控件,不需要api声明。百度了下,没看到说微软放弃的说法,不过是一个动态数据交换协议,大概用的人少,很多大神只看到高大上,不屑用它吧。

能编个毛线衣吗?
2016-03-04 19:56
rogersgb
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 6楼 wmf2014
用下面代码,第二次运行时,FORM1窗口没有显示出来,点击无反应.第一次运行后窗口隐藏成托盘图标,第二次没反应

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Sub Main()
    If App.PrevInstance Then
        'Form1 为你程序主窗口标题,不要和别的程序一样
        SetForegroundWindow FindWindow(vbNullString, App.Title)
    Else
        Form1.Show
    End If
End Sub


2016-03-05 08:15
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:9 
DDE,初步测试可行。

参考:
http://blog.

授人于鱼,不如授人于渔
早已停用QQ了
2016-03-05 11:25
rogersgb
Rank: 1
等 级:新手上路
帖 子:73
专家分:0
注 册:2016-2-3
收藏
得分:0 
回复 8楼 风吹过b
谢谢,这种方法可行,已解决
2016-03-06 08:59
快速回复:求禁止重复运行,激活最小化或隐藏窗口置前焦点代码
数据加载中...
 
   



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

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