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

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的用法

“互联网女皇”报告解读:智能电视大趋势 苹果扩大其北卡罗莱纳州燃料电池发电场规模 Oracle回收站使用全攻略 微软这次很诚实:IE真的糟透了 Facebook进军短信业务,挑战微信鼻祖WhatsApp 从菜鸟到专家的五步编程语言学习法 亚马逊企业文化:从书贩到云服务巨头的催化剂 明年Google I/O大会日程敲定 或发Android“酸橙派”? 绝境求生,WebOS寄望Android Facebook在移动路上走过的那些弯路 曙光聂华:推动数据融合 CloudStack Committer李学辉:2013年社区将爆发 继续霸权:美众院否决联合国掌控互联网 墨迹天气创始人金犁:巧用细分市场的力量 Windows 8的IE10在浏览器安全测试中独占鳌头 程序员如何做出“不难看”的设计 JDK6明年2月停止更新,甲骨文呼吁尽快升级至7 《时代》评选年度十大视频游戏,激战2居首 《时代》评选年度十大科技产品,iPhone 5居首 Loopjoy:让开发者在移动游戏里贩售真货 iPhone 5S真机照片泄露 明年初上市 Beeline:从“蓝精灵村庄”到“捉鬼敢死队” Windows Server 2012域服务的六大改进 如何编写出优美的JavaScript代码? Unity CEO:不会因赌博游戏谋取金钱利益 云领域:且看亚马逊、Rackspace、微软及谷歌四国争霸 十一位EMC高管读2013技术趋势 你准备好了吗? Yahoo:拥抱Hadoop和HTML5 苹果聘女黑客为系统安全员 曾让Vista推迟发布 移动游戏定价之谜:0.99美金行不通 9.99美金和19.99美金才是王道 2012末日年:《时代》评选年度十大App 请问win2000_Server的service pack在哪有卖,D版?北京? 安装JBuilder5对机器有什么性能要求吗(内存、cpu...)?Thanks!(内空) 关于PB作为OLE SERVER的问题 我想做个启动画面的窗口 关于MYSQL的问题 数据库高手请进,值得一看 怎么从文本文件里取出其内容? 请大家帮忙看一下,关于Delphi的三层MIS开发 如何获得经典的C++/MFC方面的电子文档,中英都行,谢谢! 压缩中提到的文件头有什么作用 , 请问各位专家,在网页上如何制作视频点播?有几种方式! 我报了中程谁有历年的中程试卷? 我收到的信都是?号,怎么看???? VB中是否有移位操作符??是否有_能够得到数据类型宽度的函数? 哪里有core java的e版down啊? 有事好商量!请进! DLL编程错误,请高手指教一下!! 活见鬼,真气人....... 问一个trigger问题? 问一下:我的char*都用_T("asdfsafd")表示了,资源也没任何问题,可有时候运行程序显示乱码 在论坛里,发一个帖子新开一个窗口,当发完后让原来那个窗口刷新一下 我的机子到底怎么回事???? 我试试.. CListCtrl中如何选定整个一行? 来到济南天气太热,特来送分 ★★★★★ 见于现在伪ID和盗用密码的现象十分嚣张,我提议…… ★★★★★ 请教各位,我用vb6.0访问ms sql7.0数据库,为什么有时出现,“过期,数据已超时?” 请问COM和DLL有什么区别和联系?(30分) 关于侯老师 win95-a-developers-guide 一书的源配书... ISAPI中不能存取ASP中的Session、Application变量?高手你老人家在哪里? 大家来看看这些招聘题目合不合适 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一 activeskin里的skinbuilder有谁用过???来讨论吧 我在msdn上看到vb中的字符串有两种:定长字符串和变长字符串。请问如何分别声明这两种类型? 怎样在ADO中引用已打开的recordset的某一字段值,请给几个例,谢谢了! seedundersnow and holyfire help me!about 8253! 谁有cute ftp 4.2.6 beta的注册码 请问如何把页面查询到的记录导入到Excel中呢? 有用过TAdvStringGrid的吗?OnGetEditorType( )为何不被调用? 请教高手如何用Xsl编制函数控制Xml??急急 哪位给一个MD5的例子!谢谢了 长春的李延生来领分 求救:一个VC中多线程的问题 提个问题,原来对VC尤其是界面和C++语法这一块比较熟,现在由于公司需要转C++BUILDER,难不难,需要熟悉哪些 [总300分,会继续加分]哪位大哥用编程实现过创建SQL Server的DTS package并且run the package的全过程[急] 能不能使用html 压缩中提到的文件头有什么作用 , 保含哪些信息 菜鸟问题1 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一。。。。。。。 关于:import java.util.StringTokenizer; 问题! 如何实现在某特定时间(如每月1号,或7天后)执行特定asp程序? 一块红布子30m,宽1.5m,用它做2条直角三角形都是5分米的等腰直角三角形小旗,可以做多少面? 有一个长3m,宽2m,深1.5m的蓄水池,用一个水管向池内注满水需30分钟,水管每分钟注水量是多少? 一个圆柱形蓄水池底直径是10米,池深1米这个蓄水池的容积是多少立方米 一块长方形红布长20米,宽1.5米,用它做腰是5分米的等腰直角三角形小旗,可以做多少面.求列算式(公式)符号!&*/¥%…#我看不懂 挖一个长5m,宽3m,深2.5m的长方形蓄水池,这个水池的占地面积是( ).A 20平方米 B 15平方米 C 70平方米 一个圆柱形蓄水池,底面直径是10米,池深5米.这个水池的占地面积是多少平方分米?(2)在四周和底面抹上水泥,水泥的面积是多少平方分米?(3)蓄水池的最大容积是多少立方分米? 一块长120分米,宽8分米的红布,剪成腰长是2分米的等腰直角三角形小红旗,可以剪出多少面这样的小红旗? 某工地修了一个长8m宽5m深3m蓄水池,如果每分钟注水200立方分米,注满水池需要多长时间 一个长方体蓄水池长8m,宽4m,深3m.这个蓄水池占地面积是多少平方米?在池底和四周抹水泥,抹水泥的面积多少?蓄水多少立方米? 一块长25分米,宽20分米的长方形红布,裁剪成直角边都是2分米的等腰直角三角形小红旗,最多可以做多少面小红旗?百度知道 一个圆柱形蓄水池,底面半径3m深2.5m这个水池占地多少平方分米 校要建一个底面周长12.56M,高3M的圆柱形蓄水池,这个水池的占地面积是多少 抹水泥的面积有多少平方M? 一块长方形红布,长9厘米,宽6厘米,要用它做成底是2厘米、高度是3厘米的直角三角形小旗,可以做多少面? 一个长方体水池,它的长是50m、宽是2m、深是3m,如果水池中水深1.5m,这个水池有水多少立方米?请快一些~~着急用呀呀呀呀~~谢谢! 某农场挖了一个圆柱型蓄水池,底面直径是3m,高是8m 1要在这个蓄水池的周围和底面上抹上一层水泥,抹水泥的面积是多少平方米?2在这个蓄水池内装满水可以装多少立方米的水 20立方米的水大概有多重? 一个长方体的水池长50m宽20m深3m池内水位高2m 这个水池能装多少吨?【一立方米水重1吨】沿水池走一圈,至少要走多少米?如果给这个水池四周及底面铺上瓷砖,铺瓷砖的面积有多大? 一个圆柱形蓄水池,底面半径2m,深3m,在池底和四周抹上水泥.如果每平方米用水泥20千克,水泥要用多少千克 每立方米水有多重? 一个长方体水池,它的长宽高分别为50m、20m和3m,如果水池中水深1.5米,这个水池中的水有多少立方米?1.到底是求体积还是表面积?如果以后遇到这种问题,怎么判断到底是求体积还是求表面积?2.水 一个长方体水池长5分米宽4分米深3分米,水面离池口4厘米放一块棱长2.1分米的正主体石块水会溢出多少毫升 一个蓄水池,用去存水的70%后,注入100立方米水,这时池内的水正好是原来的50%.这个蓄水池原来有水多少要方程,一步一步解 挖一个的长方体的蓄水池,长7m,宽3m,深2m.若将10.5立方米的沙铺在池底,这时池深多少米? 一个长方体水池,长6米,宽5米,深0.68米,水面距池口18厘米,这个水池里有多少立方米的水? 一个蓄水池,用去70%,注入一百立方m,现在的水正好是原来的一半,原来多少水 一个圆柱形的蓄水池,底面周长是25.12米,深是2.4米,水面离地面0.9米,这个蓄水池现在蓄水多少吨?我不知道是(2.4—0.9)还是直接0.9 水面离地面0.一个圆柱形的蓄水池,底面周长是25.12米,深是2 一个长方体水池长5分米,宽4分米深3分米,水面离池口4厘米放一块棱长2.1分米的正主体石块这时水会溢出吗? 一个蓄水池,用去存水的70%后,注入100立方米水,这时池内的水正好是原来的一半.这个蓄水池原来有水多少立方米 一个圆柱形蓄水池,底面周长是25.12米,深2.4米,水面离地面0.9米.蓄水池蓄水池蓄水多少吨?一个长120厘米的圆柱,把它截成9个小圆柱所得的表面积比总和比截成6个小圆柱所得的表面积总和多180 某化工厂挖了一个蓄水池,能蓄水1080吨.这个蓄水池长24米,宽8米,深是多少米(每立方米的水重1吨 一个蓄水池用去存水的70%后,注入100m3水,这是池内的水正好是原来的一半,这个蓄水池有水多少立方米? 一个圆柱形蓄水池,底面周长是25.12米,深2.4米,水面离地面0.9米.蓄水池蓄水多 一个长18米的长方体蓄水池,现蓄水720吨,池内水深4米,这个水池宽多少米?(1立方米的水重1吨) 一个长方体的蓄水池,长20m,宽18m,深2.5m.池里的水离池口0.5m,池里的水是多少立方米? 一个圆柱形蓄水池,底面周长是9.42米,4米.已知1立方米的水重1吨,这个蓄水池可蓄水多少吨? 一个长方体的蓄水池从里面量长7.6米,宽5米如果池中以蓄水22.8吨池中水深多少米每立方米水重1吨列方程解答一个长方体的蓄水池从里面量长7.6米,宽5米。如果池中以蓄水22.8吨池中水深多少 挖个长10m.宽8米,深5m的长方体蓄水池. 水池能蓄水多少立方米? 一个圆柱形蓄水池,底面周长是18.84,深是2米.这个蓄水池能蓄水多少吨?(1立方米水重1吨)需要公式和计算的过程快快快 一个圆柱形蓄水池,底面半径4米,深5米(1)这个水池能蓄水多少吨?(每立方米水重一吨)若在这个水池的侧面和池底抹上一层水泥,抹水泥的面积多大? 长方体蓄水池长40米,宽15米.深2米,池内现有900立方米的水,水面距池口多少米?很急! 一个圆柱形蓄水池,底面周长31.4米.水面离池口50厘米.再注入多少立方米的水可灌满水池? 一个圆柱形水池,底面半径3米.5米.这个水池最多可盛水多少吨?(1立方米的水重1吨) 一个长方体蓄水池长8.5m,宽4m,深1.5m.这个蓄水池占地面积是多少? 长方形蓄水池占地12平方米,池深1.3米,池内最多能蓄水( )立方米.哪位高人可以快点解答啊?我真的很很很急急急啊啊啊啊! 某动物园有一个圆柱形状的水池内直径10米深0.6米.如果放水后水面离池口0.1米,有水多少吨(1立方米水重1 一种直角三角形的小旗,一条直角边长15厘米,另一条直角边长24厘米,做150面这样的小旗,至少要用红布多少平方米一种直角三角形的小旗,一条直角边长15厘米,另一条直角边长24厘米,做150面这样 有一个圆柱形蓄水池,底面半径为2米,池深20分米,先往池内注入15分米深的水,注入了多少立方米的水? 一个长方体蓄水池,内底面积是13.5平方米,池中已蓄水10.8立方米,已知水的深度是池深的一半,这个蓄水池深多少米?【先用体积除底面积求出水深,再乘2求出池的深度>O 一块红布长3米,宽1,5米,用它做两条直角边都是5分米的直角三角形小旗,可以做多少面? 一个蓄水池的容积是240立方米,它的池深3米,这个蓄水池的占地面积至少是( )平方分米? 请问:一个长方体蓄水池,内底面积是13.5平方米,池中已蓄水1o.8立方米.已知水的深度是池深的一半,这...请问:一个长方体蓄水池,内底面积是13.5平方米,池中已蓄水1o.8立方米.已知水的深度是 一块红布长30米,宽1.5米,用它做两条直角边都是5分米的直角三角形小旗,可以做多少面? 有一个蓄水池如果蓄盛水,可盛600立方米水,已知这个水池长是15米宽是8米,池深应是多少米? 一个长方体蓄水池,占15平方米,池深1.5米,池内最多能蓄水多少立方米?合是多少升 一块红布长30米,宽1.5米,用它做两条直角边分别是5分米、6分米的直角三角形小旗,可以做多少面? 一个圆柱形的蓄水池,底面半径是4m,深2米,这个蓄水池最多能蓄水多少吨?(1立方米重1吨) 一个底面半径10米的圆柱形蓄水池能蓄水1570立方米如果在挖2.5米可以蓄水多少立方米 一块红布长40米,宽20米.用它做两条直角边都是4分米的等腰直角三角形小旗,可以做多少面?请帮请我弄上答案,再告诉我怎样求出的, 一个蓄水池长6m,宽4m,深3m.他的占地面积是多少平方米?最多容纳水多少升?如果在他的四周和底部抹上水泥抹水泥的面积是多少? 挖一个圆柱形蓄水池底面半径是5米,深是4米,这个蓄水池可蓄水多少立方米?(用综合式计算)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn