![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не работает FindWindow [D7, WinXP]
Vilux © (2004-03-17 07:58:00)Проблема в следуюшем. Есть приложение, хэндл которого ловится с помощью функции FindWindow, все работает. Проблема в том, что хэндл не находится из dll-ки, которая написана как сервис ISAPI/NSAPI. Т.е. dll-ка пускается IIS сервером при запросе вида http://localhost/mydll.dll
Она просто не видит окно приложения, т.е. возвращает хэндл = 0. Пробовал и FindWindow и FindWindowEx. Как быть? По идее я использую SendMessage, чтобы передать сообщение окну... а теперь не могу передавать...
Игорь Шевченко (2004-03-23 11:51:00) [1]CX (22.03.04 11:18)
Путь с сообщением - официально документированный и рекомендованный.
CX (2004-03-22 11:18:00) [2]Игорь Шевченко
А если проверять наличие процесса Explorer.exe?
_edWin (2004-03-19 12:17:00) [3]тебе собственно что нужно:хэндл окна или приложения.
ЭТО РАЗНЫЕ ВЕЩИ (совсем).
FindWindow ищет окнопо имени класса и/или caption'а окна.
Игорь Шевченко (2004-03-19 10:49:00) [4]Удалено модератором
Примечание: Дубль
Игорь Шевченко (2004-03-19 10:46:00) [5]CX (18.03.04 19:20)
> А как определить состояние системы, т.е. можно-ли сервису
> уже выполнить ShellExecute, или ещё рано - система не загружена
> полностью?
Можно поймать сообщение TaskbarCreated, например. Или WM_USERCHANGED
CX (2004-03-18 19:20:00) [6]Vilux:
Можно делать харакири по ИД процесса. Тогда привязка будет к именифайла, что есть простейшим решением (переименууй файл - и сервис его не убьет). Более элегантным решением было бы вместе с ИД процесса проверять также и его окно (если таковое имеется). Ну и уж совсем замечательно было бы считать СРС процесса. Наиболее надёжно для идентификации, но и поморочиться надо. Ехе-шки не будеш считать раз в 2-3 секунды - слишком много ресурсов уйдет. Можно проверять только СРС заголовка из ехе.
Игорь Шевченко
Спасибо, мне уже посоветовали то же самое... :) А как определить состояние системы, т.е. можно-ли сервису уже выполнить ShellExecute, или ещё рано - система не загружена полностью?
piople (2004-03-18 06:58:00) [7]
> Vilux
НАФИГА ВАМ ИЗ СЕРВИСА ИСКАТЬ КАКОЕ-ТО ОКНО?????
Sur (2004-03-17 15:59:00) [8]хэндл окна и хэндл приложения по моему разные вещи
Vilux (2004-03-17 12:32:00) [9]Да, я так и понял, что dll не видит рабочий стол. А вообще, пришлось пойти другим путем, без использования dll
Игорь Шевченко (2004-03-17 11:28:00) [10]
> У меня похожая проблема. Не могу найти окна из сервиса!
Разреши сервису взаимодействие с рабочим столом и будет тебе счастье. Даром.
CX (2004-03-17 11:00:00) [11]У меня похожая проблема. Не могу найти окна из сервиса! Давайте объединяться! Мой адрес: cx@ukr.net
Напишите, что Вы пробоволи и что у Вас получилось.
KSergey (2004-03-17 08:08:00) [12]off
Ну и жуткие же технологии для Web-сервиса... Запрется 100 пользователей (или 1000 - что еще хуже) что-то посмотреть, а там оказывается прога зачем-то какое-то окно ищет через FindWindow... А окно-то хоть точно имеет место быть?