Difference between r1.9 and the current
@@ -1,4 +1,5 @@
[[pagelist(^Ruby/2011년스터디)]]
== 프로젝트 ==
* 일정 시간이 지나면 웹 브라우저를 종료하는 프로그램 만들기
[[TableOfContents]]
== 프로젝트 ==
* 일정 시간이 지나면 웹 브라우저를 종료하는 프로그램 만들기
@@ -36,8 +37,9 @@
== 배운것 ==
=== 2월 21일 ===
* 윈도우 API 테스트
#include <stdlib.h>
#include <tchar.h>
=== 2월 21일 ===
* 윈도우 API 테스트
* windows API로 프로세스의 정보 받아오기
* windows API로 프로세스의 정보 받아오기 ([http://sosal.tistory.com/100 원본])
{{{~cpp
#include <stdio.h>#include <stdlib.h>
#include <tchar.h>
@@ -78,8 +80,9 @@
return 0;
}
}}}
#include <stdlib.h>
#include <tchar.h>
}
}}}
* 특정 프로세스 죽이기
* 특정 프로세스 죽이기 ([http://sosal.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%B6%9C%EB%A0%A5-%EA%B0%95%EC%A0%9C-%EC%A2%85%EB%A3%8C-%EC%86%8C%EC%8A%A4 원본])
{{{~cpp
#include <stdio.h>#include <stdlib.h>
#include <tchar.h>
2. 프로그램 기능 ¶
- OS에게 현재 실행중인 웹 브라우저의 정보(총 실행 시간, 현재 뷰중인 페이지)를 얻어 일정시간이상 실행된 (틍정 사이트를 뷰 중인) 웹 브라우저 종료시키기
3. 실행 순서 ¶
- OS에게 웹 브라우저의 정보 얻음
- 일정시간 이상 실행된 웹 브라우저 검색 (혹은 직접 카운트)
- 특정 사이트를 뷰중인지 검색
- 해당 브라우저에게 종료 메세지 보냄 (혹은 경고창을 띄움)
8.1. 2월 21일 ¶
- 윈도우 API 테스트
- windows API로 프로세스의 정보 받아오기 (원본)
- windows API로 프로세스의 정보 받아오기 (원본)
~cpp #include <stdio.h> #include <stdlib.h> #include <tchar.h> #include <Windows.h> #include <TlHelp32.h> void killProcess(TCHAR*); int _tmain(int argc, TCHAR *argv[]){ // snap every current process HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcessSnap == INVALID_HANDLE_VALUE) { _tprintf(_T("CreateToolhelp32Snapshot erre\n")); exit(EXIT_FAILURE); } // structure to hold process's inform PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); // Process32First :: get the first process snapshot if(!Process32First(hProcessSnap, &pe32)){ _tprintf(_T("Process32First error!\n")); CloseHandle(hProcessSnap); exit(EXIT_FAILURE); } _tprintf(_T("\t[Process name]\t[PID]\t[ThreadID]\t[PPID]\n")); int countProcess=0; do{ countProcess += 1; _tprintf(_T("%25s %8d %8d %8d\n"), pe32.szExeFile, pe32.th32ProcessID, pe32.cntThreads, pe32.th32ParentProcessID); }while(Process32Next(hProcessSnap, &pe32)); printf("number of process = %d", countProcess); return 0; }
- 특정 프로세스 죽이기 (원본)
~cpp #include <stdio.h> #include <stdlib.h> #include <tchar.h> #include <Windows.h> #include <TlHelp32.h> void killProcess(TCHAR*); int _tmain(int argc, TCHAR *argv[]){ // kill process TCHAR *targetProcess = _T("NateOnMain.exe"); // 종료하려는 프로세스의 이름을 쓴다 killProcess(targetProcess); return 0; } // Works fine void killProcess(TCHAR *target){ HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); HANDLE hProcess = NULL; do{ if(0 == _tcscmp(pe32.szExeFile, target)){ // get the process handle hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID); if(hProcess){ // kill it TerminateProcess(hProcess, -1); CloseHandle(hProcess); printf("종료 성공!"); break; } } }while(Process32Next(hProcessSnap, &pe32)); CloseHandle(hProcessSnap); }