Вы должны войти, чтобы создавать сообщения и темы.

SmartRebooteR для работы с портативными программами

◄Страница 2 из 5► 5
Цитата: Яр от 25.06.2021, 11:50

Всем привет.
Вопрос возник: а как быть с программами, у которых при работе происходит запуск нескольких утилит/процессов?
Например, набор утилит Glary Utilities и другие подобные. При запуске утилит из главного окна, каждая из них запускается отдельным процессом.
Прав Adler — нужен способ вычленять дочерние процессы, причём, в два уровня глубины, т.е.: поиск дочернего процесса ланчера + дочерние процессы, запускаемые через главное окно программы.
Только что проверил, если завершить главный процесс, соответственно, завершит свою работу и ланчер, но утилиты при этом продолжают исполняться.

Здравия!

Проверь с этой версией.

Сделал, как подсказал Adler + Добавил завершение дочерних процессов от дочерних процессов лаунчера (спасибо за подсказки)..

В файле Apps.ini нет нужды (можно удалять).. Перетаскивайте только исполняемый файл ланчера..

Скрины

Никита, привет!
А по какой причине программа может вообще не запуститься?) Добавил на панель как у тебя в видео, при нажатии - панель сверху не появляется, в процессах появляется RebooteR и подпроцесс Form1 и сразу пропадает. И все на этом. 20H2 631

Подтверждаю — не запускается.

Лучший способ помочь себе — помогать другим.

У меня запускается и между двумя формами переключается. Что там дальше не проверял, ибо не на чем и незачем.
P.S. Зачем там нужны две формы и кнопка для Drag&Drop мне непонятно.

Привет, Антон
Причина в разрешении экрана скорее всего.
Делал для full hd.. в правый нижний угол минус 1300 пикселей влево. Чтобы была в левом нижнем. Если не full hd монитор, то нужно посмотреть, как привязку сделать к левому углу.. сейчас сяду, гляну

Цитата: Adler от 25.06.2021, 13:26

У меня запускается и между двумя формами переключается. Что там дальше не проверял, ибо не на чем и незачем.
P.S. Зачем там нужны две формы и кнопка для Drag&Drop мне непонятно.

Чтобы руками не писать в .ini название исполняемого файла , сделал чтобы можно было перетащить исполняемый файл на эту форму и он пропишется в .ini файле

Цитата: Никита от 25.06.2021, 13:45

Привет, Антон
Причина в разрешении экрана скорее всего.
Делал для full hd.. в правый нижний угол минус 1300 пикселей влево. Чтобы была в левом нижнем. Если не full hd монитор, то нужно посмотреть, как привязку сделать к левому углу.. сейчас сяду, гляну

1366х768 ноутбук

Цитата: Никита от 25.06.2021, 13:47

Чтобы руками не писать в .ini название исполняемого файла , сделал чтобы можно было перетащить исполняемый файл на эту форму и он пропишется в .ini файле

Ну так можно D&D привязать прямо к основной форме, без каких либо кнопок, которая к тому же еще и нажимается не вызывая никаких действий.
Ну или сделать ее "Drag&Drop or Open" и при нажатии открывать OpenFileDialog.

Всем привет!
Никита, у меня есть вопрос (идея), а нельзя ваш лаунчер привязать к системным кнопкам . Идея работы в следующем, если в лаунчере имеются вложенные портабл, то запускается ваша программа и отрабатывает, если нет то работают кнопки в стандартном режиме, вот как то так?

Определить разрешение можно так:

Код

public static class DesktopScreen
    {
        [DllImport("user32.dll")]
        private static extern IntPtr GetDC(IntPtr hWnd);

        [DllImport("gdi32.dll")]
        private static extern int GetDeviceCaps(IntPtr hdc, int nIndex);

        private const int DESKTOPHORZRES = 118;
        private const int DESKTOPVERTRES = 117;

        static DesktopScreen()
        {
            IntPtr hdc = GetDC(IntPtr.Zero);
            Width = GetDeviceCaps(hdc, DESKTOPHORZRES);
            Height = GetDeviceCaps(hdc, DESKTOPVERTRES);
        }

        public static int Width { get; private set; }
        public static int Height { get; private set; }
    }

Потом соответственно используйте:

DesktopScreen.Height
DesktopScreen.Width

и расчитывайте нужное положение окна.

 

Адлер, сделал вот так и теперь на любом разрешении слева в углу стартует.. но ХЗ на сколько это по фен-шую)

Код
СкопированоRectangle workingArea = Screen.GetWorkingArea(this);
this.Location = new Point(0 + 5, workingArea.Bottom - Size.Height - 5);

Антон, сделал для всех разрешений экрана..

Можно скачать тут. 

Так же перетаскивание работает на всю форму.

gif

Лайкнул ЯR
ЯR

Никита, все работает - буду тестировать)
Спасибо за программу!

Цитата: Юрий от 25.06.2021, 14:21

Всем привет!
Никита, у меня есть вопрос (идея), а нельзя ваш лаунчер привязать к системным кнопкам . Идея работы в следующем, если в лаунчере имеются вложенные портабл, то запускается ваша программа и отрабатывает, если нет то работают кнопки в стандартном режиме, вот как то так?

Привет)

Вариант, который я представляю.. Это, как писал Хачатур отслеживать попытку перезагрузки ПК через WinAPI и блокировать перезагрузку и в этот момент запускать мой процесс.. но в таком случае, если я правильно понимаю, то нужно чтобы моя программа всегда работала в фоне и ждала, пока пользователь попробует перезагрузить или выключить ПК..

Если я не прав, поправьте, кто больше понимает)

Всем привет!
Обновление.

При нажатии на кнопки Выключения и Перезагрузки правой клавишей мыши (Прям, как лицензионное соглашение)
Есть возможность поставить таймер отложенного выключения или перезагрузки

Скрин

В трее появится иконка, при наведении на которую будет видно, сколько секунд осталось до выключения или перезагрузки.
Если нажать правой клавишей по иконке в трее и выбрать "Exit", то отложенная перезагрузка или выключение будут отменены.

Скрин

И добавил удаление директорий при выключении и перезагрузке, если эти директории прописаны в файле Directories.

Скачать

Лайкнули XpucT, Mikhail и ещё 4
XpucTMikhail𝐅𝐫𝐨𝐦𝐇𝐞𝐥𝐥ЯRVladoАлик
◄Страница 2 из 5► 5