Mój pomysł to:
Struktura PROCESSENTRY32 wygląda następująco:
- Kod: Zaznacz cały
typedef struct tagPROCESSENTRY32 {
DWORD dwSize;
DWORD cntUsage;
DWORD th32ProcessID;
ULONG_PTR th32DefaultHeapID;
DWORD th32ModuleID;
DWORD cntThreads;
DWORD th32ParentProcessID;
LONG pcPriClassBase;
DWORD dwFlags;
TCHAR szExeFile[MAX_PATH];
}PROCESSENTRY32, *PPROCESSENTRY32;
co sekundę uruchamiać timer który sprawdzał by zawartość TStringList gdzie:
- Kod: Zaznacz cały
TStringList * Lista;
(...)
index = (int)PROCESSENTRY32.th32ProcessID; // użyłem PROCESSENTRY32 bo nie ma sensu zapisywać jak przebiega pobieranie danych o procesie - jest to w poradzie
data = PROCESSENTRY32.szExeFile[MAX_PATH];
(...)
if(!SearchOf(index)) // funkcja sprawdzajaca czy proces został juz dodany
{
Lista->Insert(index, data);
}
// i Tu pojawia się problem jak sprawdzić czy proces został zamknięty?
można by też stworzyć dwie listy główna i tmp a następnie porównywać ich zawartości. czy to ma sens, nie wiem. A może jest jakaś łatwiejsza metoda?