CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

请问,怎样控制用户对某一程序只能同时运行一次?

楼主wonderlove(wonderlove)2004-04-04 18:46:30 在 VB / 基础类 提问

就是说,当该程序在运行时,用户又再次想运行该程序,怎样避免此种情况? 问题点数:0、回复次数:10Top

1 楼pcwak()回复于 2004-04-04 18:50:58 得分 0

工程-->属性-->生成-->图示  
  文件-->生成EXETop

2 楼lxqlogo0(群子)回复于 2004-04-04 18:54:35 得分 0

Private   Sub   Form_Load()  
  If   App.PrevInstance   =   True   Then  
  MsgBox   "程序已经在运行中"  
  End  
  End   If  
  End   Sub  
  Top

3 楼pcwak()回复于 2004-04-04 18:54:59 得分 0

晕,回错帖Top

4 楼VBDN( PowerBASIC.CN )回复于 2004-04-04 19:09:30 得分 0

可以利用App对象的PrevInstance属性。  
  PrevInstance属性返回一个值,该值指示是否已经有前一个应用程序实例在运行。  
  事例代码如下:  
  Private   Sub   Form_Load()          
          If   App.PrevInstance   Then  
                  MsgBox   "程序已在运行中!"  
                  End  
          End   If  
  End   SubTop

5 楼VBDN( PowerBASIC.CN )回复于 2004-04-04 19:11:54 得分 0

书剑狂生的意思是,上面的程序在开发环境中不能测试,需要生成可执行程序后才有效Top

6 楼kmzs(.:RNPA:.山水岿濛)回复于 2004-04-04 19:16:52 得分 0

嗯Top

7 楼pcwak()回复于 2004-04-04 19:19:06 得分 0

也可以用FindWindow查找窗体是否存在  
  Dim   loghwnd   As   Long  
  Private   Sub   Form_Load()  
          loghwnd   =   FindWindow(vbNullString,   vbNullString)     '在这里修改你的参数  
          If   loghwnd   <>   0   Then  
                  MsgBox   "程序已经运行"  
                  End  
          End   If  
  End   Sub  
   
   
  【VB声明】  
      Private   Declare   Function   FindWindow   Lib   "user32"   Alias   "FindWindowA"   (ByVal   lpClassName   As   String,   ByVal   lpWindowName   As   String)   As   Long  
   
  【别名】  
      FindWindowA  
   
  【说明】  
      寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题)    
   
  【返回值】  
      Long,找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError    
   
  【备注】  
      很少要求同时按类与窗口名搜索。为向自己不准备参数传递一个零,最简便的办法是传递vbNullString常数  
      示例  
      Dim   hw&   ,   cnt&  
      Dim   rttitle   As   String   *   256  
      hw&     =   FindWindow("ThunderRT5Main",   vbNullString)   '   ThunderRTMain   under   VB4  
      cnt   =   GetWindowText(hw&   ,   rttitle,   255)  
      MsgBox   Left$(rttitle,   cnt),   0,   "RTMain   title"  
   
  【参数表】  
      lpClassName   ----     String,指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类  
   
      lpWindowName   ---     String,指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题  
   
  Top

8 楼yinweihong()回复于 2004-04-04 19:28:15 得分 0

markTop

9 楼liyan010(我是大坏蛋)回复于 2004-04-04 19:34:32 得分 0

If   App.PrevInstance   =   True   Then  
          End  
  End   if  
  Top

10 楼liyan010(我是大坏蛋)回复于 2004-04-04 19:35:28 得分 0

pcwak(书剑狂生[MS   MVP]),晕,这也能回错帖啊?  
   
  你是不是用什么发帖软件回的帖啊?Top

相关问题

  • 如何控制程序运行次数?
  • Win2000控制面板里的“用户和密码”是运行的哪个应用程序?
  • 100分 在线等待 鼠标问题---要求我的程序在运行期间鼠标指针不受用户控制
  • 请问为什么在WINDOWS2000中以域控制身份装的程序,一般的用户为什么不能运行,比喻说LOTUS
  • 怎样控制程序在DOS命令运行完毕后再继续运行?
  • 奇怪!!!!控制台程序运行时为什么还要USER32.DLL????
  • 如何取消WIN32控制台程序运行时的界面!
  • 如何在VC控制台下运行C程序
  • 外部硬件信号控制程序运行问题!
  • 如何在给定窗口运行一个控制台程序

关键词

  • 属性
  • vb
  • 运行
  • 程序
  • previnstance
  • loghwnd
  • 句柄
  • findwindow
  • vbnullstring
  • rttitle

得分解答快速导航

  • 帖主:wonderlove

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo