Re: Besserer Aufbau einer Funktion mit DllCalls
Posted: 18 Oct 2013, 14:57
Klassen machen manchmal durchaus Sinn, aber nicht immer!
Let's help each other out
https://www.autohotkey.com/boards/
Code: Select all
GetVersionEx()
static OSVerEX, init := VarSetCapacity(OSVerEX, 284, 0) && Numput(284, OSVerEX, "UInt")
GetProcessMemoryInfo(PID)
static PMCEx, size := (A_PtrSize = "8" ? "80" : "44"), init := VarSetCapacity(PMCEx, size, 0) && NumPut(size, PMCEx)
static PMC, size := (A_PtrSize = "8" ? "72" : "40"), init := VarSetCapacity(PMC, size, 0) && NumPut(size, PMC)
Code: Select all
GetProcessMemoryInfo(PID){
static PMCEx,PMCExsize := (A_PtrSize = "8" ? "80" : "44"), init := VarSetCapacity(PMCEx, PMCExsize, 0) && NumPut(PMCExsize, PMCEx)
static PMC, PMCsize := (A_PtrSize = "8" ? "72" : "40"), init2 := VarSetCapacity(PMC, PMCsize, 0) && NumPut(PMCsize, PMC)
Code: Select all
BuildVersion := DllCall("GetVersion") >> 16 & 0xffff
if (BuildVersion >= "7600") {
GPMI := GetProcessMemoryInfo_PMCEX(ownPID)
PUsage := Round(GPMI[10] / 1024, 0)
} else {
GPMI := GetProcessMemoryInfo_PMC(ownPID)
PUsage := Round(GPMI[8] / 1024, 0)
}
GetProcessMemoryInfo_PMCEX(PID) {
pu := ""
hProcess := DllCall(Kernel32.OpenProcess, "UInt", 0x001F0FFF, "UInt", 0, "UInt", PID)
if (hProcess) {
static PMCEX, size := (A_PtrSize = "8" ? "80" : "44"), init := VarSetCapacity(PMCEX, size, 0) && NumPut(size, PMCEX)
if (DllCall(Kernel32.K32GetProcessMemoryInfo, "Ptr", hProcess, "UInt", &PMCEX, "UInt", size))
pu := { 10 : NumGet(PMCEX, (A_PtrSize = "8" ? "72" : "40"), "Ptr") }
DllCall(Kernel32.CloseHandle, "Ptr", hProcess)
}
return, % pu
}
GetProcessMemoryInfo_PMC(PID) {
pu := ""
hProcess := DllCall(Kernel32.OpenProcess, "UInt", 0x001F0FFF, "UInt", 0, "UInt", PID)
if (hProcess) {
static PMC, size := (A_PtrSize = "8" ? "72" : "40"), init := VarSetCapacity(PMC, size, 0) && NumPut(size, PMC)
if (DllCall("psapi.dll\GetProcessMemoryInfo", "Ptr", hProcess, "UInt", &PMC, "UInt", size))
pu := { 8 : NumGet(PMC, (A_PtrSize = "8" ? "56" : "32"), "Ptr") }
DllCall(Kernel32.CloseHandle, "Ptr", hProcess)
}
return, % pu
}