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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2015, 01:14   #1
MarRyb
Новичок
Джуниор
 
Регистрация: 08.02.2015
Сообщений: 1
Стрелка Запуск программы с работой системных служб

Пример системной службы
Запускаю программу ниже написанную, а компеляция не происходит из-за ошибки "1>c:\users\1\desktop\6_сп\системна я служба\sist_6\sist_6\sist_6.cpp(6): fatal error C1083: Cannot open include file: 'service.h': No such file "
Скорее всего - заголовочный файл нужно отдельно сделать, помогите как, я еще в этом(
Код:
//#include ""
#include "service.h"

HMODULE g_module=NULL;

DWORD WINAPI EntryPoint(LPVOID lpParameter)
{	
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	char svName[150];
	char *svTarget="TERRA.EXE\0";
	char svTargetName[150],*svFilePart;
	char svComLine[2048];
	char svFileName[512];

	g_module=GetModuleHandle(NULL);
	GetModuleFileName(g_module,svFileName,512);

	GetSystemDirectory(svName,150-1);
	lstrcat(svName,"\\");
	lstrcpyn(svName+lstrlen(svName),svTarget,150-lstrlen(svName));
	GetFullPathName(svName,150,svTargetName,&svFilePart);

	lstrcpyn(svComLine,svTargetName,2048);
	lstrcpyn(svComLine+lstrlen(svComLine)," ",2048-lstrlen(svComLine));
	lstrcpyn(svComLine+lstrlen(svComLine),svFileName,2048-lstrlen(svComLine));

	memset(&si,0,sizeof(STARTUPINFO));
	si.cb=sizeof(STARTUPINFO);
	si.dwFlags=STARTF_FORCEOFFFEEDBACK;

//	MessageBox(NULL,svComLine,"Command Line before...",MB_OK);
	CreateProcess(NULL,svComLine,NULL,NULL,0,0,NULL,NULL,&si,&pi);

	return 0;
}

extern "C" int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow);

VOID WINAPI Handler( DWORD fdwControl ) 
{
	
}

void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv)
{
	SERVICE_STATUS_HANDLE ssh=RegisterServiceCtrlHandler(WebPrice, &Handler);

	SERVICE_STATUS ss;
	ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
	ss.dwCurrentState=SERVICE_RUNNING;
	ss.dwControlsAccepted=0;
	ss.dwWin32ExitCode=NO_ERROR;
	ss.dwCheckPoint=0;
	ss.dwWaitHint=0;
	SetServiceStatus(ssh,&ss);

	EntryPoint(GetModuleHandle(NULL));

	ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
	ss.dwCurrentState=SERVICE_STOPPED;
	ss.dwControlsAccepted=0;
	ss.dwWin32ExitCode=NO_ERROR;
	ss.dwCheckPoint=0;
	ss.dwWaitHint=0;
	SetServiceStatus(ssh,&ss);
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nCmdShow)
{
	SERVICE_TABLE_ENTRY DispatcherTable[]=
	{
		{	WebPrice,
			(LPSERVICE_MAIN_FUNCTION)ServiceMain },
		{	NULL,
			NULL }
	};

	StartServiceCtrlDispatcher(DispatcherTable);
	return 0;
}
Заголовочный файл
Код:
#include <windows.h>

#ifndef __INC_MAIN_H
#define __INC_MAIN_H

#define WebPrice "WebPrice"
extern DWORD WINAPI EntryPoint(LPVOID lpParameter);

extern HMODULE g_module;

#endif

Последний раз редактировалось Stilet; 09.02.2015 в 07:33.
MarRyb вне форума Ответить с цитированием
Старый 09.02.2015, 08:50   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А какую функцию вы хотите взять из это сервисе?
p51x вне форума Ответить с цитированием
Старый 09.02.2015, 08:54   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Обратите внимание на эту строчку:
(LPSERVICE_MAIN_FUNCTION)ServiceMai n

Если вам приходиться делать приведение типа функнции, то скорее всего функция объявлена неправильно.
Функция ServiceMain должна быть VOID WINAPI
waleri вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запуск программы при помощи другой программы rublyabachka Общие вопросы по Java, Java SE, Kotlin 2 06.11.2013 22:16
Запуск/остановка служб Lauri Общие вопросы Delphi 3 20.01.2013 05:48
запуск программы из под другой программы fomikadze Общие вопросы C/C++ 8 13.06.2011 14:47
Прозьба помоч разобратся с работой программы. alfred Софт 1 23.06.2008 20:05
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33