WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  C / C++ / Visual C++
  Когда запущено приложение?

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Когда запущено приложение?
Susik опубликован 27-08-2001 00:54 MSK   Click Here to See the Profile for Susik   Click Here to Email Susik  
Какими методами можно определить, что было запущено новое приложение? (независимо, с окном оно или без)
purpe опубликован 27-08-2001 07:15 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
не уверен на 100%, но может стоит поставить глобальную ловушку ?
stan опубликован 27-08-2001 11:09 MSK     Click Here to See the Profile for stan  Click Here to Email stan     
Вс смысле новое? Если необходимо определить есть ли еще одна запущенная копия твоего приложения то воспользуйся стандартными методами (например, мьютексом).
Susik опубликован 27-08-2001 13:21 MSK     Click Here to See the Profile for Susik  Click Here to Email Susik     
То Стан: если я прогу запустил какую-то, то ее запуск надо зафиксировать сразу же при ее инициализации (без разницы, была ли ранее запущена копия этого приложения или нет).

Ту Пурпе: я тоже так думал. Только вот если приложение не создает окон - как быть? Просто какого типа мессаги надо перехватывать я не знаю, если окно не создается.

stan опубликован 27-08-2001 17:23 MSK     Click Here to See the Profile for stan  Click Here to Email stan     
Я не понял - какая разница, когда проверять наличие копии? Хочешь при запуске, хочешь при выходе, хочешь при втором пришествии Христа. Мьютексу пофиг когда ты его создашь. Выйти из приложения можно и при его содании. Какие еще проблемы?
purpe опубликован 27-08-2001 17:30 MSK     Click Here to See the Profile for purpe  Click Here to Email purpe     
stan: он не про ещё одну копию своего приложения говорит, а вообще про запускаемые процессы в системе (Word, Excel и т.д.)
Susik опубликован 27-08-2001 19:16 MSK     Click Here to See the Profile for Susik  Click Here to Email Susik     
В натуре, я говорил про процессы, типа проги. Тока не имел в виду Ворд и Ёксель. :))
talex опубликован 28-08-2001 11:41 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
[b]Susik[/b]
я могу предложить 2 варианта:
1) используя ф-ции EnumWindows(Proc)() считать кол-во окон, но ты говоришь что может быь окн и нет, тогда способ 2.
(окно может и не видно, посмотри как у Spy, полно окон которых ты даже не видишь).
2) использую ф-ции EnumProcessModules/EnumProcesses. Но я не уверен.
talex опубликован 28-08-2001 11:42 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
[b]Susik[/b]
я могу предложить 2 варианта:
1) используя ф-ции EnumWindows(Proc)() считать кол-во окон, но ты говоришь что может быь окн и нет, тогда способ 2.
(окно может и не видно, посмотри как у Spy, полно окон которых ты даже не видишь).
2) использую ф-ции EnumProcessModules/EnumProcesses. Но я не уверен.
Susik опубликован 28-08-2001 00:39 MSK     Click Here to See the Profile for Susik  Click Here to Email Susik     
To Talex: весь смысл не в том, чтобы получить список запущенных на данный момент процессов. Цель - поймать момент, когда приложение только-только было запущено.
m_fox опубликован 28-08-2001 16:45 MSK     Click Here to See the Profile for m_fox  Click Here to Email m_fox     
Видел замечательный пример на sources
Используй AddAtom и родственные функции.
m_fox опубликован 29-08-2001 04:48 MSK     Click Here to See the Profile for m_fox  Click Here to Email m_fox     
Вот ссылка, может быть это то, что нужно.
http://www.sources.ru/delphi/delphi_shareware_lock.shtml
talex опубликован 29-08-2001 00:06 MSK     Click Here to See the Profile for talex  Click Here to Email talex     
у меня тут идейка появилась, но она работате в случае если у проги есть окно. :)
Если устраивает говори. Я еще подумаю, может что-то еще придумаю.
Susik опубликован 29-08-2001 13:05 MSK     Click Here to See the Profile for Susik  Click Here to Email Susik     
Для оконных приложений мне уже подкинули отличну идею - поставить хук и при аттачменте дллки с хуком получать ИД текущего процесса типа
GetCurrentProcessId(). Я так и сделал. Все работает отлично. :)))
А вот к безоконным приложениям длл не присоединяется - туда мессаги не отсылаются (проверял). Пока с ними вопрос.

То m_fox: а что вообще такое Атом? Я просто в хелпе почитал - не очень ясно. Хотя бы в 2 словах объясни, если не трудно.

m_fox опубликован 29-08-2001 16:48 MSK     Click Here to See the Profile for m_fox  Click Here to Email m_fox     
Platform SDK

Atoms
An atom table is a system-defined table that stores strings and corresponding identifiers. An application places a string in an atom table and receives a 16-bit integer, called an atom, that can be used to access the string. A string that has been placed in an atom table is called an atom name.

В общем так, атом - это совокупность некоторой строки, например "Program_by_Vasya_Pupkin", и некоторого числа, которое система возвращает при добовлении нового атома. Если запускается первая копия твоего приложения, то она проверяет таблицу атомов на наличии этой строки. Если ее там нет, то программа добавляет эту строку и считает, что других копий приложений в этот сеанс Windows запущено небыло. После запуска второй программы, опять проверяется таблица атомов на наличие этой строки. Если строка найдена, то это уже второй запуск одной программы.

Susik опубликован 29-08-2001 20:52 MSK     Click Here to See the Profile for Susik  Click Here to Email Susik     
Ага, спасибо.
Т.е. атом - это типа само приложение пихает эту строку в эту таблицу? Только нафиг оно нужно системе? В смысле, употреблять их куда? (кроме определения, что приложение запущено) :)))
m_fox опубликован 30-08-2001 03:44 MSK     Click Here to See the Profile for m_fox  Click Here to Email m_fox     
Кажется для ddx
И для взаимодействия между процессами... ddx :)

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.