外部プログラムの実行

  メモ帳を実行する



  
// ******************************************************************************
// メッセージ ハンドラ
// ******************************************************************************
LRESULT CALLBACK MyDialog( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
	int id;

	switch( message )
	{
		case WM_INITDIALOG:
				return TRUE;

		case WM_COMMAND:
			id = LOWORD(wParam); 
			switch( id ) {
				case IDOK:
					PostMessage( GetParent( hDlg ),WM_CLOSE, 0, 0 );
					break;
				case IDC_EXECMEMO:
					ExecuteProgram( "notepad.exe" );
					break;
			}
			break;
	}
	return FALSE;
}

// ******************************************************************************
// 外部プログラムの実行
// ******************************************************************************
void ExecuteProgram( char *Program )
{
	int ret;
	PROCESS_INFORMATION	pi;
	STARTUPINFO		si;

	ZeroMemory( &pi , sizeof(PROCESS_INFORMATION)); 
	ZeroMemory( &si , sizeof(STARTUPINFO));
	si.cb		= sizeof(STARTUPINFO);
	si.dwFlags	= STARTF_USESHOWWINDOW;
	si.wShowWindow	= SW_SHOWNORMAL;

	ret = CreateProcess(
				NULL,
				Program,
				NULL,
				NULL,
				FALSE,
				0,
				NULL,
				NULL,
				&si,
				&pi
			);

}
  



  メモ帳の終了を待つ



  
// ******************************************************************************
// 外部プログラムの実行
// ******************************************************************************
void ExecuteProgram( char *Program )
{
	int ret;
	PROCESS_INFORMATION	pi;
	STARTUPINFO		si;

	DWORD procStatus;
	MSG msg;

	ZeroMemory( &pi , sizeof(PROCESS_INFORMATION)); 
	ZeroMemory( &si , sizeof(STARTUPINFO));
	si.cb		= sizeof(STARTUPINFO);
	si.dwFlags	= STARTF_USESHOWWINDOW;
	si.wShowWindow	= SW_SHOWNORMAL;

	ret = CreateProcess(
				NULL,
				Program,
				NULL,
				NULL,
				FALSE,
				0,
				NULL,
				NULL,
				&si,
				&pi
			);

	WaitForInputIdle(pi.hProcess,INFINITE);

	while (1) {

		while (PeekMessage(&msg, (HWND)NULL, 0, 0, PM_REMOVE )) {
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}

		GetExitCodeProcess( pi.hProcess, &procStatus ) ;
		if ( procStatus != STILL_ACTIVE ) {
			break;
		}

	}
	CloseHandle(pi.hProcess);

}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ