Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как, зная имя EXE, определить Handle окна этой программы [D7, WinXP]


Страницы:   1 2

dreamse ©   (2008-02-03 18:57:00) 

Нужно определить хендл окошка, зная его EXE и полный путь


ketmar   (2008-02-03 20:29:00) [1]

>[26] dreamse (03.02.08 20:20)
да чего тут думать? при такой постановке молиться надо. не садись ты за баранку этого тарантаса, нервы крепче будут. %-)


dreamse   (2008-02-03 20:20:00) [2]

> ketmar ©   (03.02.08 20:08) [25]

:)

Будем думать.


ketmar   (2008-02-03 20:08:00) [3]

>[24] dreamse (03.02.08 19:55)
а сервис, зараза, не реагирует, например, на команду останова. а при убивании его винда перезапускает. или вообще пытается себя восстановить.

да мало ли… неужели я тебя ещё не напугал? тогда можем сместиться в сторону драйверов, например. %-)


dreamse   (2008-02-03 19:55:00) [4]

> ketmar ©   (03.02.08 19:48) [23]

Этот вариант уже учтен, будет список с именами сервисов, соответственно если Exe файл в зависимости от списка ( имя файла, MD5 и пр. ) является сервисом то мы его останавливаем и деинстлируем, после обновления запускаем и инсталлируем повторно

/Install
/Uninstall


ketmar   (2008-02-03 19:48:00) [5]

>[21] dreamse (03.02.08 19:46)
тогда тебя и убивалка не спасёт. а проект чужой взял — и воткнул сервис, например. а сервису прописал флажок «авторестарт при падении». ты сервис пришиб (и то если прав хватило), а винда перезапустила тут же. опа?

у тебя в итоге получится по заглушке на каждую интересную софтину. ужос. беги от этой задачи, пока не поздно.


dreamse   (2008-02-03 19:48:00) [6]

> Сергей М. ©   (03.02.08 19:44) [20]

1. получаем список всех окон
2. получаем Id интересующего нас процесса
3. Перебираем все окна и отправляем сообщение о закрытии каждому окну ( или первому ) на закрытие если его породил наш процесс


dreamse   (2008-02-03 19:46:00) [7]

> ketmar ©   (03.02.08 19:43) [18]

Пытаюсь сразу убить двух зайцев, делаю как бы универсальную обновлялку для всех проектов. + так же для тех проектов где вообще не предусматриваться обновление ( например сторонние проекты, обновление для которых получаются по Email) . Так что внедрить реакцию на события во все приложения не представляться возможным :(


Сергей М.   (2008-02-03 19:44:00) [8]


> придеться писать свою обработку


Обработку чего?
Удовлетвори уж любопытство "рассуждающей общественности")


ketmar   (2008-02-03 19:44:00) [9]

>[17] Сергей М. ©(03.02.08 19:42)
ну, поскольку автор убивает именно окна, я предположил, что окна есть. %-)


ketmar   (2008-02-03 19:43:00) [10]

>[14] dreamse (03.02.08 19:40)
>просто думал что есть готовый вариант какой то, придеться писать свою
>обработку.

учитывая, что твой метод несколько… хм… неверный — готовых решений нет. руками, всё руками. для готовых «без боли» таки меняй логику.


Сергей М.   (2008-02-03 19:42:00) [11]


> ketmar ©   (03.02.08 19:39) [13]


Бродкаст м.б. и хорош, если целевые процессы создают хотя бы одно в/у окно. А если нет ? А если целевой процесс, к тому же, есть сервис-процесс ? Прежде чем принимать решение, нужно четко представлять, какие ингредиенты возможны в этой солянке сборной)


ketmar   (2008-02-03 19:42:00) [12]

натурально, не правильно. нас же дети читают, увидят такое решение и скопируют ещё, не приведи Бафомет.


dreamse   (2008-02-03 19:41:00) [13]

Ваши предложения несоменно правильнее. но на данном этапе сделаю все просто.

Спасибо всем за участие в обсуждении.


dreamse   (2008-02-03 19:40:00) [14]

Как обычно пустились в рассуждения на тему правильно ли делает автор или нет ...

Я знаю как сделать, нужно тупо вывести список окон и перебрать их при этом получая Id процесса через GetWindowThreadProcessId

просто думал что есть готовый вариант какой то, придеться писать свою обработку.

Всем спасибо.


ketmar   (2008-02-03 19:39:00) [15]

кстати, не надо событий, я поторопился. достаточно RegisterWindowMessage() и броадкаста. %-)


Сергей М.   (2008-02-03 19:34:00) [16]


>  написанные другими программистами модули


Ты бы сначала о своих модулях позаботился)


> Есть варианты по мягкому обновлению программного обеспечения
> ?


Если рассматривать все модули "скопом" (без разбору, свои или чужие), универсального варианта нет - каждый разработчик творит в своих алгоритмах все что ему вздумается. Одни приложения вполне адекватно реагируют на WM_CLOSE, другие плюют на него с высокой колокольни.


ketmar   (2008-02-03 19:30:00) [17]

>[9] dreamse (03.02.08 19:26)
>В дистрибутива могут входить не только мои приложения, но и так же
>дополнительно написанные другими программистами модули.

кого волнует? стандартизируется некоторая реакция на некоторые собития, и всё. кто реакции не делает — тому больно бить по лицу и зарплате.


ketmar   (2008-02-03 19:29:00) [18]

>[7] dreamse (03.02.08 19:15)
обалдеть.

посмотри в сторону event'ов, например. махнул ивентом — все схлопнулись. красиво, удобно, и не надо заниматься непонятными поисками.


dreamse   (2008-02-03 19:26:00) [19]

> Сергей М. ©   (03.02.08 19:18) [8]

В дистрибутива могут входить не только мои приложения, но и так же дополнительно написанные другими программистами модули.

Ничего изуверского не вижу :) Есть варианты по мягкому обновлению программного обеспечения ? Я с удовольствием выслушаю более опытного в этом плане коллегу.


Сергей М.   (2008-02-03 19:18:00) [20]


> нужно свои программы запущенные завершать


Таким изуверским способом ?!

Это же твоипрограммы)

А раз они твои, то что мешает "научить" их реагировать нужным образом, к примеру, на некое предопределенное тобой сообщение ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо