[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну а в чем сложного? пиши простое сервисное приложение. В инете куча исходников по этому тему.
     
    1 person likes this.
  2. Lihosvet

    Lihosvet Member

    Joined:
    3 Dec 2009
    Messages:
    35
    Likes Received:
    5
    Reputations:
    0
    Скажите пожалуйста как получить старшее и младьшее слова lParam :)
     
    #5482 Lihosvet, 28 Jul 2010
    Last edited: 28 Jul 2010
  3. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    LOWORD(lParam)
    HIWORD(lParam)
     
  4. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Не могу понять, почему не запускается служба?
    PHP:
    SC_HANDLE hSCHandle OpenSCManager(0,0,SC_MANAGER_CREATE_SERVICE);
            if(
    hSCHandle){
                
    SC_HANDLE hServiceHandle;
                
    hServiceHandle CreateService(hSCHandleMY_MACRO_SERVICE_NAMEMY_MACRO_SERVICE_NAME0SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESSSERVICE_AUTO_STARTSERVICE_ERROR_IGNOREwindirNULLNULLNULLNULLNULL);
                if(
    hServiceHandle){
                    
    StartService(hServiceHandle0NULL);
                }
                
    CloseServiceHandle(hSCHandle);
            }
    В службах она появилась. От туда пытаюсь запустить, пишет
    Code:
    Не удалось запустить службу на локальном компьютере.
    Ошибка 1053: Служба не ответила на запрос своевременно.
    
     
    #5484 SeNaP, 28 Jul 2010
    Last edited: 28 Jul 2010
  5. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Простите:) Напишите кто нить не большую программу. С использованиев wininet. Ссылка для примера например _http://clikus.ru/reg.php
    Программа должна грабить страницу, покажите как вырезать текст(любой там же)Вывести в edit1 html код, после чего вывести капчу на экран. :) Ну естественно это будет проект applacation, желательно в СBuilder 6 :) Просто я на книжках учиться не умею .. . :)
     
  6. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Если кто может помочь через аску, то вот ICQ3355805 :)
     
  7. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    ну так обычную прогу просто так не сделаешь сервисом. Там надо в ней написать парочку строк чтобы она стала сервисом. Вот мой шаблон сервеснйо проги для си
    Code:
    SERVICE_STATUS ss; 
    
    SERVICE_STATUS_HANDLE ssHandle;
    
    HANDLE Thread;
    
    // функция установки статуса сервиса
    void SetSomeServiceStatus(DWORD dwCurrentState,DWORD dwWin32ExitCode,DWORD dwWaitHint)
    {
    	static DWORD dwCheckPoint = 1;
    	
    	if(dwCurrentState == SERVICE_START_PENDING)
    	{
    		ss.dwControlsAccepted = 0;
    	}
    	else
    	{
    		ss.dwControlsAccepted = SERVICE_ACCEPT_STOP;
    	}
    	
    	ss.dwCurrentState = dwCurrentState;
    	ss.dwWin32ExitCode = dwWin32ExitCode;
    	ss.dwWaitHint = dwWaitHint;
    	
    	if(dwCurrentState == SERVICE_RUNNING || dwCurrentState == SERVICE_STOPPED)
    	{
    		ss.dwCheckPoint = 0;
    	}
    	else
    	{
    		ss.dwCheckPoint = dwCheckPoint++;
    	}
    	
    	SetServiceStatus(ssHandle, &ss);
    }
    
    
    
    
    // функция контроля сервиса
    void _stdcall ServiceControl(DWORD dwControlCode)
    {
    	switch(dwControlCode) // проверям что за код нам послан
    	{
    		case SERVICE_CONTROL_STOP: // послана команда остановки
    		{
    			 // говорим что начали останавливаться
    			SetSomeServiceStatus(SERVICE_STOP_PENDING, NO_ERROR, 0);
    			// тут можно какнить обработать данные по закрытию, типа сохранить что надо
    			// но я просто прибью рабочий поток
    			TerminateThread(Thread, 0);
    			 // говорим что остановились
    			SetSomeServiceStatus(SERVICE_STOPPED, NO_ERROR, 0);
    			break;
    		}
    		case SERVICE_CONTROL_INTERROGATE: // не будет реагированить ниначто
    		{
    			SetSomeServiceStatus(ss.dwCurrentState, NO_ERROR, 0);
    			break;
    		}
    		default:
    		{
    			SetSomeServiceStatus(ss.dwCurrentState, NO_ERROR, 0);
    			break;
    		}
    	}
    }
    
    
    DWORD _stdcall RUNWAIT()
    {
    	// тут делаем что угодно это и есть сервсиная функция
    	return 0;
    }
    
    // точка входа в сервис
    
    void _stdcall ServiceMain(DWORD argc, LPSTR* argv)
    {
    	//  регистрируем функцию управления сервисом
    	ssHandle = RegisterServiceCtrlHandlerA("SERVICE_NAME", ServiceControl);
    	
    	if(!ssHandle) // если ошибка
    	{
    		// обработка ошибки
    	}
    	else // всё норм
    	{
    		// задаем тип серсика
    		ss.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
    		// ну это мы передаем статус что начали запускаться 
    		SetSomeServiceStatus(SERVICE_START_PENDING, NO_ERROR, 4000);
    		
    		// запускаем главный поток сервисной части
    		Thread = CreateThread(0, 0, &RUNWAIT, 0, 0,(LPDWORD)&Thread);
    		if (Thread)		
    		{
    			// говорим что сервис запустился
    			SetSomeServiceStatus(SERVICE_RUNNING, NO_ERROR, 0);
    		}
    		else
    		{
    			// поток не запустился говорим что сервис не запустился
    			SetSomeServiceStatus(SERVICE_STOPPED, NO_ERROR, 0);
    		}
    
    	}
    }
    
    
    int __cdecl main(int argc, char* argv[])
    { 
    	SERVICE_TABLE_ENTRY DispatcherTable[] = {{"SERVICE_NAME", ServiceMain}, {NULL, NULL}};
    
    
    	if (argc == 2 && argv[1] == 's') // если прога запущена с параметром s значит это сервис
    	{
    		// начинаем инициализацию сервиса
    		if (!StartServiceCtrlDispatcherA(DispatcherTable))
    		{
    			// обработка ошибки
    		}
    		else
    		{
    			// сервис начал стартовать
    		}
    	}
    	else // если запустились как обычная прога
    	{
    
    	}
    	
    	
            return 0;
    
    }
    
     
  8. Lihosvet

    Lihosvet Member

    Joined:
    3 Dec 2009
    Messages:
    35
    Likes Received:
    5
    Reputations:
    0
    Спасибо :)

    А как получить текст из поля Edit?
     
  9. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    GetWindowText()
     
  10. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    slesh,
    Я пишу программу не совсем для сервиса . Просто хочу, чтобы при старте системы программа копировалась, например в C:\.
    То есть если юзать твой шаблон, то
    Code:
     
     DWORD _stdcall RUNWAIT()
    {
    	Copy(); и т.п.?
    // тут делаем что угодно это и есть сервсиная функция
    	return 0;
    }
    
    Код программы должен быть в DWORD _stdcall RUNWAIT() {////}?
     
  11. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Скажи прямо что хочешь написать троянь,так легче будете тебе помочь.
     
  12. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Ну что-то типа этого, учу так C :(
     
  13. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8
    Так ведь тебе пофиг если он будет запущен как сервис или как нормальный процесс ?
     
  14. revaldo666

    revaldo666 New Member

    Joined:
    28 Jul 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Подскажите как в опенгл произвести определение столкновения, и если столкновение произошло то треугольник меняет цвет...
    с использованием bool TestCollide();
    Если надо могу скинуть весь код программы
     
  15. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Я в этом совсем не шарю, но хотел сделать, чтобы прога повисла в процессах. И при старте , чтобы она сама запускалась и опать висла проессах
     
  16. RAINUR

    RAINUR New Member

    Joined:
    24 May 2010
    Messages:
    151
    Likes Received:
    0
    Reputations:
    0
    Кто если может выложите или напишите в приват исходники програм на С++ которые не жалко пожалуйста :)
     
  17. zeppe1in

    zeppe1in Elder - Старейшина

    Joined:
    12 Jul 2006
    Messages:
    343
    Likes Received:
    66
    Reputations:
    18
    RAINUR
    http://www.koders.com/
     
  18. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    \Documents\CodeBlocks\myC\main.c|4|error: urlmon.h: No such file or directory|
    \Documents\CodeBlocks\myC\main.c||In function 'main':|
    \Documents\CodeBlocks\myC\main.c|34|warning: implicit declaration of function 'URLDownloadToFile'|
    \Documents\CodeBlocks\myC\main.c|41|warning: unused variable 'nRet'|
    ||=== Build finished: 1 errors, 2 warnings ===|
    Такая вот ошибка при компиляции. Как подключать библиотеки в CodeBlocks?
    Как добавить urlmon.h к остальным инклудам ?
     
  19. R0nin

    R0nin Member

    Joined:
    11 Jul 2010
    Messages:
    261
    Likes Received:
    24
    Reputations:
    8

    #include "путь_к_файлу"

    а если он находится в папке include тогда

    #include <название_файла.h>
     
  20. SeNaP

    SeNaP Elder - Старейшина

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Попробовал так
    #include "C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\UrlMon.h"
    Еще больше ошибок стало.
    Закинул его сюда
    C:\Program Files\CodeBlocks\MinGW\include , подключаю #include <urlmon.h>
    Те же самый ошибки
    Code:
    \Documents\CodeBlocks\myC\main.c|4|error: urlmon.h: No such file or directory|
    \Documents\CodeBlocks\myC\main.c||In function 'main':|
    \Documents\CodeBlocks\myC\main.c|34|warning: implicit declaration of function 'URLDownloadToFile'|
    \Documents\CodeBlocks\myC\main.c|41|warning: unused variable 'nRet'|
    ||=== Build finished: 1 errors, 2 warnings ===|
    
    :(
     
Thread Status:
Not open for further replies.