Сейчас на форуме: ManHunter, rmn, _MBK_, tyns777 (+10 невидимых)

 eXeL@B —› Программирование —› MessageBox из сервиса?
Посл.ответ Сообщение


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 02 апреля 2012 15:16 · Поправил: OnLyOnE
· Личное сообщение · #1

Собственно как этого добиться?
Пример кода, если не жалко...
Заранее спасибо.

P.S. С хендлом рабочего стола (GetDesktopWindow)не проканывает трюк

-----
aLL rIGHTS rEVERSED!





Ранг: 164.6 (ветеран), 65thx
Активность: 0.120
Статус: Участник
Волшебник

Создано: 02 апреля 2012 15:27
· Личное сообщение · #2

Собственно сервисы пишутся без пользовательского интерфейса и взаимодействия с рабочим столом, но если уж очень хочется, то можно. И делается это как обычно, только в свойствах сервиса выставляем ему "Разрешить взаимодействие с рабочим столом".

-----
Следуй за белым кроликом





Ранг: 307.9 (мудрец), 196thx
Активность: 0.180
Статус: Участник

Создано: 02 апреля 2012 15:31
· Личное сообщение · #3

Гугл говорит:
Here is a message box that you can display from service applications. Change MB_OK to alter the buttons that appear. If you want the return value from MessageBoxEx change PopServiceBox into a function.

procedure PopServiceBox(Title, Text: string);
begin
MessageBoxEx(
0, PChar(Text), PChar(Title),
MB_OK or MB_TOPMOST or MB_SERVICE_NOTIFICATION, 0
);
end;

-----
Don_t hate the cracker - hate the code.


| Сообщение посчитали полезным: OnLyOnE


Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 02 апреля 2012 15:36 · Поправил: OnLyOnE
· Личное сообщение · #4

neomant пишет:
"Разрешить взаимодействие с рабочим столом"

Это при создании (CreateService) сервиса? так у меня dwDesiredAccess == SERVICE_ALL_ACCESS или ты о чем?

mysterio пишет:
procedure PopServiceBox(Title, Text: string);
begin
MessageBoxEx(
0, PChar(Text), PChar(Title),
MB_OK or MB_TOPMOST or MB_SERVICE_NOTIFICATION, 0
);
end;

Заработало!! Сенкс..

-----
aLL rIGHTS rEVERSED!





Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 02 апреля 2012 15:43
· Личное сообщение · #5

Access тут вообще не при чём. Это в панели управления сервисами в свойстах.
Либо же почитать мсдн
To create an interactive service, do the following when calling the CreateService function:
Specify NULL for the lpServiceStartName parameter to run the service in the context of the LocalSystem account.
Specify the SERVICE_INTERACTIVE_PROCESS flag.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 02 апреля 2012 15:45
· Личное сообщение · #6

Всем спасибо! Тему закрываю...

-----
aLL rIGHTS rEVERSED!



 eXeL@B —› Программирование —› MessageBox из сервиса?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати