안녕하세요.. 잠시 쉬어가려합니다. 


제가 나이가 좀 있다보니 요즘의 vc++ 툴인 2010 버젼 같은걸 잘 쓰질 못해서.. 저는 간간히 C++ 을 개발을 하는데.


여전히 6.0 을 사용합니다. ㅎㅎ


새로운 툴이 익숙하지 않고, warning level 이 높아서 익숙하지 않더라고요..


함수를 가져다 쓰실 때 에러가 날 수는 있는데 해당 툴에 맞게 좀 손보고 사용하실면 될 것 같습니다.


그럼 많이 많이 이용해 주세요. ^^



'시스템' 카테고리의 다른 글

[초대장받기] 드디어 티블로거가 되었습니다.  (0) 2016.09.27








오늘 소개하려고 하는 영상은 유튜브에 올라온 자석 도미노 영상..


정말 공들여서 만든 영상이네요..


아마 물리학에 대해 잘 아시는 분이 만든 듯합니다. ㅎㅎ


이 영상은 반드시 봐야할 영상이네요~


티비플] 한번보면 멈출수없는 자석도미노



후회 안하실거에요..


******************************************************************************

유튜브사이트에 가지 않고도 곰플레이어처럼 플레이 할 수 있는 방법을 찾으세요?

원하신다면 아래 저의 블로그에서 확인해 주세요.

http://neoryuee.tistory.com/13

******************************************************************************












오늘은 해당 프로그램이 실행중인지 확인하는 함수를 소개하고자 합니다.

보통 FindWindow 을 사용하면 되지만.. 부팅 시 자동실행이나 PC의 부하가 많은 상태에서는 FindWindow 로는 해당 window을 찾지 못하는 경우가 있습니다.

그래서 직접 작업관리자에서 해당 파일이 실행중인지 확인해서 해당 핸들을 얻는 방법이 가장 정확한 방법이기에 소개합니다.


보통 FindWindow 로 먼저 처리하고, 프로그램을 운영을 하면서 FindWindow 가 통과하는 경우가 발생하면 CreateToolhelp32Snapshot 울 이용을 하개 됩니다..




* 소스코드


// CString parm_exe : exe 파일명

// DWORD parm_id : 프로세스 아이디 (모르는 경우 -1 사용)

int Util::FindDoubleProcess(CString parm_exe, DWORD parm_id)

{

int ret_val = 0;

BOOL bGet = FALSE;

CString read_name;

CString parm_exe_lower = parm_exe;

HANDLE hSnapshot;

PROCESSENTRY32 ppe; //구성된 자료구조를 저장하기 위한 엔트리.



hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);//system 프로세서(pid=0)의 상태를 읽어 온다

ppe.dwSize = sizeof(PROCESSENTRY32);    //엔트리 구조체 사이즈를 정해준다.

bGet = Process32First(hSnapshot, &ppe); //엔트리 중 자료를 가져온다.

parm_exe_lower.MakeLower();

while (bGet){

read_name = ppe.szExeFile;

read_name.MakeLower();

if( read_name == parm_exe && parm_id != ppe.th32ProcessID ){

int dd = ppe.th32ProcessID;

ret_val = 1; break;

}

bGet = Process32Next(hSnapshot, &ppe);

}


CloseHandle(hSnapshot);


return ret_val;

}


* 사용법

int ret = FindDoubleProcess("aaa.exe", -1);

위처럼 해당파일명이 존재하는지 찾게 됩니다. 
대소문자를 구분하게 되어서 호출 시 소문자로 전달해야 정확히 찾게 됩니다.

참 쉽죠~~






+ Recent posts