mfc에서 CWnd로 실행프로세스 이름 알아오기 소스코드

mfc에서 CWnd로 실행프로세스 이름 알아오기 소스코드는?

MFC에서 CWnd를 사용하여 실행 중인 프로세스의 이름을 가져오려면 GetWindowThreadProcessId 함수와 GetModuleBaseName 함수를 결합하여 사용할 수 있습니다. 아래는 해당 작업을 수행하는 MFC 소스 코드의 예시입니다.

#include <afxwin.h>

#include <psapi.h>


CString GetProcessNameFromWindow(CWnd* pWnd)

{

    DWORD processId;

    ::GetWindowThreadProcessId(pWnd->GetSafeHwnd(), &processId);


    HANDLE hProcess = ::OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);

    if (hProcess)

    {

        TCHAR szProcessName[MAX_PATH];

        if (::GetModuleBaseName(hProcess, NULL, szProcessName, sizeof(szProcessName) / sizeof(TCHAR)))

        {

            ::CloseHandle(hProcess);

            return CString(szProcessName);

        }


        ::CloseHandle(hProcess);

    }


    return CString();

}


int main()

{

    // 예제: 현재 실행 중인 메인 프레임 윈도우의 프로세스 이름 가져오기

    CWnd* pMainWnd = AfxGetMainWnd();

    CString processName = GetProcessNameFromWindow(pMainWnd);


    if (!processName.IsEmpty())

    {

        AfxMessageBox(_T("현재 실행 중인 프로세스 이름: ") + processName);

    }

    else

    {

        AfxMessageBox(_T("프로세스 이름을 가져오는데 실패했습니다."));

    }


    return 0;

}

위의 코드에서 GetProcessNameFromWindow 함수는 CWnd 객체를 인자로 받아 해당 윈도우가 속한 프로세스의 이름을 가져옵니다. 이를 위해 GetWindowThreadProcessId 함수로 프로세스 ID를 얻고, OpenProcess 함수로 프로세스를 열어 GetModuleBaseName 함수로 프로세스 이름을 가져옵니다.

main 함수에서는 현재 실행 중인 메인 프레임 윈도우의 프로세스 이름을 가져오도록 예시를 제시했습니다. 원하는 다른 윈도우를 사용하려면 해당 윈도우에 대한 CWnd 포인터를 얻어와 GetProcessNameFromWindow 함수에 전달하면 됩니다.

반환된 processName 변수에는 프로세스 이름이 들어있습니다. 주의할 점은 프로세스 이름을 가져오는데 실패한 경우 processName 변수가 비어있게 됩니다.

태풍 풀라산(PULASAN) 영향과 이동 경로

태풍 풀라산(PULASAN) 영향과 이동 경로 태풍 풀라산(PULASAN)은 현재 한반도에 큰 영향을 미치고 있습니다. 이 태풍은 강력한 비와 바람을 동반하며, 여러 기상 변화와 위험을 초래할 것으로 예상됩니다. 1. 태풍의 한반도 영향 태풍 풀...