社区
C++ Builder
帖子详情
怎样防止程序多次运行?
tanjianxun
2003-07-12 08:31:11
谢谢
...全文
46
4
打赏
收藏
怎样防止程序多次运行?
谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
叶子哟
2003-07-12
打赏
举报
回复
有多种方法:看这种,只在2k里试过
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HANDLE mutex;
try
{
const char mutexname[] = "BJHYIEHook";
mutex = OpenMutex( MUTEX_ALL_ACCESS, false, mutexname );
if( mutex == NULL )
{
mutex= CreateMutex( NULL, true, mutexname );
if( mutex == NULL )
{
return -1;
}
}
else
{
return 0;
}
Application->Initialize();
Application->CreateForm(__classid(TIEHookForm), &IEHookForm);
Application->CreateForm(__classid(TForm2), &Form2);
// Application->ShowMainForm=false;
// SetWindowLong(Application->Handle, GWL_EXSTYLE, GetWindowLong(Application->Handle,GWL_EXSTYLE)|WS_EX_TOOLWINDOW);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
ReleaseMutex( mutex );
return 0;
}
射天狼
2003-07-12
打赏
举报
回复
Private Sub Form_Load()
If App.PrevInstance Then End
End Sub
hhdsq
2003-07-12
打赏
举报
回复
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
HWND hHwndOpen=OpenFileMapping(FILE_MAP_READ,false,"thename");
if (hHwndOpen)
{
return 0;
}
else
{
HWND hHwnd=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,128,"thename");
if (hHwnd==NULL)
ShowMessage("CreateFileMapping Failed");
}
try
{
Application->Initialize();
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;
}
zsloyes
2003-07-12
打赏
举报
回复
我觉得我的简单些!打开工程文件的CPP文件
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
Application->Title ="";
HWND hPrevApp = ::FindWindow(NULL, "你的程序名称");//也就是Application->Title
if(hPrevApp)
{
PostMessage(hPrevApp, WM_SYSCOMMAND, SC_RESTORE, 0);
Application->MessageBox("我的程序已经在运行!","提示",
MB_OK+MB_ICONWARNING);
return 0;
}
else
Application->Title = "你的程序名称";
try
{
Application->Initialize();
Application->Title = "你的程序名称";
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
DirectX修复工具 V3.3增强 绿色版
DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本
程序
为绿色版,无需安装,可直接
运行
。 本
程序
的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。
程序
主要针对0xc000007b问题设计,可以完美修复该问题。本
程序
中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 本
程序
为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,
程序
就会自动完成校验、检测、下载、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本
程序
适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10,同时兼容32位操作系统和64位操作系统。本
程序
会根据系统的不同,自动调整任务模式,无需用户进行设置。 本
程序
的V3.3版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。除此之外,增强版中还额外包含了c++ Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c++组件异常产生的问题。增强版适合无法自行解决c++相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了
程序
的体积。本
程序
的各个版本之间,主
程序
完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,
程序
将进行标准修复;当您使用增强版的数据包时,
程序
将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe
程序
)时,
程序
将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本
程序
自V2.0版起采用全新的底层
程序
架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新
程序
更改了自我校验方式,因此使用新版本的
程序
时不会再出现自我校验失败的错误;但并非取消自我校验,因此
程序
安全性与之前版本相同,并未降低。
程序
有自动更新c++功能。由于绝大多数软件
运行
时需要c++的支持,并且c++的异常也会导致0xc000007b错误,因此
程序
在检测修复的同时,也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包,可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版,标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。
程序
有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本
程序
内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开
程序
所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。
程序
有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在
程序
目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本
程序
有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。
程序
的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的
程序
组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版
程序
集成了用户反馈
程序
,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈
程序
和软件作者进行交流,共同查找问题。反馈是完全自愿和匿名(如果不填写E-mail地址)的。 本
程序
的通用版基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本方可
运行
本
程序
。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7及后续用户,可以直接
运行
本
程序
。 同时鉴于Windows 8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中默认未包含.NET Framework 2.0,因此新版的
程序
文件夹内将包含一个DirectX_Repair_win8的特别版
程序
,该
程序
功能与通用版相同,基于.NET Framework 4.0开发,可以在Windows8(Windows 8.1、Windows 8.1 Update)、Windows 10系统中直接
运行
(其他系统如果安装了.NET Framework 4.0也可以
运行
这个特别版的
程序
)。 本
程序
的官方博客地址为:http://blog.csdn.net/vbcom/article/details/6962388 所有的更新以及技术支持都可以到该博客上找到。
python
程序
多次
运行
_python如何避免脚本重复
运行
?
这种需求很常见,最常使用的技术就是互斥锁。例如某个服务
运行
后,生成一个 PID 文件,里面写入当前
运行
的进程 PID,
运行
结束后主动删除这个文件。当有其他进程
运行
时,先检查这个文件及对应的进程是否存在,存在就是正在
运行
,否则就可以
运行
。现成的例子可以参考 Linux 系统的 /run 目录下的 *.pid 文件。Windows 系统也是一样,存放在固定的路径就行。这里有几个注意点:PID 锁文件的...
2020版小
程序
框架Mpvue入门教程(全开源)
mpvue 是一个使用 Vue.js 开发小
程序
的前端框架。框架基于 Vue.js 核心, 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以
运行
在小
程序
环境中,从而为小
程序
开发引入了整套 Vue.js 开发体验。本课程以项目实战为驱动,深入对比mpvue与vue的区别,帮你迅速打通从vue到多端小
程序
的任督二脉,让你站在巨人的肩膀上,“一次开发,到处
运行
”。输入的是vue代码,输出的是微信小
程序
,百度小
程序
,支付宝小
程序
,头条小
程序
。
防止
C++
程序
重复
运行
的几种方法
今天给自己的
程序
加了
防止
重复
运行
的功能.用的是创建互斥量的方法,感觉还不错. 下面的帖子转自http://bbs.cfan.com.cn/viewthread.php?tid=793295 有时候,为了某些要求,我们希望
程序
实例只
运行
一次。而在VB6中,我们可以很轻易的根据App.hPreInstance来判断
程序
是否已经
运行
。但是在C++中,这一切就变得不是那么容易。
c语言中如何让一个完整的
程序
多次
运行
许多新手小白编写一个完整的
程序
执行后,每次只能
运行
一此。然后只能关闭
程序
窗口再次
运行
。这人我们非常苦恼。那么如何让我们的
程序
窗口
多次
执行呢?break;}在循环while最后我们读入一个字符y让
程序
结束但此时多打印了while(1)循环中所有的printf()内容。此时我们发现表达语句中存在问题,于是我们改变表达语句中的内容。{int i, n;char c;i
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章