CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  VCL组件使用和开发

如何做到只允许一个实例运行?

楼主AeLord(独孤C++)2002-12-27 19:42:16 在 C++ Builder / VCL组件使用和开发 提问

各位请帮忙! 问题点数:20、回复次数:6Top

1 楼invalid(空心菜(Python是个好东东,大家多用用!))回复于 2002-12-27 20:13:56 得分 0

老问题了,搜索吧,关键字实例应该可以的。Top

2 楼AeLord(独孤C++)回复于 2002-12-27 20:29:31 得分 0

知道怎么办了。:)Top

3 楼bcbsoft(苍之雪)回复于 2002-12-27 20:37:55 得分 10

在《C++Builder深度历险》这本书中有很详细的说明  
   
  以下工程.H文件:可以实现已运行的程序在最小化时再运行第二个时还原第一个程序。。。。。  
  #include   <vcl.h>  
  #pragma   hdrstop  
  //---------------------------------------------------------------------------  
  USEFORM("Unit1.cpp",   Form1);  
  //---------------------------------------------------------------------------  
  WINAPI   WinMain(HINSTANCE,   HINSTANCE,   LPSTR,   int)  
  {  
      HWND   AppWnd=FindWindow("TApplication","Shally   Title");  
      if(AppWnd)  
      {  
          if(IsIconic(AppWnd))  
          {  
              ShowWindow(AppWnd,SW_RESTORE);  
          }  
          else  
          {  
              SetForegroundWindow(AppWnd);  
          }      
          return   0;  
      }  
   
                  try  
                  {  
                                    Application->Initialize();  
                                    Application->Title="Shally   Title";  
                                    Application->CreateForm(__classid(TForm1),   &Form1);  
                                    Application->Run();  
                  }  
                  catch   (Exception   &exception)  
                  {  
                                    Application->ShowException(&exception);  
                  }  
                  catch   (...)  
                  {  
                                    try  
                                    {  
                                                    throw   Exception("");  
                                    }  
                                    catch   (Exception   &exception)  
                                    {  
                                                    Application->ShowException(&exception);  
                                    }  
                  }  
                  return   0;  
  }  
  //---------------------------------------------------------------------------Top

4 楼binbin(破坏分子)回复于 2002-12-27 22:21:40 得分 0

findwindow  
  互斥量  
  注册热键  
  ...Top

5 楼HUANG_JH(保卫钓鱼岛)回复于 2002-12-27 22:27:59 得分 10

WINAPI   WinMain(HINSTANCE,   HINSTANCE,   LPSTR,   int)  
  {  
          HANDLE     hMutexHandle   =   CreateMutex(NULL,true,"Application   Already   Run!");  
   
          if   (GetLastError()!=ERROR_ALREADY_EXISTS)  
          {  
                  try  
                  {  
   
   
                          Application->Initialize();  
                          .......  
                          Application->Run();  
   
                  }  
                  catch   (Exception   &exception)  
                  {  
                          Application->ShowException(&exception);  
                  }  
          }  
          else  
          {  
                  Application->MessageBox("Application   Already   Run!","Warnning",   MB_OK|MB_ICONWARNING);  
          }  
          ReleaseMutex(hMutexHandle);  
          CloseHandle(hMutexHandle);  
          return   0;  
   
  }  
  Top

6 楼penu(懒猫·子在川上之再上征程·杀人无心之寓怒于静)回复于 2003-01-07 11:35:39 得分 0

有个最简单的方法:  
  在CB6的Examples中有个控件:在\Controls\SingleInst目录下。  
  打开包编译并安装,在组件面板中会增加一个控件SingleInst,把它拉到你的Form中,设为有效就行了。Top

相关问题

  • 如何让程序单实例运行?
  • 如何在eclipse中运行hibernate实例
  • 如何防止运行应用的多个实例?
  • dll中如何在运行期间创建TADOQuery实例
  • 如何得知程序的一个实例正在运行?
  • 如何只运行一个实例出了个问题
  • 在C#中如何让程序只运行一个实例
  • 如何让一个程序只有一个实例在运行?
  • 如何防止程序运行多个实例?
  • 如何让PB仅运行一个实例

关键词

  • application
  • appwnd
  • hmutexhandle
  • showexception
  • hinstance
  • exception
  • already
  • catch
  • run
  • try

得分解答快速导航

  • 帖主:AeLord
  • bcbsoft
  • HUANG_JH

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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