| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> delphi >> 入门技巧 >> 文章正文
如何实现你的程序真正运行一次            【字体:
如何实现你的程序真正运行一次
作者:-    文章来源:-    点击数:    更新时间:2006-12-31

 

没写过多少东西,不知道从何下手,简单的说吧.
1.在dpr文件中引用RunOnce.pas中的Running_EnumWindows过程;整个代码如下:
program Yanbin;


uses
  Forms,
  main in 'main.pas' {mainfrm},
  RunOnce in 'RunOnce.pas';


{$R *.res}


begin
  Running_EnumWindows;
  Application.Initialize;
  Application.Title := '燕冰定时播报系统XP版';
  Application.CreateForm(Tmainfrm, mainfrm);
  Application.NormalizeTopMosts;
  Application.Run;
end.
下面是RunOnce.pas的代码:
unit RunOnce;


interface


uses windows,Forms;
  function EnumApps(Wnd: HWnd;LPARAM: lParam): boolean; stdcall;
  procedure Running_CreateMutex;
  procedure Running_FindWindows;
  procedure Running_EnumWindows;
implementation
uses main;


function EnumApps(Wnd: HWnd;LPARAM: lParam): boolean; stdcall;
var WndCaption : array[0..254] of char;
begin
    Result := True;
    GetWindowText(Wnd,@WndCaption, 254);//获取窗口的Caption
    if(Pos('燕冰定时播报系统XP版',WndCaption)>=1)then  //如果窗口的Caption含某字符串
    begin
       if IsIconic(Wnd) then        //如果已被最小化
         begin
          ShowWindow(Wnd,SW_RESTORE or SW_SHOWNORMAL );//则把它恢复
          MessageBox(0,'已经最小化!','提示信息', mb_IconHand);
          end
       else    //如果窗口被其他窗口遮住,则将它提到前景来
         begin
          application.Restore;
          application.BringToFront ;
 //         SetForegroundWindow(Wnd);
       //   sendmessage()
          //          MessageBox(0,'提到最前!','提示信息', mb_IconHand);
         end;
       flashwindow(wnd,True);
       Result:=False;
       Halt; //结束本程序
    end;
end;


procedure Running_CreateMutex;
var MutexHandle: THandle;
begin
     //建立一个用'燕冰定时播报系统XP版'来命名的唯一标记
     MutexHandle := CreateMutex(nil, TRUE, '燕冰定时播报系统XP版');
     if MutexHandle <> 0 then//如果建立失败,
     begin  //并且错误信息是“唯一标记已存在”,则表明本程序已运行;
        if GetLastError = ERROR_ALREADY_EXISTS then
        begin
           MessageBox(0,'燕冰定时播报系统已经运行!','提示信息', mb_IconHand);
           CloseHandle(MutexHandle);
           Halt;//结束本程序
        end
     end;
end;


[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 用友华表Cell组件报表工具:…

  • Cell组件/插件---实现报表复…

  • Cell组件插件报表工具-让报表…

  • 报表设计从C/S到B/S结构的一…

  • 用友华表,天涯之外谁的江湖…

  • 用友华表Cell插件,优秀的We…

  • 我与用友华表Cell产品的亲密…

  • 适用的就是最好的

  • 与用友华表共成长- Cell产品…

  • 用友华表Cell产品使用有感

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |