Windowsの外部プログラムを実行するWinExecとShellExecute関数の使い方

Qtでは、WinExecとShellExecuteは外部プログラムを実行するための関数です。

  1. WinExec 関数はプログラムを実行し、その実行が終わるのを待ってから戻ります。
UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow);

lpCmdLineは実行対象プログラムのコマンドライン引数、uCmdShowはプログラムウィンドウの表示方法を指定し、戻り値はプログラムの戻り値です。

使用例:

WinExec("notepad.exe", SW_SHOW);

この例ではメモ帳プログラムが開きます。

  1. ShellExecute関数は、ファイルを文字通り実行して、ファイルの関連付けられたアプリケーションでどのように開くかを決定する。プロトタイプは以下の通り:
HINSTANCE ShellExecute(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);

ネイティブハンドルhwndで親のウィンドウを識別し、lpOperationで実行する操作(例:”開く”、”編集”)を指定し、lpFileで操作対象とするファイルのパスを指定し、lpParametersでプログラム引数を指定し、lpDirectoryでワーキングディレクトリを指定し、nShowCmdでウィンドウの表示方法を指定します。プログラムインスタンスのハンドルを返します。

使い方:

ShellExecute(NULL, "open", "C:\\path\\to\\file.txt", NULL, NULL, SW_SHOW);

このサンプルでは、関連付けられているプログラムを使用してファイル .txt が開かれます。

Windows特有のWinExecやShellExecute関数を使用する場合は、他プラットフォームで動作させる際にプラットフォームを判別して処理を行う必要があります。また、Qtにはクロスプラットフォームに対応したQProcessクラスが用意されており、外部プログラムの実行に利用できます。

bannerAds