Choice2Medlem sedan sep. 200134 inlägg Jag undrar om det finns nåt lätt sätt att få tag på handle till en process?
Om du tänker att du kör winamp och startar upp ett annat program så vill jag kunna genom det nystartade programmet stänga ner winamp, eller kanske pausa det bara.
Någon som har en ide?
------------------
/*
include <geek.h>
http://warzone.big.du.se
*/
.
[Redigerat av Muzzafarath den 20 nov 2001]
Någon som har en ide?
Om det bara är Winamp som du hade tänkt kontrollera kan du titta här.
------------------
"If God had wanted you to wear earrings, he'd have made you a girl." - Alabama Governor Don Siegelman :e
Choice2Medlem sedan sep. 200134 inlägg Nah, typ inte bara winamp.. men jag tror att funktionen är CreateToolhelp32Snapshot
är dock inte säker.
Någon som har koll på denna funktion och kan förklara lite hur den funkar?
------------------
/*
include <geek.h>
http://warzone.big.du.se
*/
SweyMedlem sedan apr. 20003 971 inlägg Ja, det finns lätta och svåra sätt. Har du ett handtag till ett fönster kan du få processens ID. Ett handtag till processen får du genom att öppna den.
För att få ett handtag till ett fönster kan du utgå från muspekarens position, söka med namn/klass eller uppräkna alla fönster.
Alternativt kan du uppräkna alla processer. Det kräver dock olika kod beroende på vilken Windows-version som körs.
------------------
- Swey
Med reservation för upprörda känslor.
[Redigerat av Swey den 20 nov 2001]
SweyMedlem sedan apr. 20003 971 inlägg Jag ber om ursäkt. Emulera var en helt galen översättning av enumerate (uppräkna). Jag har ändrat nu.
------------------
- Swey
Med reservation för upprörda känslor.
BeatboxMedlem sedan okt. 20013 217 inlägg Om du befinner dig i VS :
DWORD Pids[100];
DWORD dwSize;
DWORD moduleCount;
HMODULE hModules[1024];
unsigned short str[512];
BOOL Found = FALSE;
int NumberOfProcesses;
if (EnumProcesses(Pids, sizeof(Pids), &dwSize) == 0)
{
CHAR msg[256];
sprintf(msg, "Error = %d", GetLastError());
printf(msg);
}
NumberOfProcesses = (dwSize / sizeof(DWORD) - 1);
for (int i=0; i<=NumberOfProcesses; i++)
{
HANDLE hProc;
hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, Pids*);
if (EnumProcessModules(hProc, hModules, sizeof(hModules), &dwSize) != 0)
{
moduleCount = (dwSize / sizeof(DWORD) - 1);
for (int j=0; j<=moduleCount; j++)
{
if (GetModuleFileNameEx(hProc, hModules[j], str, 512) != 0)
{
// str innehåller processnamn
}
}
}
CloseHandle(hProc);
}*
------------------
"Mörkrets gärningar, förekommer även på dagen"
Sixten Landby
[Redigerat av Beatbox den 21 nov 2001]
[Redigerat av Beatbox den 21 nov 2001]
[Redigerat av Beatbox den 21 nov 2001]
SweyMedlem sedan apr. 20003 971 inlägg Jättefin kod. Den fungerar dock endast i Windows NT och senare.
Läs detta: http://support.microsoft.com/support/kb/articles/q175/0/30.asp
Där finns kod för att räkna upp alla processer i alla Windows-versioner.
------------------
- Swey
Med reservation för upprörda känslor.