
ShellExecute 함수는 Windows API로, Microsoft Windows 운영체제에서 외부 프로그램 또는 파일을 실행하는 데 사용되는 함수
- 함수는 주어진 파일을 실행하는 데 필요한 프로그램을 찾아서 실행하거나, 웹 페이지를 열고 특정 URL을 브라우저로 연결하는 데 사용된다.
HINSTANCE ShellExecute(
HWND hwnd,
LPCTSTR lpOperation,
LPCTSTR lpFile,
LPCTSTR lpParameters,
LPCTSTR lpDirectory,
INT nShowCmd
);
ShellExecute는 다양한 파라미터를 받을 수 있으며, 이 파라미터들은 함수의 동작 방식을 결정한다.
uses
ShellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle, 'open', 'C:\example.txt', nil, nil, SW_SHOWNORMAL);
end;
#include <windows.h>
int main() {
ShellExecute(NULL, "open", "http://www.example.com", NULL, NULL, SW_SHOWNORMAL);
return 0;
}
ShellExecute가 성공적으로 수행되었다면, 반환되는 HINSTANCE 값은 32보다 크다.
이 경우, HINSTANCE는 실행된 프로그램이나 문서의 인스턴스 핸들을 의미합니다.
| 코드 | 값 | 설명 |
|---|---|---|
| ERROR_FILE_NOT_FOUND | 2 | 지정된 파일을 찾을 수 없습니다. |
| ERROR_PATH_NOT_FOUND | 3 | 지정된 경로를 찾을 수 없습니다. |
| ERROR_BAD_FORMAT | 11 | 실행 파일이 손상되었거나 유효하지 않은 실행파일 입니다. |
| SE_ERR_ACCESSDENIED | 5 | 지정된 파일에 대한 접근이 거부되었습니 다. |
| SE_ERR_ASSOCINCOMPLETE | 27 | 파일 연결이 완전하지 않습니다. |
| SE_ERR_DDEBUSY | 30 | DDE 트랜잭션이 다른 것에 의해 사용 중 입니다. |
| SE_ERR_DDEFAIL | 29 | DDE 트랜잭션이 실패했습니다. |
| SE_ERR_DDETIMEOUT | 28 | DDE 트랜잭션에 요청 시간이 초과되었습 니다. |
| SE_ERR_NOASSOC | 31 | 주어진 파일 이름 확장명에 연결된 응용 프로그램이 없습니다. |
| SE_ERR_SHARE | 26 | 공유 위반 오류가 발생했습니다. |
uses
ShellAPI;
procedure OpenURL;
var
H: HINST;
begin
H := ShellExecute(0, 'open', 'http://www.example.com', nil, nil, SW_SHOWNORMAL);
if H <= 32 then
ShowMessage('Error opening URL');
end;
#include <windows.h>
#include <shellapi.h>
int main() {
HINSTANCE hInst = ShellExecute(NULL, "open", "http://www.example.com", NULL, NULL, SW_SHOWNORMAL);
if ((int)hInst <= 32) {
// 오류 처리
}
return 0;
}