powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / С пятницей всех.
25 сообщений из 101, страница 1 из 5
С пятницей всех.
    #40055383
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет друзья. Как дела?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

How to get main window handle from process id? .

Поиск в гугле по: winapi get main window handle for process id.
...
Рейтинг: 0 / 0
С пятницей всех.
    #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
С пятницей всех.
    #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
С пятницей всех.
    #40055415
didgik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня есть ini файл. Наверно можно его заюзать под это дело.
И писать в него pid при запуске.
Т.е. при запуске проги, мы проверяем, есть ли возможность в него писать, если нет, то берем оттуда pid, активируем запущенный экземпляр и закрываемся. И никакие мьютексы не нужны.

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

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

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

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

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

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

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

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

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

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

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


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

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


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