![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Magik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 6.12.2007 Репутация: 2 Всего: 2 |
Порылся где можно, но так и не нашёл ответа:-
В службе это не катит – var h: hwnd; begin h:= FindWindow('Progman', 'Program Manager'); if h<>0 then MessageBox(0, 'ПРОТОКОЛ!', 'ServiceName', MB_SERVICE_NOTIFICATION or MB_ICONWARNING or MB_OK); End; Очевидно хендл не определяется. Хотя при запуске как ехе-приложение – всё работает. С MessageBox – проблем нет – проверено. Может есть варианты? |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Magik,
батенька курите мсде, ну а если лень то поиск по EnumDesktops OpenDesktop SwitchDesktop короче вам треба понимание о: множественности рабочих столов, намек... стол где ctrl+alt+del = winlogon где юзер живет = default а где сервис так что далее курим SetProcessWindowStation удачи |
|||
|
||||
| Magik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 6.12.2007 Репутация: 2 Всего: 2 |
Благодарю за ответ и намёк! К сожалению я давно бросил курить! Придётся жевать!
Может ещё у кого-нибудь есть пожелания? |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
Magik,
без шуток, все что перечислил достаточно для понимания вашей проблемы! прикол в том что в виндах есть множество рабочих столов, живущих на множестве оконных станций так вот FindWindow работает в пределах: WindowStation/Desktop а сервис запускается с произвольным WindowStation! (попробуйте выставить у сервиса: взаимодействие с рабочим столом, но это очень неправильно) ЗЫ попробуйте поиск по моим постам, просто в последнее время очень активно ковырял данный вопрос, и удивило как мало это обсуждается |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Попробуйте также почитать Создание служб Windows в Delphi с использованием VCL.
То, что вы сейчас пытаетесь сделать - это одна из наихудших вещей, которые вы только можете сделать. Я настоятельно не рекомендую реаизовывать такую логику. Служба не должна взаимодействовать с пользователем. Напишите это крупными буквами на своём мониторе Если вы расскажете немного больше про свою задачу, возможно, вам подскажут правильный путь её реализации. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Magik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 6.12.2007 Репутация: 2 Всего: 2 |
to Virtuals:
Понял! Всё ОК! А если немного конкретнее, то на одном сервере необходимо ограничить время работы пользователя. Далее сервер переводится в режим смены пользователя с новым паролем по условию того, что серевер не находится в режиме смены пользователя. Этим условием я считал наличие рабочего стола. Может есть и другие способЫ, но я подумал, что нет ничего проще определить хендл этого окна. Тем более, что в MessageBox() через его Handle я спокойно нажимаю на нужную кнопку по таймеру. Буду рад, если предложите иной способ. Одно необходимое условие, этот код надо запускать до входа пользователя (это нужно для другой задачи). |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Посмотрите: http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=60639 http://www.delphikingdom.ru/asp/answer.asp?IDAnswer=63639 http://www.rsdn.ru/Forum/message/3001453.flat.aspx Я бы сделал как приложение, запускаемое планировщиком с системной учёткой при логине пользователя. Как вариант - можно поместить в автозагрузку. Хотя службой в принципе тоже можно. Но это имеет смысл, только если у вас будет много пользователей работать одновременно. В этом случае служба должна ловить SERVICE_CONTROL_SESSIONCHANGE: HandlerEx Callback Function Ещё можно вот это почитать: Winlogon Notification Packages Removed Impact on Windows Vista Planning and Deployment Это сообщение отредактировал(а) CodeMonkey - 4.8.2008, 08:39 -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Magik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 6.12.2007 Репутация: 2 Всего: 2 |
В принципе проблема ясна. Пока решил вообще в сервисе не использовать оконные сообщения. А планировщик, - не хотел бы использовать. Слишком много ушлых ребят развелось с шаловливыми ручонками.
Virtuals & CodeMonkey - C Наилучшими пожеланиями! |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Тогда не ясно, что им мешает выключить вашу службу. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Magik |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 6.12.2007 Репутация: 2 Всего: 2 |
Ну так, уровень юзера конечно играет роль. Если службу грамотно спрятать, то найти её, - нужно ещё и голову поломать. С другой стороны это я вам сказал о наличии её, и роли (правда не до конца). А юзер просто будет поставлен перед фактом смены пользователя без каких либо причин.
Кстати, ну и партизаны же вы все! Все проблемы с окнами решаются установкой "галки" в свойстве сервиса "взаимодействие с рабочим столом" .! Ведь знали? - А? |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Для некоторых вопросов правильный ответ: "если вы знаете ответ - держите его при себе".
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
CodeMonkey,
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Если бы это было так, то тогда нет никаких проблем сделать так, что они не смогут завершить любое другое приложение (не сервис), запущенное из-под админской/системной учётки? Устанавливаются нужные права и приложение, скажем, помещённое в автозапуск, нельзя ни удалить оттуда, ни завершить, если оно начало выполняться. А автор вопроса, напротив, говорит, что так сделать нельзя, т.к. пользователи работают под неограниченными учётками. Откуда следует, что нет препятствий для остановки службы простыми пользователями. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Virtuals |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 476 Регистрация: 27.11.2006 Репутация: 4 Всего: 11 |
если есть права локального админа, то аксиома (тоесть не требует доказательств), ничего не поможет вопрос только времени и скорости усвоения информации пользователем
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 16 Всего: 89 |
Именно про это я и говорю. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |