原创_分享一个通过服务器自动下载更新自己写的DLL_使用经验
作者 |
|
dragonzsp [个人空间] QQ名 十二个耳环(187199580)
注册  2011-03-25 发贴数 183 精华数 0 原创贴 4 来自 温州 状态 正常
级别 贵宾 |
|
|
因为使用到自己的DLL,寻思DLL更新或者如果是新加入的电脑,每次都要过去更新这个自己的DLL,感觉太累,所以构思了这个脚本,实现只要更新服务器,客户端的DLL自动实现更新自己的DLL功能。 首先我在员工资料中创建一个不存在的人物资料当载体,在员工资料编辑界面的相关文件中,添加文件类型dll和bat2个,然后在这个创建的人物资料中把自己的DLL上传上去,文件类型为dll,然后再搞个空的文本文档,里面打个空格保存为bat文件,也上传上去,文件类型为bat。 到这里我们的前期工作已经做好,然后就是脚本了,脚本代码如下: int main() { string ver,sPath,sBatP,sData,shome; //通过调用自己的DLL上的版本号功能做对比,判断客户端是否存在指定版本的自己的DLL call_user_dll("onlyitdll.dll","fun_GetVer",""); ver=get_user_dll_result(); if(ver!="onlyitdll当前版本号:20180108")//后期每次自己的DLL更新,版本号更新掉,这个脚本这里修改下就行 了 { //到这里,说明要么客户端没有DLL,或者DLL版本号不对 shome=get_home_path()+"\dll\onlyitdll.dll";//获取DLL存放的目标完整路径 sPath=get_emp_file("0002","dll");//通过get_emp_file下载自己的DLL,这个会下载到tmp文件夹中,文件名随机,函数会返回完整的文件全路径,前面的emp_id是我存放的载体人物ID sBatP=get_emp_file("0002","bat");//下载空的bat文件,我们需要动态添加数据进去 sData=nl()+"copy "+sPath+" "+shome+" ";//组合需要添加的数据,通过bat实现文件的复制功能,记得开头的nl()必须要加,不然执行会失败 file_write(sBatP,sData);//写到bat文件中 shell(sBatP);//执行bat文件,实现文件复制 msg("DLL更新完毕,请重新启动软件"); exit();//退出软件,要求用户重启 return 1; } //到这里说明客户端上已经有我们制定版本的自己的DLL call_user_dll("onlyitdll.dll","Dll_init",""); return 1; }; 这段脚本放在主窗口脚本定义中,后期自己更新DLL,只需要重新上传这个DLL和更新这个脚本的版本号就行了。 |
|
|
官方认证第三方服务团队 QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1
|
|
htc [个人空间]
注册  2017-12-30 发贴数 533 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
|
这个思路非常好,只是用空的人事资料的话,比较碍眼。 楼主可以试试用文档管理来存放相关的文档, 然后用get_edoc_file来获取文档,如果dll被使用,是否可以强制关闭dll后再覆盖 后面那个用空bat拼接的思路不错。 |
|
|
|
|
dragonzsp [个人空间] QQ名 十二个耳环(187199580)
注册  2011-03-25 发贴数 183 精华数 0 原创贴 4 来自 温州 状态 正常
级别 贵宾 |
|
|
无所谓,只要能实现就行,不管是空的人事档案还是文档管理。 另外dll如果被使用,用bat执行文件复制,会实现强制覆盖,不管dll是否正在被使用。 所以脚本中dll更新完毕后必须调用exit函数关闭软件让用户重启,实现加载最新dll的目的 |
|
|
官方认证第三方服务团队 QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1
|
|
htc [个人空间]
注册  2017-12-30 发贴数 533 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
|
exit()是直接退出了 有 restart函数吗,像菜单里的那个重新登陆效果 |
|
|
|
|
htc [个人空间]
注册  2017-12-30 发贴数 533 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
|
另外,脚本点击菜单,打开了一个新的窗口,不知怎样用计时器 比如,用脚本打开一个窗口菜单(Speed_Create_button)后5秒无操作就关闭这个窗体 可否指教下怎样实现? |
|
|
|
|
dragonzsp [个人空间] QQ名 十二个耳环(187199580)
注册  2011-03-25 发贴数 183 精华数 0 原创贴 4 来自 温州 状态 正常
级别 贵宾 |
|
|
软件命令里面没有计时器功能,你可以自己写DLL去实现 menu_trigger_click("N_Restart") 重新登录,你替换exit()试试 |
|
|
于 2018-01-09 13:48 被 dragonzsp 修改
官方认证第三方服务团队 QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1
|
|
htc [个人空间]
注册  2017-12-30 发贴数 533 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
|
menu_trigger_click("N_Restart") 在下面的两个情况下有可能失效: 1、在点击其它菜单下 2、在隐藏 main_menu下,又点击了其它菜单情况 我现在的方法是用bat,kill进程,再开程序。 tasklist|findstr /i client.ex && taskkill /f /im client.ex 但这有个缺点,如果一台电脑开了两个客户端,就会通杀了。 bat没找到办法怎样获取当前窗口所在的活动进程。 |
|
|
于 2018-01-10 09:02 被 htc 修改
|
|
dragonzsp [个人空间] QQ名 十二个耳环(187199580)
注册  2011-03-25 发贴数 183 精华数 0 原创贴 4 来自 温州 状态 正常
级别 贵宾 |
|
|
你不会bat里面只写重启软件功能,关闭用exit脚本命令关闭啊 |
|
|
官方认证第三方服务团队 QQ:187199580
收费教程地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=7&topic_id=102140&topic_page_id=1
手机收费版本地址链接:http://www.onlyit.cn/topic_list_detail?subject_id=3&topic_id=103479&topic_page_id=1
|
|
htc [个人空间]
注册  2017-12-30 发贴数 533 精华数 0 原创贴 0 来自 状态 正常
级别 会员 |
|
|
谢谢,确实,以为启动过快导致窗口闪动 下面脚本测试成功 int main() { shell(get_home_path()+"\oclient.exe"); exit(); return 1; }; |
|
|
|
|
afoo [个人空间] QQ名 常德-ZEN
注册  2010-04-08 发贴数 204 精华贴 6 原创贴 6 来自 常德-ZEN 状态 正常
级别 会员 |
|
|
|
|
官方认证第三方服务团队 蒋逸凡(常德-ZEN) QQ:50636277
服务介绍: http://www.onlyit.cn/user_home?user_id=13498
|
|
awfixtdm [个人空间]
注册  2011-08-18 发贴数 445 精华贴 2 原创贴 5 来自 状态 正常
级别 版主 |
|
|
|
|
QQ:80240800
|
|
wuxuguan [个人空间]
注册  2012-01-07 发贴数 43 精华贴 1 原创贴 0 来自 状态 正常
级别 会员 |
|
ayangzhi [个人空间]
注册  2010-07-18 发贴数 952 精华贴 1 原创贴 2 来自 状态 正常
级别 贵宾 |
|
|
|
|
杨清云,承接商贸管理、人力资源实施、综合管理实施服务.
可扩展开发WEB, 物联网, 大屏展示报表, 移动端, 微信公众号等.
联系QQ:13836962 TEL:13058180007
|
|
|
|