Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех. / 25 сообщений из 101, страница 1 из 5
19.03.2021, 20:46
    #40055383
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Привет друзья. Как дела?

Какие пятничные темы вы хотели-бы услышать?

(Пятничные темы - любые технологичные. По программированию. Но не срочные. Не продуктовы баги вобщем.)
...
Рейтинг: 0 / 0
19.03.2021, 22:17
    #40055395
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Весенние каникулы у детей начинаются. Зефирки учимся жарить на мангале.
...
Рейтинг: 0 / 0
19.03.2021, 22:20
    #40055396
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
mayton, интересует запрет повторного запуска проги той же папки. Из другой можно. Главный вопрос - активировать прогу уже запущенную из этой папки.
...
Рейтинг: 0 / 0
19.03.2021, 22:26
    #40055397
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Создавай в текущей папке .pid файл с кодом текущего процесса.

Да это горбуха.
...
Рейтинг: 0 / 0
19.03.2021, 22:28
    #40055398
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Dima T
Весенние каникулы у детей начинаются. Зефирки учимся жарить на мангале.

Разве зефирки жарят? Обычно - сосиски.
...
Рейтинг: 0 / 0
19.03.2021, 22:28
    #40055399
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
mayton
Создавай в текущей папке .pid файл с кодом текущего процесса.

А если прога крашнеца и не уберет за собой .pid?
...
Рейтинг: 0 / 0
19.03.2021, 22:29
    #40055400
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
mayton
Dima T
Весенние каникулы у детей начинаются. Зефирки учимся жарить на мангале.

Разве зефирки жарят? Обычно - сосиски.

Кстати да. Никогда не понимал этого буржуйского извращения. Или у них зефир другой?
...
Рейтинг: 0 / 0
19.03.2021, 22:35
    #40055402
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
mayton, интересует запрет повторного запуска проги той же папки. Из другой можно. Главный вопрос - активировать прогу уже запущенную из этой папки.

Ну… Создать именованный мьютекс (уровня системы). Имя мьютекса должно содержать папку запуска. При этом мьютекс нужно захватить при запуске и никогда не нужно отпускать.

А вот переключиться на уже запущенное приложение...
...
Рейтинг: 0 / 0
19.03.2021, 22:35
    #40055403
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
mayton
Dima T
Весенние каникулы у детей начинаются. Зефирки учимся жарить на мангале.

Разве зефирки жарят? Обычно - сосиски.

Жарят. Все горячее вкуснее чем холодное. Фотки дал бы, но с телефона пишу, не дома, комп дети отжали (((
...
Рейтинг: 0 / 0
19.03.2021, 22:38
    #40055404
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
mayton
Создавай в текущей папке .pid файл с кодом текущего процесса.

А если прога крашнеца и не уберет за собой .pid?

Если крашнеца... При старте прога должна взять эксклюзивные права на доступ к этому файлу. Если твоя прога крашается, то все ограничения доступа слетают. Как и тот заблокированный мьютекс.
...
Рейтинг: 0 / 0
19.03.2021, 22:41
    #40055405
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
petrav
didgik
пропущено...

А если прога крашнеца и не уберет за собой .pid?

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

С мьютексом понятно, не понятно причем тут .pid.
А как активировать уже запущенную прогу по мьютексу?? И да. В винде.
...
Рейтинг: 0 / 0
19.03.2021, 22:47
    #40055406
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
petrav
пропущено...

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

С мьютексом понятно, не понятно причем тут .pid.
А как активировать уже запущенную прогу по мьютексу?? И да. В винде.

"Активировать" это что значит в реальной жизни?
...
Рейтинг: 0 / 0
19.03.2021, 22:48
    #40055407
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
petrav
пропущено...

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

С мьютексом понятно, не понятно причем тут .pid.

Я не знаю, что это такой за файл .pid. Видимо, что это файл содержащий process id. Имея process id возможно можно определить дескриптор главного окна этого процесса и послать ему что-то типа сообщения WM_SHOW.

Кстати, Process Explorer умеет определять какой процесс держит файл. Так что в файл записывать process id, видимо, не нужно.

didgik
А как активировать уже запущенную прогу по мьютексу?? И да. В винде.

Я не знаю.
...
Рейтинг: 0 / 0
19.03.2021, 22:57
    #40055408
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Вот только что я запустил программу, которая держит определённый файл.
Потом я запустил Process Explorer. Главное меню: Find -> Find handle or DLL.
По имени файла нашёлся процесс, который держит этот файл.

Дальше ПКМ на этом процессе: Window -> Bring to front. Всё, приложение
активировано на основе пути к файлу, который (файл) держит это приложение.

Как блокировку файла заменить на блокировку глобального мьютекса... Ну...
может можно.
...
Рейтинг: 0 / 0
19.03.2021, 22:57
    #40055409
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Dima T

"Активировать" это что значит в реальной жизни?

Чтоб запущенная прога развернулась с панели задач.

Впрочем, вопрос только в том, как во второй копии получить хендл окна уже запущеной проги из этой же папки.
...
Рейтинг: 0 / 0
19.03.2021, 23:04
    #40055410
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
Dima T

"Активировать" это что значит в реальной жизни?

Чтоб запущенная прога развернулась с панели задач.

Впрочем, вопрос только в том, как во второй копии получить хендл окна уже запущеной проги из этой же папки.

How to get main window handle from process id? .

Поиск в гугле по: winapi get main window handle for process id.
...
Рейтинг: 0 / 0
19.03.2021, 23:07
    #40055411
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
petrav
didgik
пропущено...

Чтоб запущенная прога развернулась с панели задач.

Впрочем, вопрос только в том, как во второй копии получить хендл окна уже запущеной проги из этой же папки.

How to get main window handle from process id? .

Поиск в гугле по: winapi get main window handle for process id.

Тогда вопрос в том, как во второй копии получить process id уже запущеной проги из этой же папки.
...
Рейтинг: 0 / 0
19.03.2021, 23:17
    #40055414
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
petrav
пропущено...

How to get main window handle from process id? .

Поиск в гугле по: winapi get main window handle for process id.

Тогда вопрос в том, как во второй копии получить process id уже запущеной проги из этой же папки.

Уже всё же сказано.

- В .pid файл записать process id. Но на случай падения приложения нужно держать эксклюзивные права на запись в этот файл.
- Можно держать эксклюзивные права вообще на пустой файл в папке приложения. И по пути к этому файлу определить process id — process explorer так может.
- Можно попробовать по имени мьютекса (который содержит путь к папке) определить process id, который его держит.

Тут есть ещё момент, что на компе может быть авторизовано сразу несколько пользователей. WinAPI неисчерпаем так же как и атом. Это ещё В.И. Ленин говорил.
...
Рейтинг: 0 / 0
19.03.2021, 23:28
    #40055415
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
у меня есть ini файл. Наверно можно его заюзать под это дело.
И писать в него pid при запуске.
Т.е. при запуске проги, мы проверяем, есть ли возможность в него писать, если нет, то берем оттуда pid, активируем запущенный экземпляр и закрываемся. И никакие мьютексы не нужны.

Осталось узнать про эксклюзивные права записи. Как ставить и как проверять.
...
Рейтинг: 0 / 0
19.03.2021, 23:36
    #40055417
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
у меня есть ini файл. Наверно можно его заюзать под это дело.
И писать в него pid при запуске.
Т.е. при запуске проги, мы проверяем, есть ли возможность в него писать, если нет, то берем оттуда pid, активируем запущенный экземпляр и закрываемся. И никакие мьютексы не нужны.

Осталось узнать про эксклюзивные права записи. Как ставить и как проверять.

При запуске проги пытаемся заблокировать файл на эксклюзивную запись.
Если получилось, то записываем в ini файл pid и запускаемся.

Если не получилось, то пытаемся открыть этот файл на чтение и читаем pid.
Если получилось, читаем pid. По нему получаем HWND и активируем окно. Выходим.

Эксклюзивные права на запись, например, проверяются попыткой получить такие
права. Получил - значит ты хозяин. Документация на функцию ::CreateFile() из WinAPI.
...
Рейтинг: 0 / 0
19.03.2021, 23:38
    #40055418
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
о, а может сразу HWND в ини пихать?
...
Рейтинг: 0 / 0
19.03.2021, 23:48
    #40055421
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
didgik
о, а может сразу HWND в ини пихать?

Не знаю. Попробуйте.
...
Рейтинг: 0 / 0
20.03.2021, 01:27
    #40055437
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
petravЭксклюзивные права на запись, например, проверяются *попыткой* получить такие
права. Получил - значит ты хозяин. Документация на функцию ::CreateFile() из WinAPI.

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.03.2021, 02:11
    #40055438
didgik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Dimitry Sibiryakov

petravЭксклюзивные права на запись, например, проверяются *попыткой* получить такие
права. Получил - значит ты хозяин. Документация на функцию ::CreateFile() из WinAPI.

Ага. Прочитать PID из файла, который не удалось открыть. Отличный план.

Может, не стоит маяться дурью с файлом, а сразу искать окно?..


Прочитать PID из файла, который не удалось открыть на запись. Читать можно. Я так понял.

А поиск окна я не осилил пока что. В этом и проблема.
...
Рейтинг: 0 / 0
20.03.2021, 06:06
    #40055442
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
С пятницей всех.
Dima T
Все горячее вкуснее чем холодное.
Особенно водка и мороженое.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех. / 25 сообщений из 101, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]