일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Threads
- SetTitleMatchMode
- 배열
- Blocks
- SetMouseDelay
- EnvSub
- API
- ControlSend
- SetControlDelay
- DetectHiddenWindows
- Var:=식
- autohotkey
- MouseClick
- ControlGetText
- IfInString
- 식
- if
- IfWinExist
- SetEnv
- IF (식)
- EnvAdd
- if(식)
- StringGetPos
- EnvDiv
- 식의 설명
- SetKeyDelay
- Menu
- EnvSet
- EnvMult
- 함수
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
CreateProcess(A) 본문
CreateProcess(A)
새롭다 1 개의 프로세스와 그 프라이마리스렛드를 작성합니다.새로운 프로세스는, 지정된 실행 가능 파일을 실행합니다.
BOOL CreateProcessA( PCTSTR pszApplicationName, // 실행 파일명 PTSTR pszCommandLine, // 커멘드 라인 파라미터 PSECURITY_ATTRIBUTES psaProcess, // 프로세스의 보호 속성 PSECURITY_ATTRIBUTES psaThread, // 스렛드의 보호 속성 BOOL bInheritHandles, // 오브젝트 핸들 계승의 플래그 DWORD fdwCreate, // 속성 플래그 PVOID pvEnvironment, // 환경 변수 정보에의 포인터 PCTSTR pszCurDir, // 기동시 커런트 디렉토리 LPSTARTUPINFO psiStartInfo, // 윈도우 표시 설정 PPROCESS_INFORMATION ppiProcInfo // 프로세스·스렛드의 정보 );
KERNEL32.DLL
인수
- pszApplicationName
-
기동하는 실행 가능 파일의 파일명을 나타내는 문자열의 주소 지정을 합니다.실행 가능 파일로서 Windows 베이스의 실행 가능 모듈을 지정할 수 있습니다.또, 적절한 하부조직이 로컬 컴퓨터로 이용 가능한 경우는, 다른 타입의 실행 가능 모듈(예를 들면,MS-DOS (이)나 OS/2 )도 지정할 수 있습니다.
파일명이 풀 패스로 지정되어 있지 않을 때는 커런트 디렉토리로부터 로드합니다.검색 패스는 사용되지 않습니다.또, 파일명에 확장자(extension)가 포함되지 않은 경우는, .exe 하지만 부가됩니다.따라서 파일명의 확장자(extension)가 .com 인 경우에는, 확장자(extension)를 포함하지 않으면 안됩니다.
이 파라미터에 0 (NULL) (을)를 지정할 수도 있습니다.이 때는 pszCommandLine 파라미터의 최초의 토큰을 실행 파일명으로서 취급합니다.
16비트의 어플리케이션을 실행하는 경우, 이 파라미터에 0 (NULL) (을)를 지정해,pszCommandLine 파라미터의 최초의 토큰에 실행 가능 모듈의 파일명을 지정하지 않으면 안됩니다.
- pszCommandLine
-
커멘드 라인 파라미터로서 새로운 프로세스에 건네주는 문자열의 주소를 지정합니다.
pszApplicationName 파라미터에 0 (NULL) 하지만 지정되어 있을 때는 이 파라미터의 최초의 토큰이 실행 가능 파일명으로서 다루어집니다.이 경우, 지정한 실행 가능 파일이 풀 패스 지정이 아니면, 어플리케이션이 로드 된 디렉토리, 커런트 디렉토리, 시스템 디렉토리, Windows 디렉토리, 환경 변수 PATH 그리고 지정된 디렉토리의 순서에 검색해, 로드합니다.실행 파일명에 확장자(extension)가 포함되지 않은 경우는 ".EXE" (을)를 부가합니다.다만, 파일명의 최후가 1 개의 피리오드(.)(으)로 끝나 있고 확장자(extension)가 포함되지 않은 경우나, 파일명에 패스가 포함되어 있는 경우에는, ".EXE" (은)는 부가되지 않습니다.
파일명에 직접 패스가 포함되지 않은 경우에는, 이하의 순서로 실행 가능 파일이 검색됩니다.
- 어플리케이션이 로드 된 디렉토리
- parent process의 커런트 디렉토리
- GetSystemDirectory 함수로 취득된다32비트Windows시스템 디렉토리
Windows 95/98/Me: Windows 시스템 디렉토리
- 16비트Windows시스템 디렉토리
- GetWindowsDirectory 함수로 취득된다Windows디렉토리
- PATH 환경 변수에 포함되는 디렉토리
시스템은, 커멘드 라인 문자열을 파일명과 인수로 나누기 위해서 눌 문자를 추가합니다.이것에 의해, 원의 문자열이 2개의 문자열에 분할되게 됩니다.
- psaProcess
-
돌려주어지는 프로세스 핸들을 child process에 계승할 수 있도록 할지를 지정하기 위한 SECURITY_ATTRIBUTES 구조체에의 포인터를 지정합니다. 0 (NULL) (을)를 지정하면, 핸들은 계승되지 않습니다.
SECURITY_ATTRIBUTES 구조체의 lpSecurityDescriptor 멤버로 시큐러티 기술자를 설정합니다. 0 (NULL) (을)를 지정하면 디폴트의 시큐러티 기술자가 사용됩니다.
- psaThread
-
돌려주어지는 프라이마리스렛드한돌을 child process에 계승할 수 있도록 할지를 지정하기 위한 SECURITY_ATTRIBUTES 구조체에의 포인터를 지정합니다. 0 (NULL) (을)를 지정하면, 핸들은 계승되지 않습니다.
SECURITY_ATTRIBUTES 구조체의 lpSecurityDescriptor 멤버로 시큐러티 기술자를 설정합니다. 0 (NULL) (을)를 지정하면 디폴트의 시큐러티 기술자가 사용됩니다.
- bInheritHandles
-
호출측 프로세스가 가지는 오브젝트의 계승 가능한 핸들을 새로운 프로세스에 계승시킬지를 지정합니다.계승시키는 경우는 1 (TRUE) (을)를, 계승시키지 않는 경우는 0 (FALSE) (을)를 지정합니다.계승된 핸들은, 원의 핸들과 같은 값과 액세스권을 가집니다.
- fdwCreate
-
프로세스의 속성을 지정하기 위한 플래그를 지정합니다.
프로세스 작성에 관한 제어 플래그를 이하의 값의 편성으로 지정합니다.
치 의미 0x00000001 (DEBUG_PROCESS) 호출 프로세스가 디버거 때 사용합니다.자손 프로세스(디버그 대상)로 디버그 이벤트가 일어나면, parent process(디버거)에 통지됩니다.
Windows 95/98/Me: 새로운 프로세스가16비트 어플리케이션인 경우는, 이 플래그는 무효입니다.
0x00000002 (DEBUG_ONLY_THIS_PROCESS) 이 플래그가 지정되지 않는 경우, 한편, 호출측 프로세스가 디버그 되고 있는 경우에는, 새로운 프로세스도 또 호출해 옆프로세스의 디버거에 의한 디버그 대상이 됩니다.
0x00000004 (CREATE_SUSPENDED) 새로운 프로세스의 프라이마리스렛드를 중지 상태로 기동합니다.중지 상태의 스렛드를 실행시키려면 ResumeThread 함수를 사용합니다.
0x00000008 (DETACHED_PROCESS) 새로운 캐릭터 베이스의 프로세스가 parent process의 콘솔 윈도우를 이용할 수 없게 합니다.이 플래그를 CREATE_NEW_CONSOLE 플래그와 함께 지정할 수 없습니다.
0x00000010 (CREATE_NEW_CONSOLE) 새로운 프로세스를 위해서 새로운 콘솔 윈도우를 작성합니다.이 플래그를 DETACHED_PROCESS 플래그와 함께 지정할 수 없습니다.
0x00000200 (CREATE_NEW_PROCESS_GROUPE) 새로운 캐릭터 베이스의 프로세스를 새로운 프로세스 그룹의 루트 프로세스로 합니다.프로세스 그룹에는, 루트 프로세스의 모든 자손 프로세스가 포함됩니다.새로운 프로세스 그룹의 프로세스ID(은)는, ppiProcInfo 파라미터로 나타난다 PROCESS_INFORMATION 구조체에 돌려주어지는 프로세스ID(와)과 같게 됩니다.프로세스 그룹은, 콘솔 프로세스의 그룹에 [Ctrl]+[Break] 시그널 송신을 가능하게 하기 위해서 GenerateConsoleCtrlEvent 함수에 의해서 사용됩니다.
이 플래그가 지정되면, 새로운 프로세스 그룹의 모든 그룹에 대한다 [Ctrl]+[C] 시그널이 무효가 됩니다.
0x00000400 (CREATE_UNICODE_ENVIRONMENT) pvEnvironment 파라미터가 가리키는 환경 블록이 Unicode (을)를 사용하고 있는 것을 나타냅니다.
Windows 95/98/Me: 이 플래그는 서포트되지 않습니다.
0x00000800 (CREATE_SEPARATE_WOW_VDM) 이 플래그는16비트Windows베이스의 어플리케이션을 실행시키는 경우만 유효합니다.새로운 프로세스를 별개의 가상DOS머신(VDM) 중(안)에서 실행시킵니다.이 플래그를 지정하지 않고 개시된다16비트Windows베이스의 어플리케이션은 모두, 단일의 공유VDM중(안)에서 스렛드로서 실행됩니다.
Windows 95/98/Me: 이 플래그는 서포트되지 않습니다.
0x00001000 (CREATE_SHARED_WOW_VDM) 이 플래그는16비트Windows베이스의 어플리케이션을 실행시키는 경우만 유효합니다. WIN.INI 의 Windows 섹션(레지스트리의 HKEY_LOCAL_MACHINE\ System\CurrentConsoleSet\Control\WOW 키)에 있다 DefaultSeparateVDM 스윗치가 TRUE (으)로 설정되어 있는 경우에서도, 새로운 프로세스를 공유VDM위에서 실행시키도록(듯이) 합니다.
Windows 95/98/Me: 이 플래그는 서포트되지 않습니다.
0x00002000 (CREATE_FORCEDOS) 16비트 OS/2 어플리케이션에 파묻혔다MS-DOS어플리케이션을 강제적으로 실행시킵니다.
0x01000000 (CREATE_BREAKAWAY_FROM_JOB) 어느 작업에 속하고 있는 프로세스로부터 기동되는 child process이 그 작업에 속하지 않게 합니다.호출측 프로세스를 작업에 관련지을 수 있지 않은 경우는, 이 플래그는 효과를 가지지 않습니다.호출측 프로세스를 작업에 관련지을 수 있고 있는 경우는 작업에 JOB_OBJECT_LIMIT_BREAKAWAY_OK 제한이 설정되어 있을 필요가 있습니다.
Windows 95/98/Me/NT 4.0 이전: 이 플래그는 서포트되지 않습니다.
0x04000000 (CREATE_DEFAULT_ERROR_MODE) 새로운 프로세스에, 호출측 프로세스의 에러 모드를 계승시키지 않습니다.새로운 프로세스에는, 디폴트의 에러 모드를 적용합니다.
0x08000000 (CREATE_NO_WINDOW) 이 플래그는16비트Windows베이스의 어플리케이션을 실행시키는 경우만 유효합니다.콘솔 프로그램을 콘솔 윈도우 없이 실행시킵니다.
Windows 95/98/Me: 이 플래그는 서포트되지 않습니다.
프로세스의 우선도의 클래스를 이하의 값으로부터 지정합니다.지정하지 않는 경우는 NORMAL_PRIORITY_CLASS (이)가 됩니다.다만, 호출측 프로세스의 우선도가 IDLE_PRIORITY_CLASS 또는 BELOW_NORMAL_PRIORITY_CLASS 의 경우는, 각각의 우선도클래스가 됩니다.
치 우선도 0x00000020 (NORMAL_PRIORITY_CLASS) 통상 0x00000040 (IDLE_PRIORITY_CLASS) 아이돌 0x00000080 (HIGH_PRIORITY_CLASS) 우선 0x00000100 (REALTIME_PRIORITY_CLASS) 리얼타임 0x00004000 (BELOW_NORMAL_PRIORITY_CLASS) Windows 2000 이후: 통상 이하 0x00008000 (ABOVE_NORMAL_PRIORITY_CLASS) Windows 2000 이후: 통상 이상 - pvEnvironment
-
새로운 프로세스에 건네주는 환경 변수를 격납한 메모리브록크의 주소를 지정합니다. 0 (NULL) (을)를 지정하면 parent process의 것이 사용됩니다.
환경 변수 블록은1개이상의 눌 문자로 단락지어진 문자열이 포함됩니다.마지막 문자열의 뒤에는2개가 연속한 눌 문자가 없으면 안됩니다.각각의 문자열은
이름=치
의 형식이 됩니다.환경 변수의 이름에는 separator로서 사용되는 「=」(등호) 이외의 임의의 문자를 사용할 수 있습니다.
fdwCreate 파라미터에 CREATE_UNICODE_ENVIRONMENT 플래그가 포함되어 있는 경우에는, 환경 변수 블록에는Unicode문자열을 격납합니다.그 이외의 경우에는ANSI문자열을 격납합니다.
- pszCurDir
-
새로운 프로세스의 기동시의 커런트 디렉토리의 문자열의 주소를 지정합니다.이 문자열은, 드라이브 문자를 포함한 풀 패스로 지정하지 않으면 안됩니다.이 파라미터에 0 (NULL) (을)를 지정하면 parent process의 커런트 디렉토리가 됩니다.
- psiStartInfo
-
기동할 때의 정보를 격납했다 STARTUPINFO 구조체의 주소를 지정합니다.
- ppiProcInfo
-
기동한 프로세스에 대한 정보를 격납한다 PROCESS_INFORMATION 구조체의 주소를 지정합니다.
반환값
성공하면 0 이외의 값이 돌아갑니다.
실패하면 0 하지만 돌아갑니다.확장 에러 정보를 취득하려면 , GetLastError 함수를 사용합니다.
해설
ppiProcInfo 파라미터로 나타난다 PROCESS_INFORMATION 구조체에 격납된 프로세스 핸들과 스렛드한돌은 불필요하게 되면 CloseHandle 함수로 파기하지 않으면 안됩니다.
프로세스 및 스렛드에는, 각각32비트의 프로세스 ID 및 스렛드 ID 하지만 할당할 수 있습니다.이러한 값은 PROCESS_INFORMATION 구조체에 격납됩니다.프로세스 ID (은)는 프로세스가 종료할 때까지, 스렛드 ID (은)는 스렛드가 종료할 때까지, 모든 프로세스로 유효합니다.
대응 정보
Windows 95 이후 / Windows NT 3.1 이후
'API 관련 > Win32 API 함수' 카테고리의 다른 글
CreateRoundRectRgn (0) | 2007.11.08 |
---|---|
CreateRectRgn (0) | 2007.11.08 |
CreatePopupMenu (0) | 2007.11.08 |
CreatePolygonRgn (0) | 2007.11.08 |
CreateMutex(A) (0) | 2007.11.08 |