powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / список процессов с указанием полного пути
10 сообщений из 10, страница 1 из 1
список процессов с указанием полного пути
    #37057501
rajulun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из темы http://www.sql.ru/forum/actualthread.aspx?tid=667199 , я понял как получить список запущенных процессов. Ещё бы узнать полный путь, т.е. откуда были запущенны эти процессы. Зарание спасибо.
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37057519
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В структуре tagPROCESSENTRY32 есть поле char szExeFile[MAX_PATH];, которое содержит путь к исполняемому модулю

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37057535
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Игорь Горбонос
> В структуре tagPROCESSENTRY32 есть поле char szExeFile[MAX_PATH];, которое содержит путь к исполняемому модулю


Был не совсем прав MSDNszExeFile
The name of the executable file for the process. To retrieve the full path to the executable file, call the
Module32First function and check the szExePath member of the MODULEENTRY32 structure that is returned. However, if the
calling process is a 32-bit process, you must call the QueryFullProcessImageName function to retrieve the full path of
the executable file for a 64-bit process.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37057557
rajulun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,

Спасибо за ответ, не могли бы Вы уточнить как это использовать, например здесь (комменты оставляю):
* CreateToolhelp32Snapshot - Takes a snapshot of the processes and the heaps, modules, and threads.
HSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0)
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* структура для Process32First, Process32Next
*typedef struct tagPROCESSENTRY32 {
* DWORD dwSize;
* DWORD cntUsage;
* DWORD th32ProcessID;
* DWORD th32DefaultHeapID;
* DWORD th32ModuleID;
* DWORD cntThreads;
* DWORD th32ParentProcessID;
* LONG pcPriClassBase;
* DWORD dwFlags;
* char szExeFile[MAX_PATH];
*} PROCESSENTRY32;

cBuff=SPACE(400)
Process32First(HSnapshot,@cBuff)
DIMENSION arr[1,3]
arr[1,1] = DWORD_NUM(SUBSTR(cBuff,9,4)) && PID процесса (10-чное число)
arr[1,2] = DecHex(arr[1,1]) && PID процесса (16-чное число)
arr[1,3] = '' && имя EXE-модуля
lpString = SUBSTR(cBuff,37,100)
FOR i=1 TO Len(lpString)
IF ASC(SUBSTR(lpString,i,1))#0
arr[1,3] = arr[1,3] +SUBSTR(lpString,i,1)
ELSE
EXIT
ENDIF
NEXT
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37058179
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Копай в сторону CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID)
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37058181
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Си это так выглядит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
// Info about modules of process
HANDLE         hModuleSnap = NULL; 
MODULEENTRY32 me32       = { 0 }; 
me32.dwSize = sizeof(MODULEENTRY32); 

hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessID);
if (hModuleSnap != INVALID_HANDLE_VALUE) 
{
	if (Module32First(hModuleSnap, &me32)) 
	{ 
		do 
		{ 
		  printf( "Module PID %d\t Name\t%s\n", me32.th32ProcessID, me32.szModule);
		  printf( "Full Path\t%s\n", me32.szExePath);
		} 
		while (Module32Next(hModuleSnap, &me32)); 
		CloseHandle (hModuleSnap); 
	} 
}
dwProcessID - PID просматриваемого процесса
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37058494
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь есть пример на VFP как
получить путь к исполняемому модулю.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37059321
Так пойдет?

LOCAL m.loWMIService, m.loItems

m.loWMIService = GETOBJECT("winmgmts:\\.\root\cimv2")
m.loItems = m.loWMIService.ExecQuery("Select * From Win32_Process")

FOR EACH loItem IN loItems
? loItem.Name
? loItem.ExecutablePath
ENDFOR
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37059931
rajulun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, за подсказки. Года два назад, это я делал на Дельфи. Начну с ссылки Игоря. Если получится, обязательно напишу.
...
Рейтинг: 0 / 0
список процессов с указанием полного пути
    #37105461
rajulun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо _vit-у. Здесь на http://forum.foxclub.ru/read.php?29,495520 он полностью ответил.
Вот его код:

clear

#Define PROCESS_VM_READ 16
#Define PROCESS_QUERY_INFORMATION 1024
#Define BUF_SIZE 4096
#Define MAX_FILENAME_LEN 255

Declare Integer EnumProcesses In psapi String @ lpidProcess, Integer cb, Integer @ cbNeeded
Declare Integer OpenProcess In kernel32 Integer dwDesiredAccessas, Integer bInheritHandle, Integer dwProcId
Declare Integer OpenProcess In kernel32 Integer dwDesiredAccessas, Integer bInheritHandle, Integer dwProcId
Declare Integer GetModuleFileNameEx In psapi Integer hProcess, Integer hModule, String ModuleName, Integer nSize
Declare Integer CloseHandle In kernel32 Integer lhProcess

Local lcProcListBuf, i, lnBytesReturned, lnPID, lhProcess, lcProcFilenameBuf

lcProcListBuf = Replicate(Chr(0), BUF_SIZE)
lnBytesReturned = 0

If EnumProcesses(@lcProcListBuf, BUF_SIZE, @lnBytesReturned) != 0
For i = 1 To lnBytesReturned / 4
lnPID = BUF2DWORD(Substr(lcProcListBuf, 4 * (i - 1) + 1, 4))
lcProcFilenameBuf = padr("<Unknown>", MAX_FILENAME_LEN, Chr(0))
lnFileNameLen = 9
lhProcess = OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, 0, lnPID)
If lhProcess <> 0
lnFileNameLen = GetModuleFileNameEx(lhProcess, 0, @lcProcFilenameBuf, MAX_FILENAME_LEN)
= CloseHandle(lhProcess)
Endif
? Left(lcProcFilenameBuf, lnFileNameLen)
Endfor
Endif


Function BUF2DWORD
Lparameters tcBuf

Return Asc(Substr(tcBuf, 1,1)) + ;
ASC(Substr(tcBuf, 2,1)) * 256 + ;
ASC(Substr(tcBuf, 3,1)) * 65536 + ;
ASC(Substr(tcBuf, 4,1)) * 16777216
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / список процессов с указанием полного пути
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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