![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать запушена ли программа написанная на winapi [D6, Win2k]
dream © (2003-11-06 11:26:00)
Простые программы можно найти так FindWindow("TxGg_cl",nil)
Но это те программы которые имеют окна , а если программа не имеет окна ? написанна на winapi .
Подскажите пожайлуста
dream (2003-11-06 12:43:00) [1]
Всем спасибо ! буду пробывать
Юрий Зотов (2003-11-06 12:41:00) [2]
> dream (06.11.03 12:37) [13]
Тогда, во-первых, задавайте вопросы так, чтобы Вас правильно и ТОЧНО поняли. Во-вторых, можно использовать не только мьютексы, а вообще любые объекты ядра. В-третьих, см. сюда:
http://www.delphikingdom.ru/helloworld/samples_win.htm#link11
dream (2003-11-06 12:41:00) [3]
нет просто без окон та программа которая делает обновление основного EXE файла , тут же есть сервис который проверяет находиться ли в памяти главная программа EXE и при её отсутствии загружает её в память , но если проводить обновление то Основная программа будет выключена ( то есть будет обновляться ) и если в это время её запустит сервис то все усилия по обнавлению сведуться на нет ! так что я хотел реализовать в сервисе проверку работает ли обновляющая программа ( то есть прога на winapi ) !
Вот так
Fiend (2003-11-06 12:40:00) [4]
То Юрий Зотов © (06.11.03 12:38) [14]
он всё же признался в деталях ;)
(
> dream (06.11.03 12:37) [13]
)
Fiend (2003-11-06 12:39:00) [5]
То dream (06.11.03 12:37) [13]
значит я всё же правильно понял вопрос. В чём тогда загвоздка? Примеров валом
Юрий Зотов (2003-11-06 12:38:00) [6]
> Fiend © (06.11.03 12:35) [12]
Я не знаю, верно ли Вы поняли вопрос, или неверно. Автор этого не уточняет. Но сам вопрос звучит так: "Как узнать запушена ли программа написанная на winapi". Здесь нет ни слова о том, что программа именно своя и что надо блокировать ее повторный запуск. Не прозвучало этого и в обсуждении.
dream (2003-11-06 12:37:00) [7]
> Юрий Зотов
> Разве все программы обязаны создавать мьютексы?
Программа без окон тожк моя разработка , так что можно попробывать и с Мьютексами
Fiend (2003-11-06 12:35:00) [8]
То Юрий Зотов © (06.11.03 12:33) [11]
Ну я так понял из вопроса что софт написан автором же, посему вставить в него кусок кода несложно. К тому же софт, опять же насколько я понял, должен блокировать повторный запуск себя а не кого то другого.
или я неверно понял вопрос???
Юрий Зотов (2003-11-06 12:33:00) [9]
> Fiend © (06.11.03 12:27) [10]
Никто не мешает. Это стандартный способ блокировки повторного запуска СВОЕЙ программы.
Но кто сказал, что это поможет найти произвольную запущенную программу? Разве все программы обязаны создавать мьютексы?
Fiend (2003-11-06 12:27:00) [10]
То Юрий Зотов © (06.11.03 12:17) [8]
Кто мешает при запуске софта первым делом проверять существует ли в системе Мьютекс с таким то имененм, где имя какая либо уникальная строка. Если его нет, то продолжаем загрузку. Иначе прерываемся.
Что сложного или неприменимого???
Юрий Зотов (2003-11-06 12:19:00) [11]
> dream (06.11.03 12:15) [7]
> Это мысль!
Безусловно. Но не имеющая к вопросу никакого отношения.
> но Мьютекс не надёжен ! сам не раз убеждался
Есть такой драйвер - руки.sys. И иногда он бывает кривым. Но мьютексы в этом не виноваты.
Юрий Зотов (2003-11-06 12:17:00) [12]
> Fiend © (06.11.03 12:10) [6]
И как же его в этой ситуации пользовать?
И для чего?
И что он даст?
И как это поможет решить задачу?
И для чего вводить людей в заблуждение?
dream (2003-11-06 12:15:00) [13]
> Fiend
Это мысль ! но Мьютекс не надёжен ! сам не раз убеждался
Fiend (2003-11-06 12:10:00) [14]
Пользуй Мьютекс.
Vorobyev Sergey (2003-11-06 11:55:00) [15]
Давай просто логически подумаем:
Программа это что - это процесс, и ничего другого она представлять не может.
Значит надо искать среди процессов..
Т.к. FindProcess вроде бы не существует, то только с помощью методики от [1] han-bratan (06.11.03 11:29)
> Я в пришципе могу так сделать но считаю что это не выход
>
Если сможешь, сделай.. Что значит не выход? Это и есть выход..
Медленно, не думаю..
dream (2003-11-06 11:49:00) [16]
> Dima_dvp
Это то я знаю ! а есть ли что то наподобии Findproces ?
Dima_dvp (2003-11-06 11:46:00) [17]
FindWindow переводиться найти окно - сам подумай возможно ли найти окно которого нет.....
dream (2003-11-06 11:31:00) [18]
> han-bratan
А попроще никак нельзя ? Я в пришципе могу так сделать но считаю что это не выход
Толи код if FindWindow("TxGg_cl",nil) = 0 then
либо твоим советом код займёт 10 - 20 строчек + потеряет функциональность !
han-bratan (2003-11-06 11:29:00) [19]
нНужно перечислить все процессы в системе, получить имя файла который вызвал этот процесс, и сравнить имя икомой проги со всеми именами файлов-процессов уже запущенных.