私はC++とネイティブのWin32APIを使用してプログラムを作成しています。GUIがユーザーに表示されないサイレントモードのSFXアーカイブEXEからプロセスを作成しています。しかし、SFXアーカイブの抽出中に、アプリケーションにプログレスバーを表示したいと思います。
どうやってやるの?
ありがとう。
私はC++とネイティブのWin32APIを使用してプログラムを作成しています。GUIがユーザーに表示されないサイレントモードのSFXアーカイブEXEからプロセスを作成しています。しかし、SFXアーカイブの抽出中に、アプリケーションにプログレスバーを表示したいと思います。
どうやってやるの?
ありがとう。
作成したプロセスが標準出力へのテキスト出力を生成する場合は、おそらくその出力を何らかの方法で解析して進行状況を表示できます。動作するかどうかを確認するには、コマンドラインウィンドウでアクティブにして、そこから何が得られるかを確認します。
win32をCreateProcess()
使用すると、プロセスの標準出力をパイプにリダイレクトできます。このようにして、出力が生成されるとすぐに受け取ることができます。
作成しているプロセスが何らかの形で進行状況を報告しない場合、実際にできることはあまりありません。ファイルのサイズとファイルを抽出してからプログレスバーを偽造するのにかかる平均時間の間の関数を考え出すことができます。これは、ユーザーの心を安心させるという目的に役立ちますが、それ以上のことはありません。
--編集プロセスが作成されるとすぐに、
への呼び出しが戻ります。構造体を、それが作成するプロセスのハンドルで埋めます。プロセスのメインスレッドのハンドルが含まれています。プロセスが終了するのを待ちたい場合は、スレッドが終了したときに通知されるスレッドハンドルを使用できます。それらを使い終わったら、それらのハンドルを忘れないでください。CreateProcess()
CreateProcess()
PROCESS_INFORMATION
WaitForSingleEvent()
CloseHandle()