Re[2]: Запуск приложения из C# сервиса. Windows 7
От: Track77 3d-kstudio.com
Дата: 13.10.12 18:53
Оценка:
Сделал на основе вот этого решения
http://henry-chong.com/2012/03/getting-the-current-active-user-in-c-sharp
Собственно проблема была в том, чтобы определить, когда запускать создание формы
Сейчас определяю с помощью Environment.UserInteractive
Если запущено не из-под текущего пользователя, то запускаю с помощью ProcessHelper
и при следующем "проходе" уже идет нормальный полноценный запуск.



        private static void Main(string[] args)
        {

            Process[] ps = Process.GetProcessesByName("explorer");
            int processId = -1;
            if (ps.Length > 0)
            {
                processId = ps[0].Id;
            }

            if (!Environment.UserInteractive)
            {
                string command = "\"" + string.Join("\"  \"", args) + "\"";
                Console.WriteLine("arguments: " + command);
                ProcessHelper proc = new ProcessHelper("explorer", System.IO.Path.Combine(Application.StartupPath, "CGFARM.MANAGER.exe"), command);

                proc.Run(processId);

            }
            else
            {
 
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                MainForm = new ManagerForm(args);
                SingleInstanceApplication.Run(MainForm, StartupNextInstanceHandler);
            }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.