LboxNT5

  GetLongPathName (Windows 98 以上)



  
// *********************************************************
// 長い名前から短い名前を取得する
// " で囲まれていたら事前に取り去る
// 引数のデータはコピーして使用するので影響を受けない
// 戻り値 : 成功 true, 失敗 false
// *********************************************************
BOOL LboxNT5::GetLongPathName(
 LboxString *LstrLongPath, LboxString *LstrShortPath )
{
	LstrLongPath->Resize( MAX_PATH );
	return LboxNT5::GetLongPathName(
		LstrLongPath->szLboxString,
		LstrShortPath->szLboxString,
		LstrLongPath->nLboxString
	);
}
BOOL LboxNT5::GetLongPathName(
 LPTSTR lpLongPath, LPTSTR lpShortPath, int nSize )
{
	BOOL bRet;
	DWORD	nRequiredBufferSize;

	char *szPath = new char[lstrlen( lpShortPath ) + 10];
	lstrcpy( szPath, lpShortPath );
	LboxStringRemoveEnclose( szPath, '"' );

	lpLongPath[0] = 0x00;
	nRequiredBufferSize = ::GetLongPathName(
		szPath,
		lpLongPath,
		(DWORD)nSize
	);
	if ( lpLongPath[0] == 0x00 ) {
		bRet = false;
	}
	if ( nRequiredBufferSize > (DWORD)nSize ) {
		bRet = false;
	}
	bRet = true;

	delete [] szPath;
	return bRet;
}
  



  EnumProcess (Windows 95 以上)



  
// *********************************************************
// リストビューにプロセス一覧を設定
// 戻り値 : 無し
// *********************************************************
void LboxNT5::EnumProcess( LboxListview *Lview )
{
	Lview->Initialize();
	Lview->AddColumn( LVCFMT_LEFT, 100, "" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "ID" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "親プロセス ID" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "実行ファイル" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "実行されたスレッド" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "スレッド用基準Priority" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "参照カウント" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "Default Heap ID" );
	Lview->AddColumn( LVCFMT_LEFT, 100, "Module ID" );

	HANDLE hSnapshot;
	PROCESSENTRY32 pe;
	BOOL bRet;
	int nCnt;

	hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
	if ( hSnapshot != (HANDLE)-1 ) {
		ZeroMemory( &pe, sizeof(PROCESSENTRY32) );
		pe.dwSize = sizeof(PROCESSENTRY32);
		bRet = Process32First( hSnapshot, &pe );
		nCnt = 0;
		while( bRet ) {
			nCnt++;
			Lview->AddRow();
			Lview->SetColumnPrintf( 0, "%lu", nCnt );
			Lview->SetColumnPrintf( 1, "%lu", pe.th32ProcessID );
			Lview->SetColumnPrintf( 2, "%lu", pe.th32ParentProcessID );
			Lview->SetColumnPrintf( 3, "%s", pe.szExeFile );
			Lview->SetColumnPrintf( 4, "%ld", pe.cntThreads );
			Lview->SetColumnPrintf( 5, "%lu", pe.pcPriClassBase );
			Lview->SetColumnPrintf( 6, "%lu", pe.cntUsage );
			Lview->SetColumnPrintf( 7, "%lu", pe.th32DefaultHeapID );
			Lview->SetColumnPrintf( 8, "%lu", pe.th32ModuleID );

			ZeroMemory( &pe, sizeof(PROCESSENTRY32) );
			pe.dwSize = sizeof(PROCESSENTRY32);
			bRet = Process32Next( hSnapshot, &pe );
		}
		CloseHandle( hSnapshot );
		Lview->Fit();
	}
}
  



  LockWorkStation (NT のみ)

  
// *********************************************************
// ワークステーションのロック
// 戻り値 : 無し
// *********************************************************
typedef BOOL (*LPFUNC)( void );
static LPFUNC DllLockWorkStation;

BOOL LboxNT5::LockWorkStation( void )
{
	BOOL bRet;
	HINSTANCE		lib;

	lib = LoadLibrary( "user32.dll" );
	if ( lib == NULL ) {
		return false;
	}

	DllLockWorkStation = (LPFUNC)GetProcAddress( lib, "LockWorkStation" );
	if ( DllLockWorkStation == NULL ) {
		FreeLibrary( lib );
		return false;
	}
	bRet = DllLockWorkStation( );

	FreeLibrary( lib );

	return bRet;

}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ