Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 限制应用程序只运行一次?
【标  题】:限制应用程序只运行一次?
【关键字】:
【来  源】:http://www.cublog.cn/u/16747/showart.php?id=109410

限制应用程序只运行一次?

Your Ad Here
提供两种实现方法(用于32位操作系统):
  1.首先在global external functions声明外部函数如下:
  FUNCTION long FindWindowA( ulong Winhandle, string wintitle ) Library ″user32″
  然后在application的 Open 事件中加入如下代码:
  ulong l_handle, lu_class
  string ls_name
  ls_name = ″我的系统″ // 此处ls_name为系统主窗口的标题Title
  l_handle = FindWindowA(lu_class, ls_name)
  if l_handle > 0 then
  MessageBox(″提示信息″, ″应用程序″ + This.AppName + ″已经运行,不能多次启动!″)
  Halt Close
  else
  open(w_main) // 此处为系统主窗口
  end if
  这种方法是PowerBuilder联机帮助中的一个例子,是以系统主窗口的标题Title作为判别依据,若有其它与此Title同名应用程序在运行,再想启动此程序也会报应用程序已经运行。你可以将Title设为“计算器”,然后启动Windows附件中计算器程序,再运行你的PB应用程序试试。
  2.声明外部函数:
  function ulong CreateMutexA (ulong lpMutexAttributes, int bInitialOwner, ref string lpName) library ″kernel32.dll″
  function ulong GetLastError () library ″kernel32.dll″
  然后在application的 Open 事件中加入如下代码:
  ulong ll_mutex, ll_err
  string ls_mutex_name
  if handle (GetApplication (), false) <> 0 then
  ls_mutex_name = this.AppName + char (0)
  ll_mutex = CreateMutexA (0, 0, ls_mutex_name)
  ll_err = GetLastError ()
  if ll_err = 183 then
  // 程序已经运行
  MessageBox (″提示信息″, ″程序已经运行了!″)
  Halt close
  else
  // 程序未运行
  open(w_main)
  end if
  else //开发模式
  open(w_main)
  end if
  这种方法必须在应用程序编译成可执行文件.exe后才有效。
动态地切换输入法:【上一篇】
我的嵌入式之路[转]:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 技术万岁,我们一起成长
  • 简单介绍HACMP中的资源组!
  • 珊瑚虫3.0.3亲身体验
  • JDBC
  • 也来谈谈工厂模式
  • WIN2000+ PHP+ MYSQL+ TOMCAT+ JSP完全整合安装手册(3)
  • bind编译安装
  • 项目经验-胡晶玉
  • 采用面向对象设计和c++的数据通讯
  • 把一段字符串解析成Guid数组的SQL自定义函数
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.