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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.01.2011, 18:20
    #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
13.01.2011, 18:33
    #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
14.01.2011, 06:55
    #37058179
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список процессов с указанием полного пути
Копай в сторону CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessID)
...
Рейтинг: 0 / 0
14.01.2011, 06:59
    #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
14.01.2011, 11:02
    #37058494
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список процессов с указанием полного пути
Здесь есть пример на VFP как
получить путь к исполняемому модулю.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
14.01.2011, 15:53
    #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
14.01.2011, 21:44
    #37059931
rajulun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
список процессов с указанием полного пути
Спасибо, за подсказки. Года два назад, это я делал на Дельфи. Начну с ссылки Игоря. Если получится, обязательно напишу.
...
Рейтинг: 0 / 0
08.02.2011, 22:27
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / список процессов с указанием полного пути / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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