电脑教程中文网
首页  动态网站建设学习 程序  笑话  论坛 娱乐  交友 ADSL  峄城  成功者
中文名:电脑教程中文网,收集了大量的电脑教程! 编程技术文档 游戏开发 笑话站暂时关闭 设为首页
网页设计 HTML | Dreamweaver | CSS | Firework | FrontPage WEB开发 ASP | JSP | PHP | .NET | CGI | JS | VBS | XML | IIS6 | Apache | PWS
程序设计 Java | C++ |VC++ | C# | Delphi | VB | C语言 | 汇编 | Pascal | Perl 数据库 MSSQL | MySQL | Access | VF | Oracle | DB2 | SYBASE |
办公软件 Word | Excel | WPS | PowerPoint 动画平面 Photoshop | ACDSee | 3Dmax | Flash | Coreldraw |
操作系统 Windows 2000 | Windows XP | Windows 2003 | SCO Unix | Windows Vista | unix、Linux | 综合| 服务器 | 系统安全| 黑客技术
其  他 UltraDev | DOS | UML | PWS | Powerbuilder | 开发心得 | 设计理念 | 病毒库 | 其他 | LightTPD (分类排序给您带来不便请谅解)
推  荐: Java文档500篇》《ASP.NET与相关数据库技术高级指南》《TC图形函数详解》《C函数速查手册》《C语言编程宝典之一》《MFC深入浅出》《黑客零起点》《VC++ 编程指南》《JScript 用户指南》 《CSS教程宝典》《Microsoft Jet SQL 参考》《delphi技巧集合》《MySQL 4.1.0 中文参考手册》《MySQL中文手册
【导航】 您现在的位置 : 首页 - Powerbuilder教程 - 《Powerbuilder教程 - 基础教程》- 限制应用程序只运行一次

限制应用程序只运行一次

日期:2005-9-9 17:16:39    作者:佚名   人气:   来源:网络




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后才有效.




网站首页 - 友情链接 - 公司简介 - 联系方式 - 广告投放 - 客户服务 - 错误报告 - 免责声明 - About us
CLDE.NET电脑教程中文网版权所有 未经许可禁止镜象和复制本站资料 MSN:CLDE_NET@hotmail.com
技术支持:CLDE.NET信息中心 鲁ICP备05039940号 友情链接QQ:784079(隐)