サービス一覧

  LboxEnumService



  
// *********************************************************
// リストボックスにサービス一覧を追加
// 戻り値 : 無し
// *********************************************************
void LboxEnumService( HWND hList, int nIndex, LPCTSTR szMachine )
{
	SC_HANDLE sh;

	sh = OpenSCManager(
			szMachine,
			NULL,
			SC_MANAGER_ALL_ACCESS
	);
	if ( sh == NULL ) {
		return;
	}

	BOOL bRet;
	DWORD nSize;
	DWORD nNeed;
	DWORD nServiceCount;
	DWORD nIdx;
	LPENUM_SERVICE_STATUS lss;
	DWORD i;

	LPTSTR szBuffer,szData;
	nSize = sizeof(ENUM_SERVICE_STATUS)+256*2+10;
	szBuffer = new char[nSize];
	szData = new char[1024];

	nIdx = 0;
	while( 1 ) {
		bRet = EnumServicesStatus(
			sh,
			SERVICE_WIN32,
			SERVICE_STATE_ALL,
			(LPENUM_SERVICE_STATUS)szBuffer,
			nSize,
			&nNeed,
			&nServiceCount,
			&nIdx
		);
		if ( !bRet ) {
			if ( GetLastError() != ERROR_MORE_DATA ) {
				break;
			}
		}
		for( i = 0; i < nServiceCount; i++ ) {
			lss = (LPENUM_SERVICE_STATUS)
				(szBuffer+sizeof(ENUM_SERVICE_STATUS)*i);
			lstrcpy( szData, lss->lpDisplayName );
			switch( lss->ServiceStatus.dwCurrentState ) {
				case SERVICE_STOPPED:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "STOPPED" );
					break;
				case SERVICE_START_PENDING:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "START_PENDING" );
					break;
				case SERVICE_STOP_PENDING:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "STOP_PENDING" );
					break;
				case SERVICE_RUNNING:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "RUNNING" );
					break;
				case SERVICE_CONTINUE_PENDING:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "CONTINUE_PENDING" );
					break;
				case SERVICE_PAUSE_PENDING:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "PAUSE_PENDING" );
					break;
				case SERVICE_PAUSED:
					wsprintf( szData+lstrlen(szData),
						"\t%s", "PAUSED" );
					break;
			}
			wsprintf( szData+lstrlen(szData), "\t%s", lss->lpServiceName );
			LboxListInsert( hList, nIndex, szData );
			nIndex++;
		}
		if ( nIdx == 0 ) {
			break;
		}
	}

	delete [] szData;
	delete [] szBuffer;
	CloseServiceHandle( sh );

}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ