开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 鲁凯啸
收起左侧

[已结束] 【NO.0020】禁止重复运行

[复制链接]
发表于 2010-6-18 21:16:45 | 显示全部楼层   浙江省温州市
重复运行源码。
修改了一下

qc重复运行.rar (2.2 KB, 下载次数: 11)

评分

参与人数 1精币 +20 收起 理由
鲁凯啸 + 20 你试着自己运行了么?

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-6-19 20:30:26 | 显示全部楼层   天津市天津市
  1. .版本 2
  2. .支持库 eAPI

  3. .程序集 窗口程序集1

  4. .子程序 __启动窗口_创建完毕
  5. .局部变量 循环, 整数型
  6. .局部变量 重复运行1, 整数型
  7. .局部变量 重复运行2, 整数型
  8. .局部变量 重复运行相减, 整数型

  9. .判断循环首 (循环 = 0)
  10. .如果真 (到数值 (寻找文本 (到文本 (取系统进程列表 ()), 取执行文件名 (), 0, 假)) ≠ -1)
  11. 重复运行1 = 寻找文本 (到文本 (取系统进程列表 ()), 取执行文件名 (), 0, 假)
  12. .如果真结束
  13. .如果真 (到数值 (重复运行2 = 寻找文本 (到文本 (取系统进程列表 ()) + 到文本 (重复运行1), 取执行文件名 (), 0, 假)) ≠ -1)
  14. 重复运行2 = 寻找文本 (到文本 (取系统进程列表 ()) + 到文本 (重复运行1), 取执行文件名 (), 0, 假)
  15. 重复运行相减 = 重复运行2 - 重复运行1
  16. .如果真结束
  17. .如果真 (重复运行相减 = 1)
  18. 信息框 (“程序已重复运行!”, 0, )
  19. 终止进程 (取执行文件名 ())
  20. .如果真结束
  21. _启动窗口.可视 = 真
  22. .判断循环尾 ()
复制代码

===============================
没试过……大概是这个样子吧……

评分

参与人数 1精币 +4 收起 理由
鲁凯啸 + 4 饿~~这个~~~

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-6-19 21:58:25 | 显示全部楼层   浙江省温州市
重复运行源码。
修改了一下



这程序挺好玩,那个支持库怎么办?

用了一个“选择”,一个“信息框 ...
xusteven 发表于 2010-6-18 21:16



   
鲁凯啸 在 半小时前 说:
你试着自己运行了么?
在调试运行的时候就会出错!
本身应该是正常运行的,但是他却说是已经有运行了~


####那是因为你还没生成.exe文件,在用易语言试运行就是这个样子,要生成后就不一样了,而且你改文件名成DLL,在CDM命令 这个是.exe文件,qc重复运行.rar (3.55 KB, 下载次数: 1)

评分

参与人数 1精币 +16 收起 理由
鲁凯啸 + 16 回复内容认真红包鼓励

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (5/5)
发表于 2010-6-20 12:11:58 | 显示全部楼层   吉林省吉林市
  1. .版本 2

  2. 窗口句柄 = 寻找顶级窗口_ (0, “禁止重复运行”)
  3. .判断开始 (窗口句柄 > 0)
  4.     信息框 (“发现重复运行”, 0, )
  5.     恢复窗口_ (窗口句柄)
  6.     结束 ()
  7. .默认
  8.     _启动窗口.标题 = “禁止重复运行”

复制代码

jz代码.rar

239.98 KB, 下载次数: 8, 下载积分: 精币 -2 枚

评分

参与人数 1好评 +1 精币 +20 收起 理由
鲁凯啸 + 1 + 20 谢谢你的支持,请继续努力!

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (21/21)

签到天数: 2 天

发表于 2010-6-21 04:03:24 | 显示全部楼层   福建省福州市
  1. 写到文件 (取特定目录 (11) + “\temp0123.txt”, 到字节集 (1))
  2. .如果真 (打开文件 (取特定目录 (11) + “\temp0123.txt”, #改写, #禁止读写) = 0)
  3.     信息框 (“程序已运行”, 0, )
  4.     结束 ()
复制代码
[e]写到文件 (取特定目录 (11) + “\temp0123.txt”, 到字节集 (1))
.如果真 (打开文件 (取特定目录 (11) + “\temp0123.txt”, #改写, #禁止读写) = 0)
    信息框 (“程序已运行”, 0, )
    结束 ()[/e]

评分

参与人数 1好评 +1 精币 +20 收起 理由
鲁凯啸 + 1 + 20 不同的思路达到相同的目的!请继续~

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-6-21 09:33:08 | 显示全部楼层   福建省厦门市
禁止重复.rar (1.13 KB, 下载次数: 7)

评分

参与人数 1好评 +1 精币 +20 收起 理由
鲁凯啸 + 1 + 20 评价同楼上!继续努力!

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2010-6-22 00:09:39 | 显示全部楼层   贵州省六盘水市
我一班都-----通过创建互斥量来判断:   
不知道和您老胃口不?
      大概就这些了
//---------------------------------------------------------------------------     
  
#include     <vcl.h>     
#pragma     hdrstop     
USERES( "Project1.res ");     
USEFORM( "Unit1.cpp ",     Form1);     
//---------------------------------------------------------------------------     
WINAPI     WinMain(HINSTANCE,     HINSTANCE,     LPSTR,     int)     
{     
                              try     
                              {     
                                                                  Application-> Initialize();     
                                                                  HANDLE     hnd     =     CreateMutex(NULL,TRUE, "No     Previous     Instance! ");     
                                                                      if     (NULL     ==     hnd)     
                                                                      {     
                                                                              MessageBox(NULL, "创建Mutex失败! ", "NoPrev ",MB_OK     &brvbar;MB_SYSTEMMODAL);     
                                                                              return     0;     
                                                                      }     
                                                                      if     (GetLastError()==ERROR_ALREADY_EXISTS)     
                                                                      {     
                                                                              ::MessageBox(NULL, "已经运行了一个实例! ",Application-> Title.c_str(),MB_OK     &brvbar;MB_SYSTEMMODAL);     
                                                                              ReleaseMutex(hnd);     
                                                                              return     0;     
                                                                      }     
                                                                  Application-> CreateForm(__classid(TForm1),     &Form1);     
                                                                  Application-> Run();     
                              }     
                              catch     (Exception     &exception)     
                              {     
                                                                  Application-> ShowException(&exception);     
                              }     
                              return     0;     
}     
//---------------------------------------------------------------------------     
  
二、通过查找系统原子表的方法来判断:     
//---------------------------------------------------------------------------     
  
#include     <vcl.h>     
#pragma     hdrstop     
USERES( "Project1.res ");     
USEFORM( "Unit1.cpp ",     Form1);     
//---------------------------------------------------------------------------     
WINAPI     WinMain(HINSTANCE,     HINSTANCE,     LPSTR,     int)     
{     
                                                                  const     char     *Atom     =     "SingleApp ";     
                              try     
                              {     
                                                                  if     (GlobalFindAtom(Atom)     !=     0)//在系统原子表中找原子     
                                                                  {     
                                                                              ::MessageBox(NULL, "已经运行了一个实例! ",Application-> Title.c_str(),MB_OK     &brvbar;MB_SYSTEMMODAL);     
                                                                              return     0;     
                                                                  }     
                                                                  GlobalAddAtom(Atom);//增加原子     
                                                                  Application-> Initialize();     
                                                                  Application-> CreateForm(__classid(TForm1),     &Form1);     
                                                                  Application-> Run();     
                              }     
                              catch     (Exception     &exception)     
                              {     
                                                                  Application-> ShowException(&exception);     
                              }     
                              GlobalDeleteAtom(GlobalFindAtom(Atom));//删除原子     
                              return     0;     
}     
//---------------------------------------------------------------------------     
  
三、通过FindWindow函数来判断:     
//---------------------------------------------------------------------------     
  
#include     <vcl.h>     
#pragma     hdrstop     
USERES( "Project1.res ");     
USEFORM( "Unit1.cpp ",     Form1);     
//---------------------------------------------------------------------------     
WINAPI     WinMain(HINSTANCE,     HINSTANCE,     LPSTR,     int)     
{     
                              try     
                              {     
                                                                  HWND     hdc     =     FindWindow( "TForm1 ", "Form1 ");     
                                                                  if     (NULL     !=     hdc)     
                                                                  {     
                                                                              ::MessageBox(NULL, "已经运行了一个实例! ",Application-> Title.c_str(),MB_OK     &brvbar;MB_SYSTEMMODAL);     
                                                                              return     0;     
                                                                  }     
                                                                  Application-> Initialize();     
                                                                  Application-> CreateForm(__classid(TForm1),     &Form1);     
                                                                  Application-> Run();     
                              }     
                              catch     (Exception     &exception)     
                              {     
                                                                  Application-> ShowException(&exception);     
                              }     
                              return     0;     
}     
//---------------------------------------------------------------------------

评分

参与人数 1精币 +20 收起 理由
鲁凯啸 + 20 看你的思路~~也行!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2010-6-22 14:31:46 | 显示全部楼层   浙江省温州市
不知道符不符合要求
不过效果是达到了
源码和EXE都带了

作业.rar

3.38 KB, 下载次数: 5, 下载积分: 精币 -2 枚

评分

参与人数 1精币 +12 收起 理由
鲁凯啸 + 12 非正常关闭后出现问题!

查看全部评分

回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:45% (20/44)
发表于 2010-6-24 11:50:51 | 显示全部楼层   河南省新乡市
直接检测进程就可以的,最简单有效...

评分

参与人数 1精币 +8 收起 理由
鲁凯啸 + 8 你能固定进程的信息么?

查看全部评分

回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2010-6-25 09:38:19 | 显示全部楼层   重庆市重庆市
我也来热闹一下 test.zip (258.35 KB, 下载次数: 5)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表