说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB判断应用程序是否仍在运行并设置焦点

HTML文档下载 WORD文档下载 PDF文档下载
VB判断应用程序是否仍在运行并设置焦点


下面的程序将利用VB程序的一个独有的特点:隐藏的父窗口。每一个VB应用程序都有一个隐藏的父窗口。该父窗口的标题(Caption) 就是你在“生成EXE”文件时所提供的应用程序的名称。 这就是为什么当你按下Ctl+Alt+Del查看时,任务列表中显示的总是应用程序的名称,而不是程序主窗口窗口的标题。

既然父窗口是隐藏的,那我们就没有必要去改变父窗口的标题。结果是,几乎所有的VB程序都可以用下面的小程序。

请注意,有一类程序不能应用下面这段小程序:如果你在“生成EXE”文件时,将应用程序的名称设置成为零字符,那么这段程序就无效 了。这是因为很多很多窗口都将其标题设为零字符。

另一个需要注意的地方就是:该程序用到了App.Previnstance来检查程序的另一个实例正在运行。这样做可以提高程序的效率, 但代价是你不能同时运行两个或以上的要检查的程序。如果你想这样做的话,请将有App.Previnstance的那一行语句注释掉。

请将下面的代码放置在模块中:

Declare Function GetWindowWord% Lib "User" (ByVal hWnd%, ByVal nIndex%)
Declare Function GetWindowText% Lib "User" (ByVal hWnd%, ByVal lpString$, ByVal aint%)
Declare Function GetWindowTextLength% Lib "User" (ByVal hWnd%)
Declare Function GetWindow% Lib "User" (ByVal hWnd%, ByVal wCmd%)
Declare Function SetFocusAPI% Lib "User" Alias "SetFocus" (ByVal hWnd%)

' get window word constants
Const GWW_HWNDPARENT = (-8)

' get window constants
Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2

'------------------------------------------------------------------------------------
' 函数: Get_Other_Instance:布尔型, 参数( inhwnd Inputonly, outhwnd Outputonly)
' 目的: 获得要检测程序的另一个实例的窗口句柄。
'
' 描述: 同其它例子不同的是:该程序能检测哪些在运行时改变主窗口标题的程序,如MS WORD
' 实现的方法是利用VB程序独有的特点,即:每一个VB程序在运行时都会产生一个隐藏的父窗口。该父窗口的标题就是
' 你在生成EXE文件时所输入的程序名。VB程序员很少改变这些字符,并且用户看不到该父窗口。
'
' 输入:inhwnd -- 被叫窗口的窗口句柄
' 输出:如果窗口被找到则为真,否则为假。
' outhwnd -- 0 或设为另一个窗体的父窗口的hwnd
'
' ------------------------------------------------------------------------------------
'
Public Function get_other_instance (ByVal inhwnd As Integer, outhwnd As Integer) As Integer
Dim parent%, nlen%, ptext$, nexthwnd%, wtext$


get_other_instance = False
outhwnd = 0

If Not app.PrevInstance Then Exit Function

parent% = GetWindowWord(inhwnd, GWW_HWNDPARENT)
nlen% = GetWindowTextLength(parent%) + 2
ptext$ = Space$(nlen%)
nlen% = GetWindowText(parent%, ptext$, nlen%)
ptext$ = Left$(ptext$, nlen%)
nexthwnd% = GetWindow(parent%, GW_HWNDFIRST) ' get the first window in the window list


Do While nexthwnd% > 0
nlen% = GetWindowTextLength(nexthwnd%) + 2
wtext$ = Space$(nlen%)
nlen% = GetWindowText(nexthwnd%, wtext$, nlen%)
wtext$ = Left$(wtext$, nlen%)

If wtext$ = ptext$ And nexthwnd% <> parent% Then
get_other_instance = True
outhwnd = nexthwnd%
Exit Do
End If

nexthwnd% = GetWindow(nexthwnd%, GW_HWNDNEXT)

Loop

End Function

将下述代码放在窗体的Load事件中

Sub Form_Load()
Dim otherhwnd%

If Get_Other_Instance(Hwnd, otherhwnd%) then
MsgBox "Application is already running. Switching to existing Application"
SetFocusAPI otherhwnd%
End
End If

End Sub

查看GetWindow,GetWindowWord,GetWindowText,GetWindowTextLength,SetFocusAPI的用法

16亿美元超级计算机项目助力解读人脑 卡巴斯基发现新型Android恶意软件 可入侵Windows 谷歌发布基于B-Tree的C++模板库 开源产品系列:高性能Web框架Zend Framework LiFi是否会取代WiFi? 1月浏览器排行:IE10突破1% Chrome连续3月下滑 Wine让Android也能运行Windows软件 Cory Ondrejka,是这位工程师拯救了Facebook! 三星争夺企业市场的三大痛点与对策 Xcode更新至4.6 支持iOS 6.1 工程师揭秘:NVIDIA如何锻造Android掌机 VMware掌控Puppet 老用户会被锁定吗? 试图领导创新:三星创新中心11亿美元建基金 基于WebRTC Chrome与Firefox实现视频通话 将OpenStack私有云部署到Hadoop MapReduce环境 Web设计师必备的10款最佳排版工具 诺基亚CEO谈平板计划 Android为候选系统 244亿美元!戴尔公司正式完成私有化 对抗苹果 Facebook或推Find My Friends应用 前谷歌工程团队负责人:如何打造一个完美的产品 好消息!Google Drive可存储共享JavaScript等网站 Android Rivers:用Kotlin语言写出的新闻应用 辞旧迎新 老牌游戏开发商的移动进化之路 iSuppli:硬盘市场持续萎缩 大数据应用成重要市场 全球最大校园Hackathon:失败后,你能学到什么? 走进Evasi0n,越狱黑客如何拿到iOS权限 提升服务扩展性和冗余的八个编码方向 分析数据预测未来?数据挖掘绝不是大公司的专利 揭秘LinkedIn数据科学家如何工作 为什么响应式设计对SEO有好处? SpaceX团队:想登陆火星吗?学好C++吧 关于备份方式的选择问题,大家中秋快乐!! 如何控制IE的工具条,比如刷新按钮! EJB客户机与Servlet访问eJB的速度的比较 请问如何写一个dll给pb调用啊!比如调用MessageBox()的功能 用javascript或vbscript如何控制radio单选按钮? 菜鸟初学问题,查询两个数据库同一表格中某一字段重复的记录呢? 哪位大哥帮我看看,怎么配置 中秋节送分咯!!!! 如何在winform的datagrid中的cell里面截获keypress事件? 征集创意:在手机短信上还能开展什么新的,有商业价值的业务?就是大家潜在需要而没被开发出的业务。 怎样用c语言驱动1台modem拨通另一台modem? CSDN的朋友们,心中的困惑还需你们的热心帮助。 pb中处理数组的大问题sossos CVS登陆不上 请问各位,现在用什么软件配合.NET做界面设计比较方便一点? 什么操作系统最好? 在一个页面中把串%ba%ba%d7%d7还原为中文字,,用JAVASCRIPT来实现,, 与数据采集设备的通讯问题!!!!!!up有分,高手请进! 中秋节了,发薪水了,散分 讨论:关于Notes数据库隐藏设计的问题 大家中秋快乐,有关内存的释放问题,急急... 送分贴,翻译 更改文件属性的API如何定义? 谁能告诉我这是怎么回事?? treeview显示不正常 Applet问题 Asp程序无法访问远程XML文件 想建立一个公司内部的拔号服务器,像163/169那样?? 问两个简单的C语言问题 如何控制IE的工具条,比如刷新按钮! applet显示问题 新手:关于GDI,怎样取窗口非Client区域的DC? 使用asp连接webservice,实现短信的插入,发送,2003操作系统msxml3.dll 错误 '8000000a' ,2000没事 DataSet或DataView中如何实现类似数据库命令 LIKE 的筛选功能? 如何删除ini中的某个Section 祝大家中秋节快乐!怎么在日志组中增加日志文件?? 使用5xsoft upload组件上传到服务器时,如何检查里面是否包含危险代码? 中秋快乐,关于内存释放问题 内存分配存在的问题 怎么设计ADSL的路由!! javaben的释放问题 用NMUDP如何在Client端和Server端之间传递对象呢? 为什么程序员没人爱? 指点迷津啊??? 关于DataGrid的一个问题 VCD碟的.DAT文件转换成MPEG格式? 中秋节快乐!散!顺便问一下大家都吃什么品牌的月饼?五点钟准时结贴!!!!!!!!!!!! 求助!!!鲁文易盘无法驱动 如何获取提交表单的内容 Ado 问题 oracle中删除一个用户,用语法如何写 州和洲的区别 一元二次方程的应用题一道——急!明天就考试.甲乙两人共同工作若干天完成某项工作,若甲单独做则须比两人合作多18天,若乙单独做则需多32天.问:乙单独做需多少天完成? 仿写:“我若能裁你以为带,我将给那轻盈的舞女;她必能临风飘举了.我若能挹你以为眼,我将赠给那善歌的盲妹;她必能明眸善睐了.” 无论友情亦或是爱情,依靠的也只是心与心的距离而已.想说明什么?一个女性朋友说的. 公司成功之道 英文!请提供一篇讲述某家公司成功的例子.讲述其成功的原因.要全英文的.适当发表自己的观点 成功之道是什么拜托了各位 谢谢 有什么成功之道呢?我觉得我太失败了 多重反问的句子(五年级上册语文课文中的)或自己造句 成功之道!怎么让自己成功!都需要养成什么习惯!成功人士 给小弟点经验! 做主持人要具备什么才有资格? 谁能告诉我去电台当主持人需要具备什么条件?要有什么证件吗? 普京酷爱百达翡丽 萨科齐最爱Prad津巴布韦男蝉联“最丑先生”美男子遭遇车祸脑部创伤不能交流 女友调查总结女性二十“怕”普京力压奥巴马当选《福布斯》全球最有格鲁吉亚警告:别政治化冬奥会法国情侣将女婴弃于轿车后备厢 涉虐待媒体称比尔·盖茨西雅图豪宅的新邻居多《斯大林格勒》曾欲邀周润发,片酬过高美国被爆在驻华使领馆搞监听 北京上海王毅与福田康夫会谈引关注 日媒称或成何炅神经质海涛卖苦力身中七刀认定自杀警方不妨释疑解惑李宗伟苦战3局赢国际赛事第592胜 一路向南High玩六天献谍战首秀 张国强拒替身售票员阻其下车交给家人迁安水上慢生活科比有望为国出战里约阿里影业任命新总裁及COO公交直达专线开通客流少私定娃娃亲?李承铉不敢刀剑神域之直叶在行动十界杀神艾泽拉斯的超人大唐周国公漫威之战无止境明牛至尊机甲创世棍王魏增传暴明血路神途罗士圈生态公园旅游蓟县国家地质公园旅游凌云寺旅游百家村旅游九峰山旅游魁星塔旅游大新恩城山水风光旅游北陵烈士陵园旅游二龟听法石旅游千年古樟旅游大觉禅院旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘