Task Path ?
2 отговора
111 прегледа
Task Path ?
Начи рових из нета ма никаде не намирам нищо такач пробвам тука ;)
Трябва ми нещо което да зима на даден Task Proccess, Path-a можете ли да ми помогнете ?
Трябва ми нещо което да зима на даден Task Proccess, Path-a можете ли да ми помогнете ?
GetProcessByID...
Виж фунциите GetProcessByID, GetProcessByName... Там има свойство MainModule, а на него можеш да му погледнеш FileName. На С# е така:
Обаче нещо не мога да ги намеря в делфито да са декларирани. Има GetCurrentProcessID и разни други функции, ама...
Не ти помогнах много, но поне се надявам да съм те насочил в правилната посока :)
//SETI@home PID = 380
Process myProcess = Process.GetProcessById(380);
//FileName = C:\Program Files\SETI@home\[email protected]
Console.WriteLine("FileName = {0}", myProcess.MainModule.FileName);
Обаче нещо не мога да ги намеря в делфито да са декларирани. Има GetCurrentProcessID и разни други функции, ама...
Не ти помогнах много, но поне се надявам да съм те насочил в правилната посока :)
Re: Task Path ?
Имай предвид, че EnumProcessModules работи само за NT базирани системи (т.е. NT 4.0, 2000, XP и т.н.). Ако твоят случай е такъв, този пример би трябвало да си свърши работа. Писал нещо на базата на него, но сега не мога да го намеря, а и беше пак на C.
MSDN example:
---
...и аз пиша на кирилица
MSDN example:
Task Manager is an example of a program that enumerates all running processes.
It is implemented using data from the performance registry.
The following sample code uses the EnumProcesses function to enumerate the
current processes in the system.
This method is easier than using the performance registry.
#include <windows.h>
#include <stdio.h>
#include "psapi.h"
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown";
// Get a handle to the process.
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
// Get the process name.
if (NULL != hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded) )
{
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
else return;
}
else return;
// Print the process name and identifier.
printf( "%s (Process ID: %u)\n", szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
// Get the list of process identifiers.
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded / sizeof(DWORD);
// Print the name and process identifier for each process.
for ( i = 0; i < cProcesses; i++ )
PrintProcessNameAndID( aProcesses );
}
---
...и аз пиша на кирилица
Редактирано от ess на