You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
328 lines
18 KiB
328 lines
18 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using Container.Common;
|
|
using Container.Model;
|
|
using Container.Services;
|
|
using System.Diagnostics;
|
|
using Container.ChildWindows;
|
|
using Container.Viewmodel;
|
|
using Container.Win;
|
|
using Container.SaversViewModel;
|
|
using System.Threading;
|
|
|
|
namespace Container
|
|
{
|
|
/// <summary>
|
|
/// App.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
internal string shutdowntime;
|
|
internal AppListModel NowNeedPlayApp;//当前时间段需要播放的app(时间轴或默认)
|
|
internal string mallCode = "";
|
|
internal string mallRegKey = "";
|
|
internal string configurl = "http://192.168.0.250";
|
|
internal string configHttpUrl = "";
|
|
internal string SecurityKey = CommonLib.StringDecode("==wchF2UNFVO4cjN1QzMyEDM");
|
|
|
|
internal string configstartexe = "";
|
|
internal string configwebsocket = "ws://192.168.0.250:8080";
|
|
internal string configport = "8888";
|
|
internal string BuildingID = "";
|
|
internal string Floor = "";
|
|
internal string HttpUrl = "";//
|
|
internal string LocalIP = "";//本机IP
|
|
internal string DeviceType = "";//设备类型
|
|
internal string appUrl = "";//下载应用程序的路径
|
|
internal string appName = "";//应用下载文件名
|
|
//internal List<ExeModel> NowAppList = new List<ExeModel>();
|
|
internal bool appClick = false;//应用下载文件名
|
|
|
|
internal string NowAppType = "";//当前应用类型,exe、html。。
|
|
internal string deviceid = "";//设备编号
|
|
internal string devicemark = "";//设备备注
|
|
internal List<Building> Buildinginfo = new List<Building>();//楼栋列表
|
|
internal List<DeviceType> DeviceTypeList = new List<DeviceType>();//设备类型字典
|
|
internal List<AppListModel> AppList = new List<AppListModel>();
|
|
internal List<AppTimeModel> AppTimeList = new List<AppTimeModel>();
|
|
internal List<Floor> Floors = new List<Floor>();//楼层列表
|
|
//internal string Programname = "";//默认启动的程序名
|
|
internal string AppPlayDir = "";//需要播放的应用所在的文件夹名
|
|
internal string AppPlayName = "";//需要播放的应用启动文件名
|
|
internal string CurAppPlayName = "";//当前应用名称
|
|
internal string AppPlayNameCH = "";//中文名称
|
|
internal string Appversion = "";//应用版本号
|
|
internal string Containerversion = "";//容器版本号
|
|
//internal bool AppUpdate = false;//是否已更新
|
|
//internal string AppDownCode = "";//应用下线
|
|
//internal ExeModel Appdowninfo = new ExeModel();//应用下载对象
|
|
//internal ExeModel AppStartinfo = new ExeModel();//应用启动对象
|
|
internal AppListModel AppPlayinfo = new AppListModel();//当前应用对象
|
|
//internal List<ExeModel> exeinfo = new List<ExeModel>();//应用列表
|
|
//internal string icourl = "";//应用图标路径
|
|
//internal InsertADModel insertAD=new InsertADModel();
|
|
internal string bgPath = "";
|
|
internal BGPage pageBg;
|
|
//internal string defaultFile = "";
|
|
internal Screensaver screensaver = new Screensaver() { EffectType = 1, ScreenEffect = 1, ScreenFile = "", ScreenType = 0 ,ScreenTime=30};
|
|
//internal int screenTime = 30;
|
|
internal RabbitMQModel rabbitMQ = new RabbitMQModel();
|
|
|
|
internal bool isStartScreen = false;
|
|
Class_Log log = new Class_Log();
|
|
internal List<SubTitle> TopSubTitle = new List<SubTitle> { };
|
|
internal List<SubTitle> BottomSubTitle = new List<SubTitle> { };
|
|
internal int TopSubTitleIndex = 0;
|
|
internal int BottomSubTitleIndex = 0;
|
|
//internal string kioskUrl = "";
|
|
internal static bool Downloaddone = false;
|
|
internal int currentIndex = 0;
|
|
//internal WindowView view;
|
|
//internal Screensaver screensaver = new Screensaver() { EffectType = 1, ScreenEffect = 1, ScreenFile = "", ScreenType = 0 };
|
|
internal NavViewModel navModel = new NavViewModel();
|
|
System.Threading.Mutex mutex;
|
|
internal bool isProgramServer = false;
|
|
internal bool isProgramSync = false;
|
|
internal bool isSendSync = false;
|
|
internal string websocketProgramIP = string.Empty;
|
|
internal WebsocketForProgramServer websocketForProgramServer = null;
|
|
internal WebSocketForProgram webSocketForProgram = null;
|
|
internal string kioskUrl = "";
|
|
internal bool IsCanConnect = true;
|
|
internal Live live = new Live();
|
|
internal CurrentLive curLive = new CurrentLive();
|
|
internal bool LiveReload = false;
|
|
internal bool isLoadLive = false;
|
|
internal DateTime? CloseServerTime = null;
|
|
internal List<PlayProg> playProgList = new List<PlayProg>();
|
|
internal List<ShutDownProg> shutDownProgList = new List<ShutDownProg>();
|
|
internal string BGFile = string.Empty;
|
|
internal string defaultCity = string.Empty;
|
|
internal bool isCheckServerTime = false;
|
|
internal string kioskVersion = "";
|
|
internal string screenshotUserName = "";
|
|
//internal bool isStartHeat = false;
|
|
|
|
internal bool IsDownScreen = false;
|
|
internal string screenConfig = string.Empty;
|
|
internal int downErrorTime = 0;
|
|
internal string FileServerPath = string.Empty;
|
|
internal string OBSPath = string.Empty;
|
|
internal double ScreenWidth = 0;
|
|
internal double ScreenHeight = 0;
|
|
internal bool isStartGetProg = false;
|
|
string info = "";
|
|
public MainWindow main;
|
|
|
|
private void Application_Startup(object sender, StartupEventArgs e)
|
|
{
|
|
Class_Log clog = new Class_Log();
|
|
bool ret;
|
|
mutex = new System.Threading.Mutex(true, "WpfMuerterrrterterttex11", out ret);
|
|
if (!ret)
|
|
{
|
|
// MessageBox.Show("程序已启动");
|
|
Environment.Exit(0);
|
|
}
|
|
|
|
try
|
|
{
|
|
this.configHttpUrl = ConfigurationManager.AppSettings["HttpUrl"];
|
|
if (!string.IsNullOrEmpty(this.configHttpUrl))
|
|
{
|
|
this.HttpUrl = this.configHttpUrl;
|
|
this.configurl = this.configHttpUrl;
|
|
}
|
|
|
|
bool update = true;
|
|
clog.WriteLogFile("收到:" + e.Args.Count(), "Loadargs");
|
|
if (e.Args.Count() > 0)
|
|
{
|
|
clog.WriteLogFile("收到:" + e.Args[0].ToString(), "Loadargs");
|
|
string[] inf = e.Args[0].ToString().Split('&');
|
|
clog.WriteLogFile("inf.Count():" + inf.Count().ToString(), "Loadargs");
|
|
if (inf.Count() > 1)
|
|
update = false;
|
|
}
|
|
if (update)
|
|
{
|
|
//System.Security.Principal.WindowsIdentity identity1 = System.Security.Principal.WindowsIdentity.GetCurrent();
|
|
////创建Windows用户主题
|
|
//System.Windows.Forms.Application.EnableVisualStyles();
|
|
//System.Security.Principal.WindowsPrincipal principal1 = new System.Security.Principal.WindowsPrincipal(identity1);
|
|
////判断当前登录用户是否为管理员
|
|
//if (!principal1.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
|
|
//{
|
|
// //创建启动对象
|
|
// System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
|
|
// //设置运行文件
|
|
// startInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
// startInfo.FileName = startInfo.WorkingDirectory + "/ConUpdate.exe"; //设置启动参数
|
|
// startInfo.Arguments = info;
|
|
// //设置启动动作,确保以管理员身份运行
|
|
// startInfo.Verb = "runas";
|
|
// //如果不是管理员,则启动UAC
|
|
// //log.WriteLogFile("工作路径:" + startInfo.WorkingDirectory, "APPError");
|
|
// System.Diagnostics.Process.Start(startInfo);
|
|
// //退出
|
|
// System.Windows.Forms.Application.Exit();
|
|
|
|
// //System.Diagnostics.Process p = new System.Diagnostics.Process();
|
|
// //p.StartInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
// //p.StartInfo.FileName = p.StartInfo.WorkingDirectory + "/PCScreenSavers.exe";
|
|
// //p.StartInfo.Arguments = app.info;
|
|
// //p.StartInfo.Verb = "runas";
|
|
// //p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
|
|
// //p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
|
|
// //p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
|
|
// //p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
|
|
// ////p.ProcessNa = "PCScreenUpdate";
|
|
// //p.StartInfo.CreateNoWindow = false;//不显示程序窗口
|
|
// //p.Start();//启动程序
|
|
//}
|
|
//else
|
|
//{
|
|
// System.Diagnostics.Process p = new System.Diagnostics.Process();
|
|
// p.StartInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
// p.StartInfo.FileName = p.StartInfo.WorkingDirectory + "/ConUpdate.exe";
|
|
// p.StartInfo.Arguments = info;
|
|
// p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
|
|
// p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
|
|
// p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
|
|
// p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
|
|
// p.StartInfo.CreateNoWindow = false;//不显示程序窗口
|
|
// p.Start();//启动程序
|
|
//}
|
|
StartConUpdate(info);
|
|
Environment.Exit(0);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
clog.WriteLogFile(ex.ToString());
|
|
}
|
|
try
|
|
{
|
|
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
|
|
//创建Windows用户主题
|
|
System.Windows.Forms.Application.EnableVisualStyles();
|
|
Class_Log log = new Class_Log();
|
|
|
|
System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
|
|
//判断当前登录用户是否为管理员
|
|
if (!principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
|
|
{
|
|
//创建启动对象
|
|
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
|
|
//设置运行文件
|
|
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
|
|
|
|
startInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
//设置启动参数
|
|
startInfo.Arguments = String.Join(" ", e);
|
|
//设置启动动作,确保以管理员身份运行
|
|
startInfo.Verb = "runas";
|
|
//如果不是管理员,则启动UAC
|
|
System.Diagnostics.Process.Start(startInfo);
|
|
//退出
|
|
System.Windows.Forms.Application.Exit();
|
|
}
|
|
else
|
|
{
|
|
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
|
Application.Current.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(Current_DispatcherUnhandledException);
|
|
MainWindow win = new MainWindow();
|
|
main = win;
|
|
win.Show();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
clog.WriteLogFile(ex.ToString());
|
|
// MessageBox.Show("程序启动失败");
|
|
}
|
|
}
|
|
|
|
|
|
private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
|
{
|
|
log.WriteLogFile(e.Exception.Message + e.Exception.StackTrace, "APPError");
|
|
log.WriteLogFile("---111--" + e.ToString(), "APPError");
|
|
StartConUpdate(info);
|
|
Environment.Exit(0);
|
|
}
|
|
|
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
{
|
|
Exception ex = (Exception)e.ExceptionObject;
|
|
log.WriteLogFile(ex.Message + ex.StackTrace, "APPError");
|
|
log.WriteLogFile("-----"+ex.ToString(), "APPError");
|
|
StartConUpdate(info);
|
|
Environment.Exit(0);
|
|
}
|
|
|
|
void App_Startup(object sender, StartupEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void StartConUpdate(string info) {
|
|
System.Security.Principal.WindowsIdentity identity1 = System.Security.Principal.WindowsIdentity.GetCurrent();
|
|
//创建Windows用户主题
|
|
System.Windows.Forms.Application.EnableVisualStyles();
|
|
System.Security.Principal.WindowsPrincipal principal1 = new System.Security.Principal.WindowsPrincipal(identity1);
|
|
//判断当前登录用户是否为管理员
|
|
if (!principal1.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
|
|
{
|
|
//创建启动对象
|
|
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
|
|
//设置运行文件
|
|
startInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
startInfo.FileName = startInfo.WorkingDirectory + "/ConUpdate.exe"; //设置启动参数
|
|
startInfo.Arguments = info;
|
|
//设置启动动作,确保以管理员身份运行
|
|
startInfo.Verb = "runas";
|
|
//如果不是管理员,则启动UAC
|
|
//log.WriteLogFile("工作路径:" + startInfo.WorkingDirectory, "APPError");
|
|
System.Diagnostics.Process.Start(startInfo);
|
|
//退出
|
|
System.Windows.Forms.Application.Exit();
|
|
|
|
//System.Diagnostics.Process p = new System.Diagnostics.Process();
|
|
//p.StartInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
//p.StartInfo.FileName = p.StartInfo.WorkingDirectory + "/PCScreenSavers.exe";
|
|
//p.StartInfo.Arguments = app.info;
|
|
//p.StartInfo.Verb = "runas";
|
|
//p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
|
|
//p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
|
|
//p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
|
|
//p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
|
|
////p.ProcessNa = "PCScreenUpdate";
|
|
//p.StartInfo.CreateNoWindow = false;//不显示程序窗口
|
|
//p.Start();//启动程序
|
|
}
|
|
else
|
|
{
|
|
System.Diagnostics.Process p = new System.Diagnostics.Process();
|
|
p.StartInfo.WorkingDirectory = System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").Substring(0, System.Windows.Forms.Application.ExecutablePath.Replace("\\", "/").LastIndexOf("/"));//设置应用程序在其所在目录
|
|
p.StartInfo.FileName = p.StartInfo.WorkingDirectory + "/ConUpdate.exe";
|
|
p.StartInfo.Arguments = info;
|
|
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
|
|
p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
|
|
p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
|
|
p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
|
|
p.StartInfo.CreateNoWindow = false;//不显示程序窗口
|
|
p.Start();//启动程序
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|