Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2013, 21:02
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию Господа, а пролейте свет на написание служб!

Здравствуйте! Возникла необходимость, написать службу. Вроде все получается, но, есть парочку вопросов. Суть дела - есть хорошая программа, (назовем ее Софтина), научил ее работать самостоятельно. Исходников к ней нету, но мне на данный момент нужно ее просто запустить, и дело в шляпе. Суть в том, чтобы запустить ее по расписанию, без логина юзера в системе. То бишь - как службу.
Сделал я вот что - написал на Delphi службу, со свистелками и всем для меня необходимым, и довольно хитрым расписанием. По моей задумке - моя служба должна просто запускать эту "Софтину", 10 минут держать в работе, и после - убивать.
А с последним трудности. Службу написать то я написал, но как работают сервисы Win, совершенно не имею представления... Если моя служба попытается запустить "Софтину" - что произойдет? Ведь Софтина, пока еще не служба.
1. Может ли служба запустить программу? (без логина в системе).
2. Если не сможет - я поюзаю утилиты, и запущу Софтину , как службу.
Собственно вопросы :
Приведите пожалуйста пару примеров, а именно - как запустить и как убить сторонний EXE из Delphi, или же - приведите пару примеров, как запустить, и остановить службу ?
Думаю, вы меня поняли))) Заранее спасибо
Ответить с цитированием
  #2  
Старый 22.05.2013, 21:10
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Код:
{Эта небольшая функция закрывает приложения, соответствующие заданному имени .exe. 
Пример: KillTask('notepad.exe'); 
            KillTask('iexplore.exe'); } 

uses 
Tlhelp32, Windows, SysUtils; 

function KillTask(ExeFileName: string): integer; 
 const    PROCESS_TERMINATE=$0001; 
var 
 ContinueLoop: BOOL; 
 FSnapshotHandle: THandle; 
 FProcessEntry32: TProcessEntry32; 
begin 
 Result:= 0; 
 FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); 
 FProcessEntry32.dwSize := Sizeof(FProcessEntry32); 
 ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); 

 while integer(ContinueLoop) <> 0 do 
  begin 
   if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = 
       UpperCase(ExeFileName)) 
    or (UpperCase(FProcessEntry32.szExeFile) = 
        UpperCase(ExeFileName))) then 
     Result := Integer(TerminateProcess(OpenProcess( 
                       PROCESS_TERMINATE, BOOL(0), 
                       FProcessEntry32.th32ProcessID), 0)); 
   ContinueLoop := Process32Next(FSnapshotHandle, 
                                 FProcessEntry32); 
end; 
CloseHandle(FSnapshotHandle); 
end;
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
alexusankov (22.05.2013)
  #3  
Старый 22.05.2013, 21:21
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Это гуд. А как быть с вопросами возможности запуска EXE службой (в фоне).
И запуск стороннего ехе?
Ответить с цитированием
  #4  
Старый 22.05.2013, 21:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

У розыча пример видел, там брался "токен (или контекст, не помню точно как эта фигня зовется) текушего юзера" и как-то там запускалось под ним. См. сайт Александра Rouse Багеля.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 23.05.2013, 10:05
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Вроде разобрался.
Но тем не менее я не понимаю, когда служба запускает оконное приложение - где оно работает то?
Десктопа то нету
MADMAN - у Багеля раскрывается тема, как службой отправить ShowMessage на рабочий стол текущего пользователя.
А мне пользователи не нужны. Я хочу 'Софтину' запускать с помощью своей службы, когда никто в систему не зашел

Последний раз редактировалось alexusankov, 23.05.2013 в 10:47.
Ответить с цитированием
  #6  
Старый 23.05.2013, 10:56
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Дак запускать тоже от имени пользователя надо, иначе софтина под системом запустится (если там ГУЙ, то не увидишь ничего на мониторе).
В примере розыча, там идет запуск самого же себя, только с параметрами.

Ну софтину можно запускать (всякие шедулеры, мониторы), если там с рабочим столом никакого взаимодействия не будет.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
alexusankov (23.05.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:28.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025