![]() |
|
|
![]()
|
|
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
takedo, конечно по мьютексу окно никак не определишь.
Либо надо искать его (EnumWindows+посылка своего сообщения), либо запомнить в разделяемой переменной. Прочитай статью, на которую AlexPro ссылается. Там про все это очень хорошо написано. -------------------- ... |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Earnest спасиб
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| AlexPro |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Мьютекс и разделяемая переменная в равных дозах - то что доктор прописал (Dr. Joseph M. Newcomer) EnumWindows может быть потенциально опасной:
Продолжая медицинскую тему, был в моей медицинской практике случай, связанный с FindWindow. Я тогда сидел на Visual FoxPro и о C++ и мьютексах не помышлял.Но FindWindow есть и в фоксе. Запускаться должен был, естественно, единственный экземпляр программы. И, естественно, использовалась FindWindow. Испытания в лабораторных условиях показали неплохие результаты: механизм функционировал. Представьте себе восторг пользователя и мое смущение, когда только что скопированная (на компьютер пользователя) и впервые запущенная программа выдала: "Приложение уже запущено...". А всего-то оказалось, что пользователь создал одноименную с программой папку на рабочем столе, куда и слил программу. Пользователь открывал папку, запускал программу - а дальше FindWindow делала свое черное дело. Это сообщение отредактировал(а) AlexPro - 24.1.2006, 10:48 |
||||
|
|||||
| AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Нда, а если не требуется ничего передавать ранее запущенному приложению - достаточно одного лишь мьютекса.
|
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
Ну уж, если передавать... Можно и NAMED PIPE вместо мутекса... Или MAILSLOT...
|
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
Создал Mutex, но вот когда запущено под другим пользователем, то никак не хочет определять?
И как сделать? Добавлено @ 13:30 ret_gle = GetLastError() один раз -------------------- я не гольфист - я хоккеист |
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 5 Всего: 124 |
LPSECURITY_ATTRIBUTES lpMutexAttributes
For more information, see Synchronization Object Security and Access Rights. MSDN лениво сюда переписывать... сам дальше смотри... Это сообщение отредактировал(а) SergeCpp - 25.1.2006, 13:39 |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
хочешь сказать, что надо задать не 0 и все будет гут? Да вижу, что именно это и хочешь сказать, сейчас гляну
-------------------- я не гольфист - я хоккеист |
|||
|
||||
| takedo |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 501 Регистрация: 1.6.2005 Репутация: нет Всего: 3 |
SergeCpp
Чего то не могу разобраться, как надо инициализировать lpSecurityDescriptor у SECURITY_ATTRIBUTES -------------------- я не гольфист - я хоккеист |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |