Das funktioniert auch schon soweit.
Code: Alles auswählen
// Funktion gibt Prozessliste zurück
Function getProcessList(lWin)
Local aProcesses := space(10240)
Local aModules := space(4*10)
Local cbNeeded := 0
Local cbNeeded2 := 0
LOcal cname := space(64)
Local lIsKill := .F.
Local nPid
Local nProcHandle
Local i,nMax
LOcal hmod,nPidId
Local xRet,aProcess:={}
Local lStillRunning := .F.
EnumProcesses( @aProcesses, LEN(aProcesses) , @cbNeeded )
nMax := len(trim(aProcesses))/4
for i:= 1 to nMax
nPid := Bin2U(substr(aProcesses,1+((i-1)*4),4))
if nPidId==NIL .or. (nPIdId==nPid)
nProcHandle := OpenProcess( PROCESS_QUERY_INFORMATION + PROCESS_VM_READ ,0, nPid )
if nProcHandle > 0
if EnumProcessModules( nProcHandle, @aModules,len(aModules)/4, @cbNeeded2) != 0
cName := space(128)
GetModuleBaseNameA( nProcHandle,bin2u(substr(aModules,1,4)),@cName,len(cName))
cName := strtran(cname,chr(0),"")
CloseHandle(nProcHandle)
cName:=upper(alltrim(cName))
AAdd(aProcess,cName)
endif
endif
endif
next
RETURN aProcess
Also zum Bsp.: {"winword.exe",47465774} {Prozessname,Fensterhandle}
Nun wird ja in der Funktion ein ProcessHandle und eine ProzessId erzeugt.
Wie kann ich denn nun aus dem Processhandle oder der ProcessID das Fensterhandle herausfinden bzw. geht das überhaupt?