|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
数据库技术
→
『 VFP论坛 』
→ 这样防止已经运行的程序再次运行?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1542
人关注过本帖,
1
人收藏
标题:
这样防止已经运行的程序再次运行?
只看楼主
加入收藏
ptyy803
来 自:上海
等 级:
论坛游民
威 望:
2
帖 子:193
专家分:64
注 册:2009-6-11
第
11
楼
收藏
得分:0
对八楼的看法:程序正常运行是最基本的,如不能正常退出则就不能让用户使用,我说的是非程序技术原因,而是人为造成的,如:死机、其他运行软件造成的死机现象,还有停电、或主机放的位置很可能造成脚碰到了主机的开关和复位开关,这也是经常发生的事,如按你的做法,就得系统管理员去到数据表中修改,既然想到了就得考虑的全面点,尽量减少要程序员去修改的数据表的问题,这才是合格全面的程序员。不好意思,互相学习,取长补短。
2011-07-09 16:39
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
12
楼
收藏
得分:0
我不知道你要管理員去改數據庫是什麽意思。程序用低級文件處理任何文件你不會嗎?數據庫文件頭部有空白區域你不知道嗎?在空白區域寫信息,數據庫自己是用不到的,不會影響數據庫打開,也不會改變數據庫中的數據,這些東西你都不知道?把數據庫文件頭部砍掉一截,必須用你自己的程序打開,這種做法你試過沒有?
授人以渔,不授人以鱼。
2011-07-09 16:57
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
13
楼
收藏
得分:0
這種情況,分別對應三種狀態:全新、啓動使用中、非正常退出過。用二進制的兩位就可以表示,00、01、10,程序啓動時檢查這個標誌,即知當前狀態。在任何一個dbf文件中,從頭開始往下數第13個字節,有16字節的空白區,是數據庫沒用的,在這個位置拿一個字節的兩位寫信息,也從這裏讀。在這樣的區域,寫什麽東西都不會影響數據庫的打開和處理,這種地方多的是,關鍵是人家不知道你在哪個位置寫東西、意味著什麽就行了。早時,在BMP文件暗藏病毒代碼,也是這樣做。
如果你不敢直接在數據庫中寫數據,就自己寫一個1Byte的文件唄,找好藏身之處就行了,設置爲隱藏的也可以,方法多得很。如果是以前,我直接在硬盤的空白區寫。
[
本帖最后由 TonyDeng 于 2011-7-9 17:26 编辑
]
授人以渔,不授人以鱼。
2011-07-09 17:09
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
14
楼
收藏
得分:0
說句不好聽的,你重要的工作程序在經常遇到停電、掉電、死機的環境中運行,很自豪嗎?服務器都告誡人們不要在上面運行太多無關的程序,關掉不需要的服務,幹嘛用的?哦,你寫個程序,它在運行,另一方面在看影碟、聊QQ、打遊戲,造成系統死機,卻說這很正常?
我又想請教一下:你程序中打開了數據庫,正在寫數據的瞬間掉電了,要不要請管理員修復數據庫?你如何保證這一點的,就能保證非正常退出時那種情況!
[
本帖最后由 TonyDeng 于 2011-7-9 17:59 编辑
]
授人以渔,不授人以鱼。
2011-07-09 17:34
举报帖子
使用道具
赠送鲜花
ptyy803
来 自:上海
等 级:
论坛游民
威 望:
2
帖 子:193
专家分:64
注 册:2009-6-11
第
15
楼
收藏
得分:0
还正不知上面这位朋友你编写过多少大型数据库软件,咳,无语。。。。。。。
2011-07-09 21:54
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
16
楼
收藏
得分:0
个人认为通过设置标志来判断程序是否重复运行有一定的局限性,采用4楼的方法应该会更合理些。
如果是单机版程序,也可以利用数据库无法重复打开的特性,在主程序打开数据库(或独占打开某个表文件)之前用on error语句进行判断,如打开时出错,则提示用户检查程序是否重复运行,或者是文件出错。
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-07-13 17:23
举报帖子
使用道具
赠送鲜花
ptyy803
来 自:上海
等 级:
论坛游民
威 望:
2
帖 子:193
专家分:64
注 册:2009-6-11
第
17
楼
收藏
得分:0
回复16楼:按照4楼的代码运行过的,但还是出错,请指教。
2011-07-15 20:34
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
18
楼
收藏
得分:0
非常抱歉,我还没有考虑过在程序中加入防止重复运行的功能。原来曾经在网上看到过通过检测WINDOWS窗口标题的方式来防止重复运行,但我没有测试过。下面的这个链接也许对你有用:
http://www.
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-07-15 22:06
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
19
楼
收藏
得分:0
http://www.
上面的链接也可以参考,具体内容粘贴如下:
在主程序加上
DECLARE integer FindWindow in win32api string cClass,String cCaption
cCaption="你的主程序界面Caption值"
IF FindWindow(0,cCaption)#0
_SCREEN.caption=cCaption
=messagebox("本程序已经运行,请查看任务栏!",64,"信息提示")
RETURN .F.
ENDIF
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-07-15 22:09
举报帖子
使用道具
赠送鲜花
qingfameng
等 级:
贵宾
威 望:
35
帖 子:964
专家分:3019
注 册:2010-2-6
第
20
楼
收藏
得分:0
支持 4楼 19 楼的见解。
2011-07-16 00:08
举报帖子
使用道具
赠送鲜花
33
2/4页
1
2
3
4
快速回复:
这样防止已经运行的程序再次运行?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.032082 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved