原创_分享一个通过服务器自动下载更新自己写的DLL_使用经验
学习.交流
专业源于专注
www. onlyit. cn   
学习交流 文件下载 手册资料 交流QQ群

    

 13  1/1   1  
作者
内容
dragonzsp  [个人空间]
QQ名  十二个耳环(187199580)


注册  2011-03-25
发贴数  183
精华数  0
原创贴  4
来自  温州
状态  正常

级别  贵宾
#1»发布于2018-01-08 14:42

     因为使用到自己的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
来自  
状态  正常

级别  会员
#2»发布于2018-01-09 09:24

这个思路非常好,只是用空的人事资料的话,比较碍眼。 
楼主可以试试用文档管理来存放相关的文档, 
然后用get_edoc_file来获取文档,如果dll被使用,是否可以强制关闭dll后再覆盖 
后面那个用空bat拼接的思路不错。


        


dragonzsp  [个人空间]
QQ名  十二个耳环(187199580)


注册  2011-03-25
发贴数  183
精华数  0
原创贴  4
来自  温州
状态  正常

级别  贵宾
#3»发布于2018-01-09 09:59

无所谓,只要能实现就行,不管是空的人事档案还是文档管理。 
另外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
来自  
状态  正常

级别  会员
#4»发布于2018-01-09 11:14

exit()是直接退出了 
有 restart函数吗,像菜单里的那个重新登陆效果


        


htc  [个人空间]


注册  2017-12-30
发贴数  533
精华数  0
原创贴  0
来自  
状态  正常

级别  会员
#5»发布于2018-01-09 11:15

另外,脚本点击菜单,打开了一个新的窗口,不知怎样用计时器 
比如,用脚本打开一个窗口菜单(Speed_Create_button)后5秒无操作就关闭这个窗体 
可否指教下怎样实现?


        


dragonzsp  [个人空间]
QQ名  十二个耳环(187199580)


注册  2011-03-25
发贴数  183
精华数  0
原创贴  4
来自  温州
状态  正常

级别  贵宾
#6»发布于2018-01-09 13:48

软件命令里面没有计时器功能,你可以自己写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
来自  
状态  正常

级别  会员
#7»发布于2018-01-10 09:02

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
来自  温州
状态  正常

级别  贵宾
#8»发布于2018-01-10 21:53

你不会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
来自  
状态  正常

级别  会员
#9»发布于2018-01-11 10:24

谢谢,确实,以为启动过快导致窗口闪动 
下面脚本测试成功 
int main() 

  shell(get_home_path()+"\oclient.exe"); 
  exit(); 
  return 1; 
};




afoo  [个人空间]
QQ名  常德-ZEN


注册  2010-04-08
发贴数  204
精华贴  6
原创贴  6
来自  常德-ZEN
状态  正常

级别  会员
#10»发布于2018-01-11 22:10

这个一定得收藏备用。






官方认证第三方服务团队  蒋逸凡(常德-ZEN) QQ:50636277
服务介绍: http://www.onlyit.cn/user_home?user_id=13498

awfixtdm  [个人空间]


注册  2011-08-18
发贴数  445
精华贴  2
原创贴  5
来自  
状态  正常

级别  版主
#11»发布于2018-01-12 09:55

一直是这么替换自己做的外挂的






QQ:80240800

wuxuguan  [个人空间]


注册  2012-01-07
发贴数  43
精华贴  1
原创贴  0
来自  
状态  正常

级别  会员
#12»发布于2018-01-12 16:27

好贴,留着备用。




ayangzhi  [个人空间]


注册  2010-07-18
发贴数  952
精华贴  1
原创贴  2
来自  
状态  正常

级别  贵宾
#13»发布于2018-02-27 11:57

不错,,,支持分享~~~






杨清云,承接商贸管理、人力资源实施、综合管理实施服务.
可扩展开发WEB, 物联网, 大屏展示报表, 移动端, 微信公众号等.
联系QQ:13836962    TEL:13058180007


 13  1/1   1  

登录后方可发贴


[ 电话: 0571-85462761 王先生 QQ: 124520435 加入软件QQ群 - 杭州 - 浙ICP备19051128号-1 网安 33010402003225 ]