|
답변 감사합니다.
잘 참조 하도록 하겠습니다.
날씨가 많이 싸늘해졌네요. 감기 조심하시고 항상 건강하세요..
장성호 님이 쓰신 글 :
: 아래의 예는 윈도우 서비스에 등록된 서비스를 시작하고 상태를 체크하는 api및 예제입니다.
:
: notepad.exe같은 window application을 실행하려면
: ShellExecute ,ShellExecuteEx ... 등의 함수를 사용하시면 됩니다.
:
: [샘플]
:
: //notepad 띄우기
: ShellExecute(0, "open", "notepad.exe", "", "", SW_SHOWNORMAL);
:
: //작업관리자 띄우기...
: ShellExecute(0, "open", "TaskMgr.exe", "", "", SW_SHOWNORMAL);
:
: ShellExecute 나 WinExec 등으로 검색해 보세요....
:
:
: jini 님이 쓰신 글 :
: : 안녕하십니까?? 선배님들..
: :
: : 프로세스를 강제로 start 시키려는 데, 도저히 안되는군요.
: : 여기 올려진 소스를 참고로 작성중인데.. OpenService한 후, 여기서 schService 변수가 null값입니다.
: : 핸들을 가지지 못해서 생기는 문제인 거 같은데요.
: : 혹시나 무엇이 문제인지 아는 선배님들.. 도와주세요..^ ^
: :
: : sSrvName은 "notepad.exe" 라는 실행파일 명을 가지고 있습니다.
: :
: :
: : SC_HANDLE schService;
: : SC_HANDLE schManager;
: : SERVICE_STATUS ss;
: :
: : schManager = OpenSCManager(NULL,NULL,/*GENERIC_READ*/SC_MANAGER_ALL_ACCESS);
: : schService = OpenService(schManager,sSrvName.c_str(), SERVICE_ALL_ACCESS/*SERVICE_START| SERVICE_QUERY_STATUS*/);//AMR_IP_SER.exe//AMR Remote IP Server
: : //::SetCursor(LoadCursor(NULL,IDC_WAIT));
: :
: : if (StartService(schService, 0, NULL) == true)
: : {
: : QueryServiceStatus(schService, &ss);
: : while(ss.dwCurrentState != SERVICE_RUNNING)
: : {
: : Sleep(ss.dwWaitHint);
: : QueryServiceStatus(schService, &ss);
: : }
: : }
: : else
: : {
: : schService = OpenService(schService, sSrvName.c_str(), SERVICE_CONTROL_INTERROGATE);
: :
: : ControlService(schService, SERVICE_CONTROL_INTERROGATE, &ss);
: : if(ss.dwCurrentState==SERVICE_PAUSED)
: : {
: : schService = OpenService(schService,sSrvName.c_str(),GENERIC_EXECUTE);
: : ControlService(schService,SERVICE_CONTROL_CONTINUE,&ss);
: : }
: : }
: :
: : //::SetCursor(LoadCursor(NULL,IDC_ARROW));
: : CloseServiceHandle(schService);
|