C ++获取运行exe的当前文件

时间:2013-11-02 22:17:20

标签: c++

所以,我现在已经和它斗争了2天,仍然是同样的错误。 我一直在使用谷歌超过300个结果,仍然是相同的失败。它一直显示为HEX,或根本不起作用。

这不使用任何外部库,也不使用.net框架。 100%不依赖。

我尝试了30多种方法。 TCHAR szExeFileName[MAX_PATH]; GetModuleFileName(NULL, szExeFileName, MAX_PATH);

^不起作用;返回十六进制 代码无效。

        #include "SharedHeader.h"
    #include <Psapi.h>
    #include "CommandLine_Pres.h"
    #include <TlHelp32.h>
using namespace std;

void filePath()
{
    // Figure out file path of current file
    char cCurrentPath[FILENAME_MAX];
    if(!GetCurrentDir(cCurrentPath, sizeof(cCurrentPath)))
    {
        cout << "error" << endl;
    }
    cCurrentPath[sizeof(cCurrentPath) -1] = '\0';
    cout << cCurrentPath << endl;
    // Get process id, filename
    //cout << GetCommandLine();
    int procId = GetCurrentProcessId();
    SYSTEM_INFO si;
    GetNativeSystemInfo(&si);
    /*
    DOES NOT WORK BELOW [debug]
    HANDLE Handle = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE,GetCurrentProcessId());
    if(Handle)
    {
        TCHAR Buffer[MAX_PATH];
        if(GetModuleFileNameEx(Handle, 0, Buffer, MAX_PATH))
        {

        }
        else
        {

        }
        CloseHandle(Handle);
    }*/
}

1 个答案:

答案 0 :(得分:0)

要获取当前正在运行的进程的地址,可以使用:

#include <iostream>

int main(int argc, char** argv)
{ 
    std::cout << argv[0] << std::endl; 

    getchar();

    return 0; 
}

或:

#include <iostream>
#include <windows.h>

int main()
{ 
    char szExeFileName[MAX_PATH];
    GetModuleFileName(NULL, szExeFileName, MAX_PATH);

    std::cout << szExeFileName;

    getchar();

    return 0; 
}