用winapi哪个函数
GetFileName(unsigned long processID)   ???

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3160/3160433.xml?temp=.5719263
      

  2.   

    HWND hwnd = GetForegroundWindow()得到当前前台窗口句柄
    GetWindowThreadProcessID(&dwProcessID) ;得到窗口所属的进行ID
    HANDLE hProcess = OpenProcess(...) ;打开进程句柄
    TCHAR szFileName[MAX_PATH] = {NULL} ;
    GetModuleFileNameEx(hProcess,NULL,szFileName,MAX_PATH) ;得到窗口所在的应用程序文件名
    CloseHandle(hProcess) ;
      

  3.   

    to windyloft(好好吃饭) 楼上的方法,我试过,取不到
      

  4.   

    hProSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, *(lpPID+iCount));
     
    if (!hProSnap)
    {
    MessageBox("Create snap failed","");
    return;
    }lpme32.dwSize = sizeof(MODULEENTRY32);if (Module32First(hProSnap, &lpme32))
    {
     while(Module32Next(hProSnap, &lpme32))
     {
           strcpy(szProcessName, lpme32.szModule);
       strcpy(szPath, lpme32.szExePath);
       cout<<lpme32.th32ProcessID<<": "<<szProcessName<<" -> "<<szPath<<endl; };这个可以得到进程所有模块(DLL+EXE)的列表,列表里的第一项就是EXE的名字了,细节问题自己看着办吧,呵呵
      

  5.   

    你给我的代码中没有传递要找的文件名呀,如abc.exe呀,急!
      

  6.   

    枚举所有的映像名,没问题,测试过....
    BOOL GetImageName(char* szImageName)
    {
    BOOL            bResult;
    DWORD           dwTotal;
    HANDLE          hProcessSnap;
    PROCESSENTRY32  ProcessEntry32;
         dwTotal      = 0;
    bResult      = TRUE;
    hProcessSnap = NULL; DebugPrivilege(TRUE);
    hProcessSnap    =  CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    if(hProcessSnap == INVALID_HANDLE_VALUE)
    {
    printf("CreateToolhelp32Snapshot for Process Error: %d\n",GetLastError());
    bResult = FALSE;
    } ProcessEntry32.dwSize = sizeof(PROCESSENTRY32);
        if(Process32First(hProcessSnap,&ProcessEntry32))
    {
    do
    {
    if(ProcessEntry32.th32ProcessID == 0)
    {
    continue;
    }
    else
    {
    strcpy(szImageName, ProcessEntry32.szExeFile); /***get the image name of process*/
    }

    }
    while(Process32Next(hProcessSnap,&ProcessEntry32));
    }
    else
    {
    sprintf(szTempBuf, "ProcessEntry32First Error: %d",GetLastError());
    AfxMessageBox(szTempBuf);
    bResult = FALSE;
    }
    CloseHandle(hProcessSnap);
    DebugPrivilege(FALSE);
    return bResult;
    }BOOL DebugPrivilege(BOOL bEnable)
    {
    BOOL              bResult = TRUE;
    HANDLE            hToken;
    TOKEN_PRIVILEGES  TokenPrivileges;

    if(OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES,&hToken) == 0)
    {
    printf("OpenProcessToken Error: %d\n",GetLastError());
    bResult = FALSE;
    }
    TokenPrivileges.PrivilegeCount           = 1;
    TokenPrivileges.Privileges[0].Attributes = bEnable ? SE_PRIVILEGE_ENABLED : 0;
    LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&TokenPrivileges.Privileges[0].Luid);
    AdjustTokenPrivileges(hToken,FALSE,&TokenPrivileges,sizeof(TOKEN_PRIVILEGES),NULL,NULL);
        if(GetLastError() != ERROR_SUCCESS)
    {
    bResult = FALSE;
    }
    CloseHandle(hToken);
        
    return bResult;
    }