VS2015 C++ 海鼎MPOS更新程序
场景:需要使用U盘内文件夹覆盖至D盘,用于替代手动操作
其中用到的有
1,使用oftream写入文件
2,使用shappmgr.h,勾选自动隐藏任务栏
3,使用VBS创建快捷方式
4,使用批处理获取当前系统的桌面及启动2个文件的目的地并进行复制,达到开机自启动的目的
//导入相应模块
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <cassert>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <shappmgr.h>using namespace std;int main()
{/*调用FindWindow隐藏任务栏HWND task;task = FindWindow(L"Shell_TrayWnd", NULL);*/system("title POS终端文件更换程序 v1.3");cout << "v1.1:\n更新复制方式。\n";cout << "v1.2:\n新增了MPOS创建桌面快捷方式及开机自启动,皆为最大化窗口。\n";cout << "v1.3:\n增加勾选自动隐藏任务栏。\n";/*文件说明:a.vbs:生成POS主程序的桌面快捷方式。copy.bat:从注册表获取当前系统的“桌面”及“启动”文件夹并将桌面POS快捷方式复制到“启动”文件夹实现开机自启动*///创建a.vbsofstream avbs;avbs.open("a.txt");avbs << "set WshShell=WScript.CreateObject(\"WScript.Shell\")\n";avbs << "strDesktop=WshShell.SpecialFolders(\"Desktop\")\n";avbs << "set oShellLink=WshShell.CreateShortcut(strDesktop & \"\\MPOS.lnk\")\n";avbs << "oShellLink.TargetPath=\"D:\\MPOS\\bin\\MPosShell.EXE\"\n";avbs << "oShellLink.WindowStyle=3\n";avbs << "oShellLink.Description=\"MPOS\"\n";avbs << "oShellLink.WorkingDirectory=\"D:\\MPOS\\bin\"\n";avbs << "oShellLink.Save";avbs.close();//a.vbs创建完毕//创建copy.batofstream copy;copy.open("copy.txt");copy << "@echo off\n";copy << "for /f \"tokens=2,*\" %%i in ('reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v \"Desktop\"') do set \"desktop_dir=%%j\"\n";copy << "echo %desktop_dir%\n";copy << "for /f \"tokens=2,*\" %%i in ('reg query \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\" /v \"Startup\"') do set \"Startup_dir=%%j\"\n";copy << "echo %Startup_dir%\n";copy << "copy \"%desktop_dir%\\MPOS.lnk\" \"%Startup_dir%\\MPOS.lnk\"\n";copy << "exit";copy.close();//更改文件后缀以使用system("rename a.txt a.vbs");system("rename copy.txt copy.bat");//定义POS机编号int posno;cout << "必须以管理员运行该程序备份才能生效!\n\n";cout << "请输入POS机编码:";cin >> posno;//原MPOS文件夹更名备份,再将程序所在目录下的MPOS文件夹复制至D盘。system("rename d:\\mpos MPOS_bak");system("xcopy mpos d:\MPOS /e /h /k /i /y");//清空posconf.ini文件以方便写入。ofstream truncini("D:\\MPOS\\bin\\mposconfig\\posconf.ini",ios::trunc);fstream posini;//向posconf.ini中写入配置数据posini.open("D:\\MPOS\\bin\\mposconfig\\posconf.ini",ios::out|ios::app);posini << "[MPOS]\n";posini << "PosNo=" << posno<<endl;posini << "##ServerUrl=http://192.168.21.70:7480/cre-pos/\n";posini << "ServerUrl=http://XXX.XXX.XXX.XXX:XXXX/cre-pos/\n";posini << "Reg=\n";posini << ";是否全屏 0 不全屏;1 全屏;默认 0 不全屏; \n";posini << "FullScreen=0\nFirstRun=0\n;窗口分辨率,缺省为1024*768\n";posini << "标准分辨率=1024*768\n";posini << "FVersion=17112002\n";posini << "FVersionName=1.13-SNAPSHOT\n";posini << ";副屏播放模式0 不开启副屏 1 图片轮播, 2 广告播放, 默认不开启副屏\n";posini << "FViceScreenMode=0\n";posini.close();cout << "安装成功!接下来将进行其他配置,请稍后.....\n";system("start a.vbs");cout << "桌面快捷方式安装成功!\n";Sleep(5000);system("start copy.bat");//删除运行时用到的子程序。Sleep(3000);//睡眠3秒//设置勾选自动隐藏任务栏LPARAM lParam;lParam = ABS_AUTOHIDE;APPBARDATA apBar;memset(&apBar, 0, sizeof(apBar));apBar.cbSize = sizeof(apBar);apBar.hWnd = FindWindow(L"Shell_TrayWnd", NULL);if (apBar.hWnd != NULL){apBar.lParam = lParam;SHAppBarMessage(ABM_SETSTATE, &apBar); //设置任务栏自动隐藏}//删除使用完毕的文件system("del a.vbs");system("del copy.bat");/*强制隐藏任务栏ShowWindow(task, SW_HIDE);*/cout << "开机启动安装成功!按任意键退出.....\n";system("pause>>null");system("del null");return 0;
}
转载于:https://www.cnblogs.com/fuRyZ/p/8835000.html
VS2015 C++ 海鼎MPOS更新程序相关推荐
- 联合海鼎布局智慧商超、生鲜,微盟智慧零售再升级
"信息的DNA正在迅速取代原子而成为人类生活中的基本交换物,从原子到比特的飞跃已是势不可挡.不可逆转",美国学者尼葛洛庞帝在其1996年出版的<数字化生存>一书中做出了 ...
- 企业内网中的WSUS更新服务 服务器连接到Microsoft Update来获取更新程序
这里我们先了解下WSUS更新的途径 1.单WSUS服务器环境 企业网络中部署了一台WSUS服务器,WSUS服务器连接到Microsoft Update来获取更新程序(称之为:同步),并分发给企业网络中 ...
- VS2010中:error C2471: 无法更新程序数据库
Visual Studio 2010环境下 error C2471: 无法更新程序数据库"--.pdb" fatal error C1083: 无法打开程序数据库文件:" ...
- STM32的调试方式、更新程序、仿真以及补救措施
STM32的调试方式.更新程序.仿真以及补救措施 1. STM32的调试方式选择 STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的. 由此我们可以知道: 如果要使用JT ...
- C#软件自动更新程序
2019独角兽企业重金招聘Python工程师标准>>> 基于C#实现的软件自动更新程序,之前在网上搜集了两款软件自动更新程序,在实际应用中,对部分BUG进行修复,添加+完善一些功能. ...
- 基于libUSB的USB设备固件更新程序(下载数据)(转)
源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libU ...
- 【原创】自动更新程序2--更新程序的主窗体(技术:spring.net+三层架构+webservice+IrisSkin2换肤)...
上篇文章主要介绍了webservice的部署以及主要的代码,下面给大家贴上主程序的代码,并简单的讲解.主程序判断是否有更新时通过主程序目录下有一个update.ini文件内的version是否有变化, ...
- C# WINFORM的自动更新程序
自动更新程序AutoUpdate.exe https://git.oschina.net/victor596jm/AutoUpdate.git 1.获取源码 http://git.oschina.ne ...
- 如何制作自动更新程序?
原文出自:http://blog.csdn.net/metaphysis/article/details/18866631 如何制作自动更新程序? [版权所有 邱秋 2014 metaphysis@y ...
最新文章
- 【干货】史上最全的Tensorflow学习资源汇总,速藏!
- 背景颜色的不透明度,但不是文本[重复]
- AMDKFD 合并入 Linux 3.19 内核
- TensorFlow – A Collection of Resources
- 机器学习笔记——K-means
- element 往node里面增加属性值_HashMap加载因子为何0.75,为何初始化值2的指数幂,底层解析...
- VS返回到上次编辑和进入到下次编辑的位置快捷键
- 0031-如何在CDH启用Kerberos的情况下安装及使用Sentry(一)
- JSON与JAVA的数据转换
- 旧电脑装什么系统最快_旧电脑装什么系统好_老旧电脑适合装什么操作系统
- MacOS下DockerCE的使用方式
- centos 安装wget命令
- 高薪职业,英年早秃?关于程序员,多的是你不知道的事……
- android 极简浏览器,XBrowser 一款Android下极简的浏览器,个人作品但不输商业产品...
- 7. 重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
- 图形数据库Titan-学习笔记
- html抓取网址某链接,URL 筛选小工具 提取网页中的链接地址
- 低通滤波器对实际控制系统的作用
- 社会工程学之黑客七宗罪——傲慢(Hooking)
- JAVA的环境变量设置
热门文章
- 浅谈HTML5和H5区别
- word中插入endnote 为什么会是大括号,而且后面没有文献
- linux脚本编写后怎么退出,linux脚本编写退出拍摄pdf
- 在亚马逊严抓测评的风口下,亚马逊买家秀关联视频或许是一个安全有效的方式
- 轨道交通计算机网络技术,城市轨道交通列车网络控制技术
- 阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书,并实现自动续订
- 886n虚拟服务器,TP-Link TL-WR886N V4路由器端口映射怎么设置
- 基于python的opencv_基于Python和OpenCV的人脸检测
- php开发的app商城,如何利用PHP语言开发手机APP
- 有苦有乐的算法 --- 两个元素交换的三种方式