1 / 10

Windows System Programming

Windows System Programming. -Process Ⅱ-. Tutor: 20060106 배문희. contents. 프로세스 생성 CreateProcess 함수. 프로세스의 생성. 프로세스생성 CreateProcess 함수. ㅡㅡ ;. If you can, create process!. ㅡㅡ ;. “ 아무 프로그램 ( 예 : 계산기 ) 을 실행시켜봐라 ! 그것이 바로 프로세스를 생성 시킨 것이다 .”. ㅡㅡ ;. 프로세스 생성하기. CreateProcess. Process A.

Télécharger la présentation

Windows System Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows System Programming -Process Ⅱ- Tutor: 20060106 배문희

  2. contents • 프로세스 생성 • CreateProcess함수 호남대학교 정보통신공학과

  3. 프로세스의 생성 프로세스생성 CreateProcess함수 호남대학교 정보통신공학과

  4. ㅡㅡ; If you can, create process! ㅡㅡ; “아무 프로그램(예: 계산기)을 실행시켜봐라! 그것이 바로 프로세스를 생성 시킨 것이다.” ㅡㅡ; 호남대학교 정보통신공학과

  5. 프로세스 생성하기 CreateProcess Process A CreateProcess에 의한 생성! 프로세스 간의 관계 Process B • CreateProcessW( • LPCWSTR lpApplicationName, • LPWSTR lpCommandLine, • LPSECURITY_ATTRIBUTES lpProcessAttributes, • LPSECURITY_ATTRIBUTES lpThreadAttributes, • BOOL bInheritHandles, • DWORD dwCreationFlags, • LPVOID lpEnvironment, • LPCWSTR lpCurrentDirectory, • LPSTARTUPINFOW lpStartupInfo, • LPPROCESS_INFORMATION lpProcessInformation • ); 호남대학교 정보통신공학과

  6. 프로세스 생성하기 CreateProcess • CreateProcessW( • LPCWSTR lpApplicationName, // 생성할 프로세스의 실행파일 이름을 인자로 전달 • LPWSTR lpCommandLine, // 생성할 프로세스에 인자를 전달할 때 사용 • // 첫 번째 전달인자에 NULL을 전달하고, • // 이 두 번째 전달인자에 실행파일의 이름을 더불어 전달할 수도 있다. • LPSECURITY_ATTRIBUTES lpProcessAttributes, // 보안속성 보통 NULL • LPSECURITY_ATTRIBUTES lpThreadAttributes, // 쓰레드의보안속성 NULL • BOOL bInheritHandles, • // TRUE: 자식 프로세스는 부모 프로세스가 소유하는 핸들의 일부를 상속 • DWORD dwCreationFlags, // 프로세스의 특성(특히 우선순위)을 결정지을 때 사용 • LPVOID lpEnvironment, // Environment Block(환경 블록)을 지정 • LPCWSTR lpCurrentDirectory, //생성하는 프로세스의 현재 디렉터리를 설정하는 인자 • LPSTARTUPINFOW lpStartupInfo, // STARTUPINFO 구조체 변수의 포인터 전달 • // 생성하는 프로세스의 속성을 지정할 때 사용 • LPPROCESS_INFORMATION lpProcessInformation • // PROCESS_INFORMATION 구조체 변수의 포인터 전달 • // 프로세스 정보를 얻기 위해 사용되는 인자 • ); 호남대학교 정보통신공학과

  7. 프로세스 생성하기 예제 STARTUPINFO si = {0,}; PROCESS_INFORMATION pi; // 1단계: STARTUPINFO 구조체변수의생성및초기화 si.cb =sizeof(si); // 구조체변수의크기 si.dwFlags = STARTF_USEPOSITION | STARTF_USESIZE; // 설정된멤버의정보 si.dwX = 100; // 프로세스윈도우의x좌표 si.dwY = 200; // 프로세스윈도우의y좌표 si.dwXSize = 300; // 프로세스윈도우의가로길이 si.dwYSize = 200; // 프로세스윈도우의세로길이 si.lpTitle = _T("I am boy!");// 콘솔윈도우의타이틀바제목 //--------------------------------------------------------------- TCHAR command[] = _T("AdderProcess.exe 10 20"); TCHAR cDir[DIR_LEN]; BOOL state; // 2단계: 현재디렉터리의설정 SetCurrentDirectory(_T("E:\\Tutor\\WinSystemProgramming_Tutor\\Debug")); // 3단계: CreateProcess함수의호출 state = CreateProcess( NULL, command, NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi ); // CreateProcess if(state != 0) _fputts(_T("Creation OK! \n"), stdout); else _fputts(_T("Creation Error! \n"), stdout); #include <stdio.h> #include <tchar.h> #include <windows.h> int_tmain(intargc,TCHAR* argv[]) { DWORD val1, val2; val1 = _ttoi(argv[1]); val2 = _ttoi(argv[2]); _tprintf(_T("%d + %d = %d \n"), val1, val2, val1 + val2); _gettchar(); return 0; } AdderProcess CreateProcess 호남대학교 정보통신공학과

  8. 프로세스 생성하기 실행 화면 호남대학교 정보통신공학과

  9. ㅡㅡ; 실습: 명령 프롬프트 기능 추가 ㅡㅡ; “notepad” 를입력하면 ‘메모장’이 실행하도록 기능을 추가하시오. ㅡㅡ; 호남대학교 정보통신공학과

  10. 참고문헌 • 뇌를 자극하는 윈도우 시스템 프로그래밍 • 한빛미디어 • 윤성우 저 호남대학교 정보통신공학과

More Related