From 94ea337eee1ffa1511c2b1652397b2fc35068b23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A6=82=E6=84=8F=20=E5=BD=AD?= <2417589739@qq.com>
Date: Mon, 20 Jun 2022 18:15:08 +0800
Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Pages/View/LoginView.xaml | 35 ++
.../Pages/View/LoginView.xaml.cs | 27 ++
.../Pages/ViewModel/LoginViewModel.cs | 18 ++
BPASmartClient.Helper/SystemUtils.cs | 299 ++++++++----------
DosingSystem/App.xaml | 3 +-
DosingSystem/App.xaml.cs | 12 +
.../BPASmartClient.DosingSystem.csproj | 1 +
DosingSystem/View/AdminstratorsView.xaml | 2 +
DosingSystem/View/MainWindow.xaml.cs | 4 +
DosingSystem/ViewModel/MainViewModel.cs | 2 +-
10 files changed, 225 insertions(+), 178 deletions(-)
create mode 100644 BPASmartClient.CustomResource/Pages/View/LoginView.xaml
create mode 100644 BPASmartClient.CustomResource/Pages/View/LoginView.xaml.cs
create mode 100644 BPASmartClient.CustomResource/Pages/ViewModel/LoginViewModel.cs
diff --git a/BPASmartClient.CustomResource/Pages/View/LoginView.xaml b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml
new file mode 100644
index 00000000..0dd17295
--- /dev/null
+++ b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BPASmartClient.CustomResource/Pages/View/LoginView.xaml.cs b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml.cs
new file mode 100644
index 00000000..259f7886
--- /dev/null
+++ b/BPASmartClient.CustomResource/Pages/View/LoginView.xaml.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace BPASmartClient.CustomResource.Pages.View
+{
+ ///
+ /// LoginView.xaml 的交互逻辑
+ ///
+ public partial class LoginView : Window
+ {
+ public LoginView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/BPASmartClient.CustomResource/Pages/ViewModel/LoginViewModel.cs b/BPASmartClient.CustomResource/Pages/ViewModel/LoginViewModel.cs
new file mode 100644
index 00000000..0d805e67
--- /dev/null
+++ b/BPASmartClient.CustomResource/Pages/ViewModel/LoginViewModel.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Microsoft.Toolkit.Mvvm.ComponentModel;
+using Microsoft.Toolkit.Mvvm.Input;
+
+namespace BPASmartClient.CustomResource.Pages.ViewModel
+{
+ public class LoginViewModel : ObservableObject
+ {
+ public LoginViewModel()
+ {
+
+ }
+ }
+}
diff --git a/BPASmartClient.Helper/SystemUtils.cs b/BPASmartClient.Helper/SystemUtils.cs
index c31c2ad1..fa693d78 100644
--- a/BPASmartClient.Helper/SystemUtils.cs
+++ b/BPASmartClient.Helper/SystemUtils.cs
@@ -9,25 +9,11 @@ using System.Threading.Tasks;
using System.ComponentModel;
using System.IO;
+
namespace BPASmartClient.Helper
{
public class SystemUtils
{
-
- //private static ILogger logger = NLog.LogManager.GetCurrentClassLogger();
- //public static bool isShowNumBoard = false;
-
- //[DllImport("kernel32.dll", SetLastError = true)]
- //public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
-
- //[DllImport("kernel32.dll", SetLastError = true)]
- //public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
-
- //public static IntPtr ptr = new IntPtr();
-
-
-
-
public static bool isShowNumBoard = false;
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
@@ -35,100 +21,65 @@ namespace BPASmartClient.Helper
public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
- public static void StartKeyBoardFun()
- {
- try
- {
-
- }
- catch (Exception)
- {
-
- throw;
- }
-
-
- }
-
-
public static void ShowScreenKeyboard()
{
- try
- {
-
- //string file = @"C:\Program Files\Common Files\microsoft shared\ink\TabTip.exe";
- ////if (!System.IO.File.Exists(file))
- //// return;
- //Process.Start(file);
- string path = "C:/Program Files/Common Files/microsoft shared/ink/TabTip.exe";
- if (File.Exists(path))
- {
- Process p = Process.Start(path);
- }
- else
+ //获得当前登录的Windows用户标示
+ System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
+ System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
+ //判断当前登录用户是否为管理员
+ if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
+ {
+ try
{
- //判断软键盘是否进程是否已经存在,如果不存在进行调用
- Process[] pro = Process.GetProcessesByName("osk");
- //说明已经存在,不再进行调用
- if (pro != null && pro.Length > 0)
- return;
- IntPtr ptr = new IntPtr();
- bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
- if (isWow64FsRedirectionDisabled)
+ Process[] pros = Process.GetProcessesByName("TabTip");
+ string path = "C:/Program Files/Common Files/microsoft shared/ink/TabTip.exe";
+ if (File.Exists(path)) Process.Start(path);
+ else
{
- Process.Start(@"C:\WINDOWS\system32\osk.exe");
- bool isWow64FsRedirectionReverted = Wow64RevertWow64FsRedirection(ptr);
+ Process[] pro = Process.GetProcessesByName("osk");//判断软键盘是否进程是否已经存在,如果不存在进行调用
+ if (pro != null && pro.Length > 0) return;//说明已经存在,不再进行调用
+ IntPtr ptr = new IntPtr();
+ bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
+ if (isWow64FsRedirectionDisabled)
+ {
+ Process.Start(@"C:\WINDOWS\system32\osk.exe");
+ bool isWow64FsRedirectionReverted = Wow64RevertWow64FsRedirection(ptr);
+ }
}
}
+ catch (Exception)
+ {
+ throw;
+ }
- //ProcessStartInfo psi = new ProcessStartInfo();
- //psi.FileName = @"C:\Windows\System32\osk.exe";
- //psi.UseShellExecute = false;
- //psi.CreateNoWindow = true;
- //Process.Start(psi);
- //Process kbpr = System.Diagnostics.Process.Start(@"C:\Windows\System32\osk.exe"); // 打开系统键盘
-
- ////判断软键盘是否进程是否已经存在,如果不存在进行调用
- //Process[] pro = Process.GetProcessesByName("osk");
- //bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
-
- ////键盘如果已经打开则重新打开,防止最小化无法显示
- //if (pro != null && pro.Length > 0)
- //{
- // Process kbpr = pro[0];
- // kbpr.Kill();
- // if (isWow64FsRedirectionDisabled)
- // {
- // Process.Start(@"C:WINDOWSsystem32osk.exe");
- // Wow64RevertWow64FsRedirection(ptr);
- // }
- // return;
- //}
- ////if (isWow64FsRedirectionDisabled)
- ////{
- //Process.Start(@"C:WINDOWSsystem32osk.exe");
- //Wow64RevertWow64FsRedirection(ptr);
- //}
}
- catch (Exception ex)
+ else
{
- //logger.Error(ex.Message);
- }
- }
+ //创建启动对象
+ System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
+ startInfo.FileName = "";//Application.ExecutablePath;//设置运行文件
+ startInfo.Arguments = "";// String.Join(" ", args); //设置启动参数
+ startInfo.Verb = "runas"; //设置启动动作,确保以管理员身份运行
+ System.Diagnostics.Process.Start(startInfo); //如果不是管理员,则启动UAC
+ //退出应用程序
+ }
+ }
+ }
+}
@@ -136,113 +87,111 @@ namespace BPASmartClient.Helper
- //[DllImport("kernel32.dll", SetLastError = true)]
- //private static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
- //[DllImport("kernel32.dll", SetLastError = true)]
- //public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
- //private const UInt32 WM_SYSCOMMAND = 0x112;
- //private const UInt32 SC_RESTORE = 0xf120;
- //[DllImport("user32.dll", CharSet = CharSet.Auto)]
- //static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
- //private const string OnScreenKeyboadApplication = "osk.exe";
- /////
- ///// 启用系统软键盘
- /////
- //public static void OpenKeyBoardFun()
- //{
- // try
- // {
- // //判断软键盘是否进程是否已经存在,如果不存在进行调用
- // Process[] pro = Process.GetProcessesByName("osk");
- // //如果键盘已打开,则进行关闭操作
- // if (pro != null && pro.Length > 0)
- // {
- // CloseKeyBoardFun();
- // return;
- // }
- // // Get the name of the On screen keyboard
- // string processName = System.IO.Path.GetFileNameWithoutExtension(OnScreenKeyboadApplication);
- // // Check whether the application is not running
- // var query = from process in Process.GetProcesses()
- // where process.ProcessName == processName
- // select process;
- // var keyboardProcess = query.FirstOrDefault();
+//[DllImport("kernel32.dll", SetLastError = true)]
+//private static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
+//[DllImport("kernel32.dll", SetLastError = true)]
+//public static extern bool Wow64RevertWow64FsRedirection(IntPtr ptr);
+//private const UInt32 WM_SYSCOMMAND = 0x112;
+//private const UInt32 SC_RESTORE = 0xf120;
+//[DllImport("user32.dll", CharSet = CharSet.Auto)]
+//static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);
+//private const string OnScreenKeyboadApplication = "osk.exe";
- // // launch it if it doesn't exist
- // if (keyboardProcess == null)
- // {
- // IntPtr ptr = new IntPtr(); ;
- // bool sucessfullyDisabledWow64Redirect = false;
- // // Disable x64 directory virtualization if we're on x64,
- // // otherwise keyboard launch will fail.
- // if (System.Environment.Is64BitOperatingSystem)
- // {
- // sucessfullyDisabledWow64Redirect = Wow64DisableWow64FsRedirection(ref ptr);
- // }
+/////
+///// 启用系统软键盘
+/////
+//public static void OpenKeyBoardFun()
+//{
+// try
+// {
+// //判断软键盘是否进程是否已经存在,如果不存在进行调用
+// Process[] pro = Process.GetProcessesByName("osk");
+// //如果键盘已打开,则进行关闭操作
+// if (pro != null && pro.Length > 0)
+// {
+// CloseKeyBoardFun();
+// return;
+// }
- // // osk.exe is in windows/system folder. So we can directky call it without path
- // using (Process osk = new Process())
- // {
- // osk.StartInfo.FileName = OnScreenKeyboadApplication;
- // osk.Start();
- // //osk.WaitForInputIdle(2000);
- // }
+// // Get the name of the On screen keyboard
+// string processName = System.IO.Path.GetFileNameWithoutExtension(OnScreenKeyboadApplication);
- // // Re-enable directory virtualisation if it was disabled.
- // if (System.Environment.Is64BitOperatingSystem)
- // if (sucessfullyDisabledWow64Redirect)
- // Wow64RevertWow64FsRedirection(ptr);
- // }
- // else
- // {
- // // Bring keyboard to the front if it's already running
- // var windowHandle = keyboardProcess.MainWindowHandle;
- // SendMessage(windowHandle, WM_SYSCOMMAND, new IntPtr(SC_RESTORE), new IntPtr(0));
- // }
+// // Check whether the application is not running
+// var query = from process in Process.GetProcesses()
+// where process.ProcessName == processName
+// select process;
- // }
- // catch (Exception ex)
- // {
- // //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.Message);
- // //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.StackTrace);
- // }
+// var keyboardProcess = query.FirstOrDefault();
- //}
+// // launch it if it doesn't exist
+// if (keyboardProcess == null)
+// {
+// IntPtr ptr = new IntPtr(); ;
+// bool sucessfullyDisabledWow64Redirect = false;
+// // Disable x64 directory virtualization if we're on x64,
+// // otherwise keyboard launch will fail.
+// if (System.Environment.Is64BitOperatingSystem)
+// {
+// sucessfullyDisabledWow64Redirect = Wow64DisableWow64FsRedirection(ref ptr);
+// }
- /////
- ///// 关闭系统软键盘
- /////
- //public static void CloseKeyBoardFun()
- //{
- // try
- // {
- // Process[] pros = Process.GetProcessesByName("osk");
- // foreach (Process p in pros)
- // {
- // p.Kill();
- // }
- // }
- // catch (Exception ex)
- // {
- // //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.Message);
- // //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.StackTrace);
- // }
-
- //}
+// // osk.exe is in windows/system folder. So we can directky call it without path
+// using (Process osk = new Process())
+// {
+// osk.StartInfo.FileName = OnScreenKeyboadApplication;
+// osk.Start();
+// //osk.WaitForInputIdle(2000);
+// }
+// // Re-enable directory virtualisation if it was disabled.
+// if (System.Environment.Is64BitOperatingSystem)
+// if (sucessfullyDisabledWow64Redirect)
+// Wow64RevertWow64FsRedirection(ptr);
+// }
+// else
+// {
+// // Bring keyboard to the front if it's already running
+// var windowHandle = keyboardProcess.MainWindowHandle;
+// SendMessage(windowHandle, WM_SYSCOMMAND, new IntPtr(SC_RESTORE), new IntPtr(0));
+// }
- }
+// }
+// catch (Exception ex)
+// {
+// //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.Message);
+// //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.StackTrace);
+// }
+//}
+/////
+///// 关闭系统软键盘
+/////
+//public static void CloseKeyBoardFun()
+//{
+// try
+// {
+// Process[] pros = Process.GetProcessesByName("osk");
+// foreach (Process p in pros)
+// {
+// p.Kill();
+// }
+// }
+// catch (Exception ex)
+// {
+// //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.Message);
+// //LogUtil.WriteLog(MethodBase.GetCurrentMethod().Name, LogUtil.ERROE, ex.StackTrace);
+// }
+
+//}
-}
diff --git a/DosingSystem/App.xaml b/DosingSystem/App.xaml
index bc96f972..adb19107 100644
--- a/DosingSystem/App.xaml
+++ b/DosingSystem/App.xaml
@@ -3,8 +3,7 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:con="clr-namespace:BPASmartClient.CustomResource.Converters;assembly=BPASmartClient.CustomResource"
- xmlns:local="clr-namespace:BPASmartClient.DosingSystem"
- StartupUri="View/MainWindow.xaml">
+ xmlns:local="clr-namespace:BPASmartClient.DosingSystem">
diff --git a/DosingSystem/App.xaml.cs b/DosingSystem/App.xaml.cs
index 80265bc7..f8df83f7 100644
--- a/DosingSystem/App.xaml.cs
+++ b/DosingSystem/App.xaml.cs
@@ -5,6 +5,8 @@ using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
+using BPASmartClient.CustomResource.Pages.View;
+using BPASmartClient.DosingSystem.View;
namespace BPASmartClient.DosingSystem
{
@@ -13,5 +15,15 @@ namespace BPASmartClient.DosingSystem
///
public partial class App : Application
{
+ MainWindow mw = new MainWindow();
+
+ protected override void OnStartup(StartupEventArgs e)
+ {
+ base.OnStartup(e);
+ mw.Show();
+ //LoginView lv = new LoginView();
+ //var res = lv.ShowDialog();
+ //if (res != null && res == true) mw.Show();
+ }
}
}
diff --git a/DosingSystem/BPASmartClient.DosingSystem.csproj b/DosingSystem/BPASmartClient.DosingSystem.csproj
index ea23d1a5..341c5572 100644
--- a/DosingSystem/BPASmartClient.DosingSystem.csproj
+++ b/DosingSystem/BPASmartClient.DosingSystem.csproj
@@ -7,6 +7,7 @@
true
app.manifest
hbl.ico
+ AnyCPU
diff --git a/DosingSystem/View/AdminstratorsView.xaml b/DosingSystem/View/AdminstratorsView.xaml
index 13178b56..a0bb221e 100644
--- a/DosingSystem/View/AdminstratorsView.xaml
+++ b/DosingSystem/View/AdminstratorsView.xaml
@@ -12,9 +12,11 @@
d:DesignWidth="800"
Loaded="UserControl_Loaded"
mc:Ignorable="d">
+
+