ShellExecuteA를 어떻게 사용하나요?
실행 파일을 실행할 수 있는 세 가지 API 함수는 WinExec, ShellExecute 및 CreateProcess입니다.
1.CreateProcess는 사용이 복잡하기 때문에 거의 사용되지 않습니다.
2.WinExec은 주로 EXE 파일을 실행합니다. 예: WinExec('Notepad.exe Readme.txt', SW_SHOW);
3.ShellExecute는 EXE 파일뿐만 아니라 관련 파일도 실행할 수 있습니다.
먼저 shellapi.pas 유닛을 인용해야 합니다: ShellAPI를 사용합니다;
1) 표준 사용법
ShellExecute 함수 프로토타입과 매개변수 의미는 다음과 같습니다. :
function ShellExecute(hWnd: HWND; Operation, FileName,Parameters, Directory: PChar; ShowCmd: Integer): HINST;
●hWnd: 부모 창을 지정하는 데 사용됩니다. 핸들. 함수 호출 중 오류가 발생하면 Windows 메시지 창의 상위 창 역할을 합니다. 예를 들어, 애플리케이션의 기본 창
핸들, 즉 Application.Handle로 설정하거나 데스크톱 창 핸들(GetDesktopWindow 함수로 획득)로 설정할 수 있습니다.
●작업: 수행할 작업을 지정하는데 사용됩니다. "열기" 작업은 FileName 매개변수로 지정된 프로그램을 실행하거나 FileName 매개변수로 지정된 파일 또는 파일 폴더를 여는 것을 의미합니다. "인쇄" 작업은 FileName 매개변수로 지정된 파일을 인쇄하는 것을 의미합니다. FileName 매개변수로 지정된 폴더. 매개변수가 nil로 설정되면 기본 작업인 "open"이 수행된다는 의미입니다
.
●파일 이름: 열려는 파일 이름, 실행할 프로그램 파일 이름, 찾아볼 폴더 이름을 지정하는 데 사용됩니다.
●매개변수: FileName 매개변수가 실행 가능한 프로그램인 경우 이 매개변수는 명령줄 매개변수를 지정하고, 그렇지 않은 경우 이 매개변수는 nil 또는 PChar(0)여야 합니다.
●디렉터리: 기본 디렉터리를 지정하는데 사용됩니다.
●ShowCmd: FileName 매개변수가 실행 가능한 프로그램인 경우 이 매개변수는 프로그램 창의 초기 표시 모드를 지정하고, 그렇지 않으면 이 매개변수를 0으로 설정해야 합니다.
ShellExecute 함수가 성공적으로 호출되면 반환 값은 실행된 프로그램의 인스턴스 핸들입니다. 반환 값이 32보다 작으면 오류가 발생한 것입니다.
위 내용은 ShellExecute 함수의 표준 사용법일 뿐입니다. 아래에서는 특별한 사용법을 소개합니다.
2) 특별한 사용법
FileName 매개변수가 "', nil, nil, SW_SHOWNORMAL로 설정된 경우);
형식 2:/default.htm ' , nil, nil, SW_SHOWNORMAL);
FileName 매개변수가 "mailt" 프로토콜 형식으로 설정된 경우 이 함수는 Microsoft Outlook(Microsoft도 포함)과 같은 기본 메일 클라이언트를 시작합니다 p>
Outlook Express) 또는 Netscape Messanger.
사용자 컴퓨터에 여러 개의 메일 클라이언트가 설치되어 있는 경우 이 기능은 Windows 9x/NT 레지스트리의 mailto 프로토콜 처리
프로그램 설정에 따라 시작할 메일 클라이언트를 결정합니다.
형식 1: mailt
예: ShellExecute(handle, 'open', 'mailt', nil, nil, SW_SHOWNORMAL);
형식 2: mailt 사용자 계정@메일 서버 주소
예: ShellExecute(handle, 'open', 'mailtwho@mail.neu.edu.cn', nil, nil , SW_SHOWNORMAL); 새 이메일 창을 열고 수신자 주소를 자동으로 입력합니다
. 여러 수신자 주소를 지정한 경우 수신자 주소를 세미콜론이나 쉼표로 구분해야 합니다(아래 동일).
형식 3: mailt 사용자 account@mail 서버 주소?subject=mail subject&body=mail text
예: ShellExecute(handle, 'open', ' mailtwho@mail.neu. edu.cn?subject=Hello&Body=This is a test', nil, nil,
SW_SHOWNORMAL); 새 이메일 창을 열고 수신자 주소, 이메일 제목 및 이메일 본문을 자동으로 입력합니다. 이메일 본문에 여러 줄의 텍스트가 포함된 경우 각 텍스트 줄 사이에 줄 바꿈
이스케이프 문자 %0a을(를) 추가해야 합니다.
예(Delphi):
애플리케이션에서 c:\Project1.exe를 호출합니다.
ShellExecute(handle, 'open', 'c:\ Project1 .exe', 'String content', nil, SW_SHOWNORMAL);
Project1.exe에서 호출 가능:
절차 Tform1.formCreate(Sender: TObject);
p>
var
i: 정수;
시작
for i:=1 to paramcount do
if ParamStr( i)lt; '' then
showmessage(ParamStr(i));
end;
마지막 매개변수는 표시되는 값을 지정합니다. 창문에 대한 성적인 명령. 다음 상수 중 하나를 사용하십시오:
SW_HIDE는 창을 숨기고 창을 활성 상태로 만듭니다.
SW_MINIMIZE는 창을 최소화하고 창을 활성 상태로 만듭니다.
SW_RESTORE 창을 원래 크기와 위치로 표시하고 동시에 활성화합니다.
SW_SHOW 창을 활성화하는 동안 현재 크기와 위치로 창을 표시합니다.
SW_SHOWMAXIMIZED 최대 창 최소화 및 활성화
SW_SHOWMINIMIZED 창 최소화 및 활성화
SW_SHOWMINNOACTIVE 활성 창을 변경하지 않고 창 최소화
SW_SHOWNA 사용 창 표시 활성 창을 변경하지 않고 현재 크기와 위치
SW_SHOWNOACTIVATE 활성 창을 변경하지 않고 최신 크기와 위치로 창을 표시합니다.
SW_SHOWNORMAL은 SW_RESTORE와 동일합니다.