ich habe bei http://www.pb-club.de/ im Source-Archiv den code gefunden [Programm hinter Port ermitteln]
Code: Alles auswählen
;ACHTUNG:
;FUNKTIONIERT NUR MIT WINDOWS 2000 UND WINDOWS XP !
#TOKEN_QUERY=8
#TOKEN_ADJUST_PRIVILEGES=32
#PROCESS_DUP_HANDLE=64
#STANDARD_RIGHTS_ALL=2031616
#GENERIC_ALL=268435456
Procedure.s GetUsedPorts(ProcessID)
Global GetPorts_AlreadyCalled
Select OSVersion()
Case #PB_OS_Windows_2000
OSDepType=26
Case #PB_OS_Windows_XP
OSDepType=28
Default
ProcedureReturn ""
EndSelect
If GetPorts_AlreadyCalled=0
NewToken.TOKEN_PRIVILEGES
OldToken.TOKEN_PRIVILEGES
FoundPorts=0
AdvapiInst=LoadLibrary_("advapi32.dll")
If AdvapiInst
Addr1=GetProcAddress_(AdvapiInst,"LookupPrivilegeValueA")
Addr2=GetProcAddress_(AdvapiInst,"OpenProcessToken")
Addr3=GetProcAddress_(AdvapiInst,"AdjustTokenPrivileges")
If Addr10 And Addr20 And Addr30
Result=CallFunctionFast(Addr2,GetCurrentProcess_(),#TOKEN_ADJUST_PRIVILEGES|#TOKEN_QUERY,@A)
If Result
Result=CallFunctionFast(Addr1,"","SeDebugPrivilege",OldToken\Privileges[0]\Luid)
If Result
NewToken\PrivilegeCount=1
NewToken\Privileges[0]\Attributes=#SE_PRIVILEGE_ENABLED
NewToken\Privileges[0]\Luid\LowPart=OldToken\Privileges[0]\Luid\LowPart
NewToken\Privileges[0]\Luid\HighPart=OldToken\Privileges[0]\Luid\HighPart
CallFunctionFast(Addr3,A,0,NewToken,SizeOf(TOKEN_PRIVILEGES),OldToken,@dummy)
EndIf
EndIf
EndIf
FreeLibrary_(AdvapiInst)
EndIf
If Result=0
Else
GetPorts_AlreadyCalled=-1
EndIf
EndIf
QuerySizePtr=GlobalAlloc_(#GMEM_FIXED|#GMEM_ZEROINIT,20)
If QuerySizePtr=0:ProcedureReturn "":EndIf
NtQuerySystemInformation_(16,QuerySizePtr,20,0)
Size=(PeekL(QuerySizePtr)-1)*16+20
GlobalFree_(QuerySizePtr)
If Size0:Ports.s+",":EndIf
FoundPorts+1
Ports.s+Str(htons_(SockName\sin_port)&$FFFF) ; LINE 62
;EndIf
;EndIf
CloseHandle_(hNewSocket)
;EndIf
CloseHandle_(Process)
;EndIf
;EndIf
;EndIf
;Next
GlobalFree_(Addr)
ProcedureReturn Ports.s
EndProcedure
;Beispiel:
InitNetwork()
CreateNetworkServer(120)
CreateNetworkServer(121)
Ports$=GetUsedPorts.s(GetCurrentProcessId_()) ; Wenn ein port öfters vorhanden ist, sind es verschiedene Protokolle.
MessageRequester("Ports",Ports$)
weil der compiler immer sagt "Line 62: This var doesn't habe a Structure"
und kann mir auch einer sagen warum in dem code so viele EndIf waren [die habe ich jetzt erst mal alle aus kommentiert]