我访问一台局域网内的一台机器,能不能通过留下的端口获得我刚刚访问机器所用到的进程?或者说怎么实现获得进程?有代码最好,多谢!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    //--------------------------------------------------------------------------- 
    // EnumProcess 
    // 枚举进程 
    //--------------------------------------------------------------------------- //初始化TOOLHELP32 
    BOOL InitToolHelp32() 

    HINSTANCE DLLinst=LoadLibrary(\"KERNEL32.DLL\"); 
    if(DLLinst) 

    CreateToolhelp32Snapshot=(HANDLE(WINAPI *)(DWORD dwFlags,DWORD th32PD)) 
    GetProcAddress(DLLinst,\"CreateToolhelp32Snapshot\"); 
    Process32First=(BOOL(WINAPI *)(HANDLE hSnapshot,LPPROCESSENTRY32 pe)) 
    GetProcAddress(DLLinst,\"Process32First\"); 
    Process32Next=(BOOL(WINAPI *)(HANDLE hSnapshot,LPPROCESSENTRY32 pe)) 
    GetProcAddress(DLLinst,\"Process32Next\"); 
    if((!(UINT)CreateToolhelp32Snapshot)||(!(UINT)Process32First)||(!(UINT)Process32Next)) 
    return FALSE; 
    else 
    return TRUE; 

    return FALSE; 
    } //初始化PSAPI 
    BOOL InitPSAPI() 

    HINSTANCE PSAPI=LoadLibrary(\"PSAPI.DLL\"); 
    if(NULL==PSAPI) 
    return FALSE; 
    EnumProcesses=(BOOL(WINAPI *)(DWORD* lpidProcess,DWORD cb,DWORD *cbNeeded)) 
    GetProcAddress(PSAPI,\"EnumProcesses\"); 
    GetModuleFileNameExA=(DWORD(WINAPI *)(HANDLE hProcess,HMODULE hModule,LPTSTR lpstrFileName,DWORD nSize)) 
    GetProcAddress(PSAPI,\"GetModuleFileNameExA\"); 
    if(NULL == EnumProcesses||NULL == GetModuleFileName) 
    return FALSE; 
    else 
    return TRUE; 

    VOID WINAPI EnumProcess() 

    HANDLE process[255]; 
    PROCESSENTRY32 p32; 
    DWORD process_ids[255]; 
    DWORD num_processes; 
    TCHAR file_name[MAX_PATH]; 
    TCHAR szTemp[MAX_PATH]; 
    unsigned i; wsprintf(szTemp,\"\\n\\n\\r << Process File Name >>\\n\\n\\r\"); 
    send(NewSock,szTemp,lstrlen(szTemp),0); switch(GetOS()) 

    case VER_PLATFORM_WIN32_WINDOWS: 
    if(InitToolHelp32()) 

    p32.dwSize=sizeof(PROCESSENTRY32); 
    HANDLE pName=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); 
    BOOL Next=Process32First(pName,&p32); 
    i=0; 
    while(Next) 

    wsprintf(szTemp,\"Process FileName :%s \\n\\r\",p32.szExeFile); 
    send(NewSock,szTemp,lstrlen(szTemp),0); 
    process[i]=OpenProcess(PROCESS_TERMINATE,0,p32.th32ProcessID); 
    Next=Process32Next(pName,&p32); 
    i++; 

    CloseHandle(pName); 

    break; case VER_PLATFORM_WIN32_NT: 
    if(InitPSAPI()) 

    EnumProcesses(process_ids,sizeof(process_ids),&num_processes); 
    for(i=0; i<num_processes; i++) 

    process[i]=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ 
    ,0,process_ids[i]); 
    if(GetModuleFileNameExA(process[i],NULL,file_name,sizeof(file_name))) 
    wsprintf(szTemp,\"Process FileName :%s \\n\\r\",file_name); 
    send(NewSock,szTemp,lstrlen(szTemp),0); 

    CloseHandle(process); 

    break;