Håller på med en process viewer, men jag har kört fast på dessa punkter, och skulle bli überglücklig för lite hjälp. En fundering bara, det finns väl processer utan fönster, dom får du ju inte upp, eller? Om jag inte minns fel så finns källkoden till "PVIEW" med till Visual Studio, du kan ju kolla där i sådana fall... Jag ska ta och leta lite och se om jag hittar det, kan ju vara något som jag har dröt bara...;) Det att jag inte hittar dom med fönster är en nackdel med FindWindow, och på vilken visual studio skiva ligger källkoden? Jag har installerat allt på första skivan, och jag har inte hittat den källkoden. Källkoden finns på första MSDN-skivan, skrivet i VC++ alltså, men du borde ju kunna ta principen därifrån... Jag var rädd för det... Jag har ingen av MSDN skivorna, bara den med Visual Studio och det. Jag har kollat MSDN på microsofts sida, men dom har tagit bort den källkoden. =( Nu har jag hittat ett bättre sätt att lista samtliga processer: Hej Lösningen till båda frågorna borde du hitta här: Tack! Ska pröva det jag hittade på den adressen så fort jag kommer hem (skriver från skolan).Process grejer
Fråga 1: Hur får man reda på filnamnet på en process som körs när man har antingen en window handle till ett av dess fönster eller processens PID (Process ID)? Jag har testat
hInst = GetWindowLong(hWnd, GWL_HINSTANCE);
GetModuleFileName(hInst, ProcessensFilNamn, 100);
men det ger mig antingen C:\WINDOWS\SYSTEM\SHELL32.DLL, C:\WINDOWS\SYSTEM\COMDLG32.DLL eller namnet/sökvägen till mitt eget program, vilket fönster hWnd än motsvarar.
Fråga 2:
Finns det inget smidigare sätt att hitta alla processer än EnumWindows? Med EnumWindows måste man ju sortera bort en massa fönster som tillhör samma process.
/ValdermanSv: Process grejer
/JohanSv: Process grejer
Sv: Process grejer
/JohanSv: Process grejer
Sv: Process grejer
RegQueryValueEx(HKEY_PERFORMANCE_DATA, "Process", 0, lpdwType, lpData, lpdwDatasize)
Problemet är att den ger ifrån sig ERROR_BADKEY, trots att jag i en Win32 Knowledge Base läst:
"To enumerate all of the processes on the system, you can query the
Registry using RegQueryValueEx() with key HKEY_PERFORMANCE_DATA,
and the Registry database index associated with the database string
"Process"."
Jag har nu två NYA frågor, angående RegQueryValueEx:
1) Varför får jag ERROR_BADKEY?
2) Kan man få fram en process namn mha RegQueryValueEx?Sv: Process grejer
Tror att det är detta du söker.Din fråga verka gälla hkey
>Kan man få fram en process namn mha RegQueryValueEx?
Ja här hkey
Dim rc As Long ' Return Code
Dim hkey As Long ' Handle To An Open Registry Key
Dim KeyVal As String 'Retur värde RegistredOwner
Dim KeyValSize As Long 'Size Of Registry Key Variable
' Öpnar Win 95/98 versionen, du måste öppna för att få hkey
rc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _
"SOFTWARE\Microsoft\Windows\CurrentVersion", _
0, &H1, hkey)
If rc <> 0 Then GoTo GetKeyError
KeyVal = String$(1024, 0) ' Allocate Variable Space
KeyValSize = 1024 ' Mark Variable Size
'------------------------------------------------------------
' Retrieve Registry Key Value...
'------------------------------------------------------------
' Get/Create Key Value
rc = RegQueryValueEx(hkey, "RegisteredOwner", 0&, _
0&, KeyVal, KeyValSize)
Viktigt om du vill köra ett nytt RegQuerryVal........
(här CurrentVersion) så måste du köra ett nytt.
Dvs nydatera dessa.
KeyVal = String$(1024, 0) ' Allocate Variable Space
KeyValSize = 1024 ' Mark Variable Size
osv nytt QueryValue.......
och viktigt du måste göra Close
' Close Registry Key
rc = RegCloseKey(hkey)
som du ser allt cirkulerar kring hkey
mvh
SvenSv: Process grejer
HOWTO: List Running Processes
http://support.microsoft.com/default.aspx?scid=kb;;Q187913
Funktionen GetWindowModuleFileName som finns i vissa versioner av Windows kan även komma till användning.
MSSv: Process grejer
BTW, Sven, i mitt Win32 API referens dokument står att man inte kan öppna nycklar i HKEY_PERFORMANCE_DATA, utan att de är öppna hela tiden.