|
해보니까 작업관리자의 프로세스 정보를 가져 오는거 같은데
제가 원하는것은 응용 프로그램 탭에서 상태 정보를 가져 오고 싶이요
알려주신 것을 해보니 재가 강제적으로 응답 없음으로 만든 프로그램이
알려주신 소스대로 하니까 실행중으로 나타나고 있어요 ㅠ,.ㅠ
작업 관리자에서는 응답없음으로 보여 주는데도요 ㅠ,.ㅠ
void __fastcall TForm1::Button3Click(TObject *Sender)
{
HANDLE hProcessSnap = NULL;
DWORD Return = FALSE;
PROCESSENTRY32 pe32 = {0};
AnsiString Msg;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
//if (hProcessSnap == INVALID_HANDLE_VALUE)
// return (DWORD)INVALID_HANDLE_VALUE;
pe32.dwSize = sizeof(PROCESSENTRY32);
if (Process32First(hProcessSnap, &pe32))
{
DWORD Code = 0;
DWORD dwPriorityClass;
do
{
HANDLE hProcess;
// Get the actual priority class.
hProcess = OpenProcess (PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
dwPriorityClass = GetPriorityClass (hProcess);
AnsiString Temp = pe32.szExeFile;
if(Temp =="LensBDManager.exe")
{
typedef BOOL (*TIsHungAppWindow)(HWND);
TIsHungAppWindow func;
HWND hUser32=GetModuleHandleA("user32.dll");
func=(TIsHungAppWindow)GetProcAddress(hUser32,"IsHungAppWindow");
if(func(hProcess))
Msg.sprintf("%s Process 응답없음", Temp);
else
Msg.sprintf("%s Process 실행중", Temp);
Memo1->Lines->Add(Msg);
CloseHandle (hProcess);
}
}
while (Process32Next(hProcessSnap, &pe32));
Return = TRUE;
}
CloseHandle (hProcessSnap);
}
|