C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[21097] Re:프로세스에 관한 질문입니다.
새더군 [mmouse] 990 읽음    2002-08-29 21:21
안녕하세요

다른 프로세스의 메모리 읽어 오는 부분과 쓰레드는 별 상관이 없습니다.
쓰레드는 원래 CPU 스케쥴링의 문제이니깐요..

Snapshot 은 말 그대로 현재 내 컴퓨터에서 돌아가는 쓰레드, 프로세스, 메모리 영역의
스냅샷을 찍는것을 말합니다.
즉, 현재 돌아가고 있는 프로세스들과 그 프로세스에서 사용하는 쓰레드들, 불러들인
모듈의 어드레스 등등을 모두 담고 있는것이죠.
CreateToolhelp32Snapshot 라는 펑션을 참조해 보세요
그 스냅샷을 만들어주는 펑션입니다.

그리고 프로그램의 전체 흐름은 틀리지 않습니다.


: 1. 캡션으로 해당 pg 핸들을 찾는다
:    HWND handle = FindWindow(0,"계산기");
: 2. 해당 pg의 프로세스 ID를 얻는다.
:    GetWindowThreadProcessId(handle, &processID );
: 3. 프로세스 오픈
:    processHandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,processID);   

프로세스의 사이즈를 파악한다기보다.
현재 OS 에서 어플리케이션이 사용할수 있는(사용자가 직접 손댈수 있는) 메모리 영역의
최소값과 최대값을 가져오고 있는것이죠

: 4. pg 싸이즈를 파악한다.
:    GetSystemInfo(&sysInfo);
:    baddr = sysInfo.lpMinimumApplicationAddress;
:    memset(&mbi,0,sizeof(MEMORY_BASIC_INFORMATION));
:    VirtualQueryEx(processHandle,badd....)
:    memoryStart=sysInfo.lpMinimumApplicationAddress ;
:    memorySize=sysInfo.lpMaximumApplicationAddress ;
: 5. for문으로 해당 pg에서 원하는 부분을 찾는다.
:    ReadProcessMemory(processHandle,(void *)i,(LPVOID)&v,4,&size);
: 6. close 핸들

그럼 좋은 하루 되세요..

+ -

관련 글 리스트
21090 프로세스에 관한 질문입니다. 이영우 750 2002/08/29
21097     Re:프로세스에 관한 질문입니다. 새더군 990 2002/08/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.