Server/Program.cs
author StephaneLenclud
Mon, 15 Aug 2016 12:11:26 +0200
changeset 233 2b9541e54f7d
parent 226 91763ba41c0c
child 236 6ba20e02d04f
permissions -rw-r--r--
Adding Harmony tab.
StephaneLenclud@123
     1
//
StephaneLenclud@123
     2
// Copyright (C) 2014-2015 Stéphane Lenclud.
StephaneLenclud@123
     3
//
StephaneLenclud@123
     4
// This file is part of SharpDisplayManager.
StephaneLenclud@123
     5
//
StephaneLenclud@123
     6
// SharpDisplayManager is free software: you can redistribute it and/or modify
StephaneLenclud@123
     7
// it under the terms of the GNU General Public License as published by
StephaneLenclud@123
     8
// the Free Software Foundation, either version 3 of the License, or
StephaneLenclud@123
     9
// (at your option) any later version.
StephaneLenclud@123
    10
//
StephaneLenclud@123
    11
// SharpDisplayManager is distributed in the hope that it will be useful,
StephaneLenclud@123
    12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
StephaneLenclud@123
    13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
StephaneLenclud@123
    14
// GNU General Public License for more details.
StephaneLenclud@123
    15
//
StephaneLenclud@123
    16
// You should have received a copy of the GNU General Public License
StephaneLenclud@123
    17
// along with SharpDisplayManager.  If not, see <http://www.gnu.org/licenses/>.
StephaneLenclud@123
    18
//
StephaneLenclud@123
    19
StephaneLenclud@123
    20
using System;
sl@0
    21
using System.Windows.Forms;
sl@92
    22
using System.Security.Principal;
StephaneLenclud@233
    23
using HarmonyHub;
StephaneLenclud@233
    24
sl@0
    25
sl@0
    26
namespace SharpDisplayManager
sl@0
    27
{
sl@0
    28
    static class Program
sl@0
    29
    {
sl@31
    30
        //WARNING: This is assuming we have a single instance of our program.
sl@31
    31
        //That is what we want but we should enforce it somehow.
StephaneLenclud@226
    32
        public static FormMain iFormMain;
StephaneLenclud@233
    33
StephaneLenclud@233
    34
        //
StephaneLenclud@233
    35
        public static HarmonyClient HarmonyClient { get; set; }
sl@0
    36
        /// <summary>
sl@0
    37
        /// The main entry point for the application.
sl@0
    38
        /// </summary>
sl@0
    39
        [STAThread]
sl@0
    40
        static void Main()
sl@92
    41
        {
sl@92
    42
StephaneLenclud@201
    43
            /*
sl@92
    44
			if (!IsRunAsAdministrator())
sl@92
    45
			{
sl@92
    46
				var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
sl@92
    47
sl@92
    48
				// The following properties run the new process as administrator
sl@92
    49
				processInfo.UseShellExecute = true;
sl@92
    50
				processInfo.Verb = "runas";
sl@92
    51
sl@92
    52
				// Start the new process
sl@92
    53
				try
sl@92
    54
				{
sl@92
    55
					Process.Start(processInfo);
sl@92
    56
				}
sl@92
    57
				catch (Exception)
sl@92
    58
				{
sl@92
    59
					// The user did not allow the application to run as administrator
sl@92
    60
					MessageBox.Show("Sorry, this application must be run as Administrator.");
sl@92
    61
				}
sl@92
    62
sl@92
    63
				// Shut down the current process
sl@92
    64
				Application.Exit();
sl@92
    65
				return;
sl@92
    66
				//Application.Current.Shutdown();
sl@92
    67
			}*/
StephaneLenclud@201
    68
          
StephaneLenclud@201
    69
            Application.ApplicationExit += new EventHandler(OnApplicationExit);
sl@86
    70
			//
sl@0
    71
            Application.EnableVisualStyles();
sl@0
    72
            Application.SetCompatibleTextRenderingDefault(false);
StephaneLenclud@226
    73
            iFormMain = new FormMain();
StephaneLenclud@226
    74
            Application.Run(iFormMain);
sl@0
    75
        }
sl@86
    76
sl@92
    77
sl@92
    78
sl@92
    79
		static private bool IsRunAsAdministrator()
sl@92
    80
		{
sl@92
    81
		  var wi = WindowsIdentity.GetCurrent();
sl@92
    82
		  var wp = new WindowsPrincipal(wi);
sl@92
    83
sl@92
    84
		  return wp.IsInRole(WindowsBuiltInRole.Administrator);
sl@92
    85
		}
sl@92
    86
sl@86
    87
		/// <summary>
sl@86
    88
		/// Occurs after form closing.
sl@86
    89
		/// </summary>
sl@86
    90
		/// <param name="sender"></param>
sl@86
    91
		/// <param name="e"></param>
sl@86
    92
		static private void OnApplicationExit(object sender, EventArgs e)
sl@86
    93
		{
sl@86
    94
sl@86
    95
		}
sl@0
    96
    }
sl@0
    97
}