Привет!
Вопрос такой — как достоверно узнать, запущено приложение уже на WM 5.0 PPC или нет? Раньше пробовала через поиск окна посредством FindWindow. Работает этот вариант не всегда правильно, потому что главное окно у меня скрыто с самого начала. Хотела попробовать через создание мьютекса, например — вроде на WM есть функция CreateMutex. Только вот не знаю, как подобрать условия уникальности для этого мьютекса — на обычном ПК это было бы легко. А вот что на WM можно взять для уникальности? Если есть предложения получше, то буду только рада.
Или для уникальности просто взять строчку типа:
#define APP_GUID _T("MyAppClientClass-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn") (сзади GUID соответственно)
Re: Как достоверно узнать, запущен ли процесс уже на WM 5.0
Здравствуйте, Trinity-2001, Вы писали:
T2>Привет! T2>Хотела попробовать через создание мьютекса, например — вроде на WM есть функция CreateMutex. Только вот не знаю, как подобрать условия T2>уникальности для этого мьютекса — на обычном ПК это было бы легко. А вот что на WM можно взять для уникальности? Если есть предложения получше, то T2>буду только рада.
Ну, вообще, Вы через мьютекс предлагаете, как я и думала. У меня еще несколько вопросов возникло:
1. Не знаете, как через Win32 API найти окно моего приложения, даже если оно скрыто? Это вообще возможно? (на WM, в частности)
2. Как насчет моих вопросов в этой теме:
Здравствуйте, Trinity-2001, Вы писали:
T2>Ну, вообще, Вы через мьютекс предлагаете, как я и думала. У меня еще несколько вопросов возникло: T2>1. Не знаете, как через Win32 API найти окно моего приложения, даже если оно скрыто? Это вообще возможно? (на WM, в частности)
а чем вас не устравиает FindWindow или EnumWindows?
T2>2. Как насчет моих вопросов в этой теме: T2>здесь
Здравствуйте, Trinity-2001, Вы писали:
T2>Или для уникальности просто взять строчку типа: T2>#define APP_GUID _T("MyAppClientClass-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn") (сзади GUID соответственно)
Если знаешь имя процесса, то можно использовать функции Process32First, Process32Next из toolhelp. При необходимости ты и хенд на процесс получишь, если он тебе необходим.
Re[4]: Как достоверно узнать, запущен ли процесс уже на WM 5
Здравствуйте, dabeat_bf, Вы писали:
_>а чем вас не устравиает FindWindow или EnumWindows?
Не устраивает функция FindWindow (изначально через нее все делалось). Почему-то она не находит нужное окно сразу после запуска приложения, когда главное окно скрыто. А потом после того, как окно хоть раз показалось, даже если оно скрыто, уже находит... Мне такое поведение показалось очень странным. В итоге сразу после запуска я почему-то могла запустить 2 копии приложения, и мне это не понравилось, поэтому я решила поискать альтернативный вариант.
Re: Как достоверно узнать, запущен ли процесс уже на WM 5.0
От:
Аноним
Дата:
08.08.08 11:47
Оценка:
T2>Привет! T2>Вопрос такой — как достоверно узнать, запущено приложение уже на WM 5.0 PPC или нет? Раньше пробовала через поиск окна посредством FindWindow. Работает этот вариант не всегда правильно, потому что главное окно у меня скрыто с самого начала. Хотела попробовать через создание мьютекса, например — вроде на WM есть функция CreateMutex. Только вот не знаю, как подобрать условия уникальности для этого мьютекса — на обычном ПК это было бы легко. А вот что на WM можно взять для уникальности? Если есть предложения получше, то буду только рада.
T2>Или для уникальности просто взять строчку типа: T2>#define APP_GUID _T("MyAppClientClass-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn") (сзади GUID соответственно)
Для тех же самых целей использовал CreateMutex() в одном из приложений. В качестве ключа уникальности использовал простую строку (14 символов). Работает без нареканий.
Re[5]: Как достоверно узнать, запущен ли процесс уже на WM 5
Здравствуйте, Trinity-2001, Вы писали:
T2>Не устраивает функция FindWindow (изначально через нее все делалось). Почему-то она не находит нужное окно сразу после запуска приложения, когда главное окно скрыто.
Функция FindWindow так себя не ведёт. Что-то не в порядке у тебя с окнами. Либо изначально окно не top-level, либо у него правильный заголовок ещё не выставлен, либо ещё что-то. Видимость/невидимость окна на работу FindWindow никак не влияет.
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re: Как достоверно узнать, запущен ли процесс уже на WM 5.0
Здравствуйте, Trinity-2001, Вы писали:
T2>Привет! T2>Вопрос такой — как достоверно узнать, запущено приложение уже на WM 5.0 PPC или нет? Раньше пробовала через поиск окна посредством FindWindow. Работает этот вариант не всегда правильно, потому что главное окно у меня скрыто с самого начала. Хотела попробовать через создание мьютекса, например — вроде на WM есть функция CreateMutex. Только вот не знаю, как подобрать условия уникальности для этого мьютекса — на обычном ПК это было бы легко. А вот что на WM можно взять для уникальности? Если есть предложения получше, то буду только рада.
T2>Или для уникальности просто взять строчку типа: T2>#define APP_GUID _T("MyAppClientClass-nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn") (сзади GUID соответственно)
Если не поздно, то я бы Mutex заменил на ATOM — он как-то по-легче...
... << RSDN@Home 1.2.0 alpha 4 rev. 1099>>
Re[2]: Как достоверно узнать, запущен ли процесс уже на WM 5