ProcessID eines anderen Programms ermitteln?
-
- Beiträge: 115
- Registriert: 09.07.2005 12:11
- Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
- Kontaktdaten:
ProcessID eines anderen Programms ermitteln?
MOin
ich habe mal eine frage wie kann ich die ProcessID eines anderen Programms ermitteln?
und wie kann ich ALLE programme ermitteln die gerade geöffnet sind also auch alle processe und dienste die gerade lauffen
ich habe mal eine frage wie kann ich die ProcessID eines anderen Programms ermitteln?
und wie kann ich ALLE programme ermitteln die gerade geöffnet sind also auch alle processe und dienste die gerade lauffen
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Dafür kannste die PBOSL_Process Lib anwenden, Link findeste in meiner Signatur
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 115
- Registriert: 09.07.2005 12:11
- Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
- Kontaktdaten:
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Libraries: Windows - Binaries anklicken. Examples ist auch sehr Empfehlenswert!IcedCoffee hat geschrieben:@ts-soft: und wie kann ich mir die da runterladen?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 115
- Registriert: 09.07.2005 12:11
- Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
- Kontaktdaten:
-
- Beiträge: 115
- Registriert: 09.07.2005 12:11
- Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
- Kontaktdaten:
Da wo du die PBOSL bekommst da gibt es auch ein download Examples (Beispiele).
Hole dir das auch und sch au dir die Beispiele an!
Die PBOSL Dokumentation ist nicht so....
Kuck mal hier so:
Hole dir das auch und sch au dir die Beispiele an!
Die PBOSL Dokumentation ist nicht so....
Kuck mal hier so:
Code: Alles auswählen
; Process library examples
;
; (C) 2004 by Siegfried Rings
;
;Following Commands are not implemented in this Testapp , but Fully in the Library:
;pPokeB(PID,Offset,Value)
;pPeekw(PID,Offset)
;pPokew(PID,Offset,Value)
;pPeekL(PID,Offset)
;pPokeL(PID,Offset,Value)
;pReadMemory(handle,addr, DestinationMemoryID, Length)
;pWriteMemory(handle,addr, SourceMemoryID, Length)
Enumeration
#MainWindow
#MainPanel
#DeviceDriver
#Processes
#Process_Info
#KillButton
#KillButtonAll
#Button_Refresh
#ButtonSetPrio
#ButtonRemovePagefaults
#ButtonDump2Screen
#MenuPriority
#MenuReal
#MenuHigh
#MenuNormal
#MenuLow
#MenuWatch
#MenuDump2Screen
#MenuDump2File
#MenuSearchString
EndEnumeration
Procedure Open_MainWindow()
hwnd=OpenWindow(#MainWindow, 200, 100, 500, 400, #PB_Window_SystemMenu | #PB_Window_TitleBar , "PB System Info")
If hwnd
If CreateGadgetList(WindowID())
PanelGadget(#MainPanel, 0, 0, 500, 400)
AddGadgetItem(#MainPanel, -1, "General")
AddGadgetItem(#MainPanel, -1, "Processes")
ListViewGadget(#Processes, 8, 8, 110, 320)
TreeGadget(#Process_Info, 118, 8, 360, 320)
ButtonGadget(#Button_Refresh, 0, 338, 80, 20, "Refresh List")
ButtonGadget(#KillButton, 80, 338, 80, 20, "Kill Process")
ButtonGadget(#KillButtonAll, 160, 338, 80, 20, "Kill All")
ButtonGadget(#ButtonSetPrio, 240, 338, 80, 20, "Set new Priority")
ButtonGadget(#ButtonRemovePagefaults, 320, 338, 80, 20, "Del Pagefaults")
ButtonGadget(#ButtonDump2Screen,400, 338, 80, 20, "Dump Hex")
DisableGadget(#ButtonDump2Screen,1)
AddGadgetItem(#MainPanel, -1, "DeviceDriver")
TreeGadget(#DeviceDriver, 8, 8, 460, 310)
;CloseGadgetList()
If CreatePopupMenu(#MenuPriority)
MenuItem(#MenuReal, "Real")
MenuItem(#MenuHigh, "High")
MenuItem(#MenuNormal, "Normal")
MenuItem(#MenuLow, "Low")
EndIf
If CreatePopupMenu(#MenuWatch)
MenuItem(#MenuDump2Screen, "Dump to Screen")
MenuItem(#MenuDump2File, "Dump to File")
MenuItem(#MenuSearchString, "Search for String")
EndIf
EndIf
EndIf
ProcedureReturn hwnd
EndProcedure
;From Froggerprogger
Procedure GetValueFromHEXString(str.s)
If Len(str) = 0
ProcedureReturn -1
EndIf
str = UCase(str)
Protected actCharAsc.l, result.l
Protected strLen.l : strLen = Len(str)
Protected parseAct.l : parseAct = @str + strLen - 1
Protected parseEnd.l : parseEnd = parseStart - 7
Protected posFact.l : posFact = 1
Protected radix.l : radix = 16
actCharAsc = PeekB(parseAct)&$FF
While ((actCharAsc >= 48 And actCharAsc <= 57) Or (actCharAsc >= 65 And actCharAsc <= 70)) And parseAct >= parseEnd
If actCharAsc >= 65
actCharAsc - 7
EndIf
actCharAsc - 48 ; so '0'-'F' has values 0 - 15
result + posFact * actCharAsc
parseAct - 1
posFact * 16
actCharAsc = PeekB(parseAct)&$FF
Wend
ProcedureReturn result
EndProcedure
Procedure UpdateProcessList()
ClearGadgetItemList(#Processes)
ProcessCount=ExamineProcesses()
For I=1 To ProcessCount
NextProcess()
AddGadgetItem(#Processes, -1, GetProcessName())
Next I
EndProcedure
Procedure Detaillist(PID)
ClearGadgetItemList(#Process_Info)
AddGadgetItem(#Process_Info, -1, "PID=" + Str(PID))
Prio=GetProcessPrio(PID)
Select Prio
Case #NORMAL_PRIORITY_CLASS
PR.s= "NORMAL"
Case #HIGH_PRIORITY_CLASS
PR.s= "High"
Case #IDLE_PRIORITY_CLASS
PR.s= "Idle"
Case #REALTIME_PRIORITY_CLASS
PR.s= "REALTIME"
EndSelect
AddGadgetItem(#Process_Info, -1, "Priority=" + PR.s)
AddGadgetItem(#Process_Info, -1, "Location=" + GetProcessFileName(PID))
a.s="Memory used=" + Str(GetProcessMem(PID)/1024)+" kb"
a.s=a.s + " (Max. " + Str(GetProcessPeakWorkingSetSize(PID)/1024)+" kb)"
AddGadgetItem(#Process_Info, -1, a.s )
a.s="Memory Pagefile used=" + Str(GetProcessPagefileUsage(PID)/1024)+" kb"
a.s=a.s + " (Max. " + Str(GetProcessPeakPagefileUsage(PID)/1024)+" kb)"
AddGadgetItem(#Process_Info, -1, a.s )
a.s="Pagefaults=" + Str(GetProcessPageFaultCount(PID))
AddGadgetItem(#Process_Info, -1, a.s )
a.s="QuotaPagedPool=" + Str(GetProcessQuotaPagedPoolUsage(PID))
a.s=a.s + " (Max. " + Str(GetProcessQuotaPeakPagedPoolUsage(PID)) +")"
AddGadgetItem(#Process_Info, -1, a.s )
a.s="QuotaNonPagedPool=" + Str(GetProcessQuotaNonPagedPoolUsage(PID))
a.s=a.s + " (Max. " + Str(GetProcessQuotaPeakNonPagedPoolUsage(PID)) +")"
AddGadgetItem(#Process_Info, -1, a.s )
dlls= ExamineProcessDLLS(PID)
AddGadgetItem(#Process_Info, -1, "DLL's in use ("+Str(dlls) +")")
OpenTreeGadgetNode(#Process_Info)
For T=1 To dlls
NextProcessDLL()
name.s=GetProcessDLLName(PID)
AddGadgetItem(#Process_Info, -1, name.s)
OpenTreeGadgetNode(#Process_Info)
AddGadgetItem(#Process_Info, -1, "Memorybase= $" + Hex(GetProcessDLLBase(PID)) )
AddGadgetItem(#Process_Info, -1, "Location=" + GetProcessDLLFileName(PID))
CloseTreeGadgetNode(#Process_Info)
Next T
CloseTreeGadgetNode(#Process_Info)
EndProcedure
Procedure UpdateDeviceList()
ClearGadgetItemList(#DeviceDriver)
DevicesCount=ExamineDrivers()
For I=1 To DevicesCount
NextDriver()
AddGadgetItem(#DeviceDriver, -1, GetDriverName())
OpenTreeGadgetNode(#DeviceDriver)
AddGadgetItem(#DeviceDriver, -1, "Base= $" + Hex(GetDriverBase()))
AddGadgetItem(#DeviceDriver, -1, "Location=" + GetDriverFileName())
CloseTreeGadgetNode(#DeviceDriver)
Next I
EndProcedure
hwnd=Open_MainWindow()
UpdateProcessList()
UpdateDeviceList()
PID=GetProcessPIDfromHWND(hwnd)
MyP.s=GetProcessName(PID)
If Trim(MyP)<>""
For I= 0 To CountGadgetItems(#Processes) -1
SetGadgetState(#Processes,I)
Pname0.s=GetGadgetText(#Processes)
If LCase(Pname0.s)=LCase(MyP.s)
Break
EndIf
Next
EndIf
SetGadgetState(#MainPanel,1)
Detaillist(PID)
Repeat
Event = WaitWindowEvent()
If Event=#PB_EventMenu
Select EventMenuID()
Case #MenuReal
PID=GetProcessPID(GetGadgetText(#Processes))
SetProcessPrio(PID,#REALTIME_PRIORITY_CLASS)
Detaillist(PID)
Case #MenuHigh
PID=GetProcessPID(GetGadgetText(#Processes))
SetProcessPrio(PID,#HIGH_PRIORITY_CLASS)
Detaillist(PID)
Case #MenuNormal
PID=GetProcessPID(GetGadgetText(#Processes))
SetProcessPrio(PID,#NORMAL_PRIORITY_CLASS)
Detaillist(PID)
Case #MenuLow
PID=GetProcessPID(GetGadgetText(#Processes))
SetProcessPrio(PID,#IDLE_PRIORITY_CLASS)
Detaillist(PID)
Case #MenuDump2Screen
Gosub Dump2Screen
Case #MenuDump2File
Case #MenuSearchString
EndSelect
EndIf
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
Select GadgetID
Case #MainPanel
;Debug "GadgetID: #MainPanel"
Case #Processes
pName2.s=GetGadgetText(#Processes)
PID=GetProcessPID(pName2.s)
DisableGadget(#ButtonDump2Screen,1)
Detaillist(PID)
Case #Process_Info
evt=EventType()
If evt=#PB_EventType_LeftClick
Entry.s=GetGadgetText(#Process_Info)
If Right(LCase(Entry.s),4)=".dll" Or Right(LCase(Entry.s),4)=".exe"
z1=GetGadgetState(#Process_Info)
z1+1:SetGadgetState(#Process_Info,z1)
Modulebase.s=GetGadgetText(#Process_Info)
z1+1:SetGadgetState(#Process_Info,z1)
FullFilename.s=GetGadgetText(#Process_Info)
I=FindString(FullFilename.s,"=",1)
If I>0
FullFilename=Right(FullFilename,Len(FullFilename)-I)
EndIf
I=FindString(Modulebase.s,"$",1)
If I>0
Modulebase=Trim(Right(Modulebase,Len(Modulebase)-I))
EndIf
pName2.s=GetGadgetText(#Processes)
gPID=GetProcessPID(pName2.s)
z1-2:SetGadgetState(#Process_Info,z1)
DisableGadget(#ButtonDump2Screen,0)
Else
DisableGadget(#ButtonDump2Screen,1)
EndIf
EndIf
If evt=#PB_EventType_RightClick
Entry.s=GetGadgetText(#Process_Info)
If Right(LCase(Entry.s),4)=".dll" Or Right(LCase(Entry.s),4)=".exe"
z1=GetGadgetState(#Process_Info)
z1+1:SetGadgetState(#Process_Info,z1)
Modulebase.s=GetGadgetText(#Process_Info)
z1+1:SetGadgetState(#Process_Info,z1)
FullFilename.s=GetGadgetText(#Process_Info)
I=FindString(FullFilename.s,"=",1)
If I>0
FullFilename=Right(FullFilename,Len(FullFilename)-I)
EndIf
I=FindString(Modulebase.s,"$",1)
If I>0
Modulebase=Trim(Right(Modulebase,Len(Modulebase)-I))
EndIf
pName2.s=GetGadgetText(#Processes)
gPID=GetProcessPID(pName2.s)
; Debug entry
; Debug ModuleBase
; Debug Fullfilename
z1-2:SetGadgetState(#Process_Info,z1)
GetCursorPos_(L1.Point)
DisplayPopupMenu(#MenuWatch, WindowID() ,L1\x, L1\y)
EndIf
EndIf
Case #DeviceDriver
;Debug "GadgetID: #DeviceDriver"
Case #Process_Info
;Debug "GadgetID: #Process_Info"
Case #ButtonDump2Screen
Gosub Dump2Screen
Case #KillButton
PID=GetProcessPID(GetGadgetText(#Processes))
KillPID(PID,0)
UpdateProcessList()
ClearGadgetItemList(#Process_Info)
Case #KillButton
KillAllProcess(GetGadgetText(#Processes),0)
DisableGadget(#ButtonDump2Screen,1)
UpdateProcessList()
ClearGadgetItemList(#Process_Info)
Case #ButtonRemovePagefaults
PID=GetProcessPID(GetGadgetText(#Processes))
result=RemovePagefaults(PID);
Debug result
DisableGadget(#ButtonDump2Screen,1)
Detaillist(PID)
Case #Button_Refresh
DisableGadget(#ButtonDump2Screen,1)
UpdateProcessList()
ClearGadgetItemList(#Process_Info)
Case #ButtonSetPrio
GetCursorPos_(L1.Point)
DisplayPopupMenu(#MenuPriority, WindowID() ,L1\x, L1\y)
EndSelect
EndIf
Until Event = #PB_EventCloseWindow
End
Dump2Screen:
;If GetProcessRights(gpid)
Offset=GetValueFromHEXString(Modulebase.s)
;Debug Offset
Nop.s="$"+RSet(Hex(0), 4, "0") +" "
For I=0 To 511
wert.b= pPeekB(gPID,Offset+I)
; Debug wert
; Debug Hex(wert)
Nop.s=Nop.s + Right("00"+Hex(wert.b),2)
If wert.b>30
Nop2.s=Nop2.s+Chr(wert.b)
Else
Nop2.s=Nop2.s+" "
EndIf
T=T+1
If T=16
Nop.s=Nop.s+Space(4)+Nop2.s+Chr(13)+Chr(10) +"$"+RSet(Hex(I), 4, "0") + " "
T=0
Nop2.s=""
EndIf
Next I
MessageRequester("Info for "+FullFilename.s+" at $"+Modulebase.s,Nop.s,0)
;Else
; MessageRequester("Info for "+Fullfilename.s+" at $"+Modulebase.s,"Sorry, no rights to acess this process!",0)
;EndIf
Return
Wir Schreiben ein PureBasic Buch.
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
Auch du kannst mitmachen!
http://www.purearea.net/pb/english/pure ... :Main_Page
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
>> Debug ExamineProcesses()
Das sollte so funktionieren. Teste mal mit der normalen IDE obs damit geht.
Das sollte so funktionieren. Teste mal mit der normalen IDE obs damit geht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 115
- Registriert: 09.07.2005 12:11
- Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
- Kontaktdaten: