Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.02.2008, 12:55   #1
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию Создать программу как службу

Нужно создать программу, которая будет службой. У кого то есть пример создания службы? Спасибо
dimonbest вне форума Ответить с цитированием
Старый 13.02.2008, 15:23   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

для начала
File -> New -> Other -> Service Application
А далее только фантазия программиста.

P.S. Кстате, можно ещё и поиском воспользоваться.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 14.02.2008, 12:29   #3
Rahim1993
Пользователь
 
Аватар для Rahim1993
 
Регистрация: 27.12.2007
Сообщений: 67
По умолчанию

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

ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
S.R.H.(Rahim)
Rahim1993 вне форума Ответить с цитированием
Старый 14.02.2008, 20:09   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
Сообщение от Rahim1993 Посмотреть сообщение
Вот код, если я правильно понял про службу.
код:

ShowWindow(Handle, SW_HIDE);
ShowWindow(Application.Handle, SW_HIDE);
Rahim1993, поясните, пожалуйста, как скрытие окна относится к службам?
А от имени ''SYSTEM'' Вы как стартуете приложение?
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 14.02.2008, 20:34   #5
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

unit Stealth;

interface
uses
WinTypes, WinProcs, Classes, Forms, SysUtils, Controls, Messages;

type
TStealth = class(TComponent)
private
fHideApp: Boolean;
procedure SetHideApp(Value: Boolean);
protected
{ Protected declarations }
procedure HideApplication;
procedure ShowApplication;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
// procedure Loaded; override;
published
{ Published declarations }
property HideApp: Boolean read fHideApp write SetHideApp default false;
end;

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external 'KERNEL32.DLL';

procedure Register;

implementation

destructor TStealth.Destroy;
begin
ShowApplication;
inherited destroy;
end;

constructor TStealth.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
// fHideform := true;
end;

procedure TStealth.SetHideApp(Value: Boolean);
begin
fHideApp := Value;
if Value then
HideApplication
else
ShowApplication;
end;

procedure TStealth.HideApplication;
begin
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentPr ocessID, 1);
end;

procedure TStealth.ShowApplication;
begin
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentPr ocessID, 0);
end;

procedure Register;
begin
RegisterComponents('My', [TStealth]);
end;

end.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 18.02.2008, 14:07   #6
dimonbest
Форумчанин
 
Регистрация: 07.02.2008
Сообщений: 150
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
unit Stealth;

interface
uses
WinTypes, WinProcs, Classes, Forms, SysUtils, Controls, Messages;
..........
Добавил код к своей программе, написало такую ошибку:
Точка входа в процедуру RegisterServiceProcess не найдена в библиотеке DLL KERNEL32.DLL, не знаете что не так?
Стоит DELPHI 7.
Спасибо

Цитата:
Сообщение от Air Посмотреть сообщение
для начала
File -> New -> Other -> Service Application
А далее только фантазия программиста.

P.S. Кстате, можно ещё и поиском воспользоваться.
Сделал как Вы говорили, скомпилировал экзешник, дальше установил его с параметром интсталл...
В списке служб появилась программа.
В самой программе написал код:
Код:
procedure TService1.ServiceExecute(Sender: TService);
begin
showmessage('exec');
end;

procedure TService1.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
showmessage('cont');
end;
И в моем случае не появляются месседжи, ни один ни другой...
Что подскажете?
А задача следующая - раз в секунду - две опрашивать время, и если оно чему то равно, делать запись на диск... может есть более правильное решение?

Последний раз редактировалось Stilet; 03.08.2010 в 10:11.
dimonbest вне форума Ответить с цитированием
Старый 18.02.2008, 23:52   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
Сообщение Tservise + Поиск_на_Форуме

Interactive := True

Ищите на форуме по ключевому слову: Tservise.
Этот вопрос уже полностью решался на форуме.
Alter вне форума Ответить с цитированием
Старый 19.02.2008, 06:00   #8
D@rk M@k
Пользователь
 
Аватар для D@rk M@k
 
Регистрация: 27.12.2007
Сообщений: 34
По умолчанию

Цитата:
Сообщение от dimonbest Посмотреть сообщение
И в моем случае не появляются месседжи, ни один ни другой...
Что подскажете?
Перезагрузите комп.
D@rk M@k вне форума Ответить с цитированием
Старый 19.02.2008, 07:02   #9
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
По умолчанию

Цитата:
И в моем случае не появляются месседжи, ни один ни другой...
Что подскажете?
Цитата:
Перезагрузите комп.
Или запустите службу ручками
Viteef вне форума Ответить с цитированием
Старый 19.02.2008, 10:23   #10
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Цитата:
Сообщение от dimonbest Посмотреть сообщение
Сделал как Вы говорили, скомпилировал экзешник, дальше установил его с параметром интсталл...
В списке служб появилась программа.
В самой программе написал код:
Код:
procedure TService1.ServiceExecute(Sender: TService);
begin
showmessage('exec');
end;

procedure TService1.ServiceContinue(Sender: TService;
  var Continued: Boolean);
begin
showmessage('cont');
end;
И в моем случае не появляются месседжи, ни один ни другой...
Что подскажете?
А задача следующая - раз в секунду - две опрашивать время, и если оно чему то равно, делать запись на диск... может есть более правильное решение?
"Alter" прав, "Interactive" - это взаимодействие с рабочим столом.
Чтобы периодичечки что-то делать существует таймер.
"DateTimeTostr(now)" - функция вернёт текущее системное время.

Там где Вы написали
Код:
procedure TService1.ServiceExecute(Sender: TService);  
begin  
showmessage('exec');  
end;
появится сообщение и сервис остановится, т.к. задач в списке
процедуры ServiceExecute больше нет, выполнится Destroy и всё.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать программу Александр Ф. Фриланс 4 10.11.2008 18:14
Как создать пароль на программу? Rahim1993 Общие вопросы Delphi 3 11.07.2008 06:25
ТРЕБУЕТСЯ СОЗДАТЬ ПРОГРАММУ ЭДЛ Фриланс 8 14.03.2008 13:11
Помогите создать программу на С++ Rembo Помощь студентам 1 25.01.2008 20:46
КАК создать программу тест??? ivp88 Общие вопросы Delphi 4 02.04.2007 19:12