Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Узнать имя исполнимого файла процесса / 5 сообщений из 5, страница 1 из 1
05.07.2006, 11:41
    #33832236
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать имя исполнимого файла процесса
Задача: по хандлеру окна hWND или по хандлеру трида ProcessId
получить имя исполняемого файла.

Уже все функции в Window Functions пересмотрел, и никак не могу добраться

IMHO, Mon$te®
...
Рейтинг: 0 / 0
05.07.2006, 11:51
    #33832278
NSFuimus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать имя исполнимого файла процесса
Код: plaintext
1.
2.
3.
		HINSTANCE hInstance = GetModuleHandle(NULL);
		char szTmp[ 256 ] = {"\0"};
	    GetModuleFileName(hInstance, szTmp, sizeof(szTmp));
?
...
Рейтинг: 0 / 0
05.07.2006, 12:25
    #33832416
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать имя исполнимого файла процесса
К сожалению не то ибо:
авторThe GetModuleHandle function returns a module handle for the specified module if the file has been mapped into the address space of the calling process.

А в условиях задачи только хандлер треда есть.

IMHO, Mon$te®
...
Рейтинг: 0 / 0
05.07.2006, 12:40
    #33832476
Dmitrii K.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать имя исполнимого файла процесса
...
Рейтинг: 0 / 0
05.07.2006, 15:52
    #33833279
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать имя исполнимого файла процесса
Спасибо нащёл что надо использовать CreateToolhelp32Snapshot, Process32First, Process32Next
Если ГРУБО, то что-то такое должно получиться
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
        HWND activehwnd;
        DWORD procId;
        activehwnd=GetForegroundWindow();
        int rez;
        char buff[ 254 ];
        unsigned long size;
        AnsiString WindowName;
        AnsiString UserName;
        size= 253 ;

        rez=GetWindowThreadProcessId(
                        activehwnd,	// handle of window
                        &procId // address of variable for process identifier
           );

        rez=GetWindowText(
                    activehwnd,	// handle of window or control with text
                    buff,	// address of buffer for text
                    size 	// maximum number of characters to copy
                   );
        WindowName=AnsiString(buff);

        rez=GetUserName(
                            buff,	// address of name buffer
                            &size 	// address of size of name buffer
                           );
        UserName=AnsiString(buff);
        Memo1->Lines->Add(DateTimeToStr(Now())+" " +UserName+" " +WindowName);

        HANDLE         hProcessSnap = NULL;
        PROCESSENTRY32 pe32      = { 0 };
        //  Take a snapshot of all processes currently in the system.
        hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,  0 );
        if (hProcessSnap == (HANDLE)- 1 )
                return;
        pe32.dwSize = sizeof(PROCESSENTRY32);
        if (Process32First(hProcessSnap, &pe32))
                {
                do {
                        if (pe32.th32ProcessID==procId)
                                {
                                Memo1->Lines->Add(AnsiString(pe32.th32ProcessID)+"="+AnsiString(pe32.szExeFile));
                                }
                   }
                while (Process32Next(hProcessSnap, &pe32));
                }
    // Do not forget to clean up the snapshot object.
    CloseHandle (hProcessSnap);

IMHO, Mon$te®
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Узнать имя исполнимого файла процесса / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]