0

だから、私はこれで2日間戦ってきましたが、それでも同じエラーです。私はグーグルで300以上の結果を出していますが、それでも同じ失敗です。常に HEX として表示されるか、まったく機能しません。

これは、外部ライブラリや .net フレームワークを使用していません。100%非依存。

30以上の方法を試しました。 TCHAR szExeFileName[MAX_PATH]; GetModuleFileName(NULL, szExeFileName, MAX_PATH);

^ 機能しません。16 進数を返します。コードは空白です。

        #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);
    }*/
}
4

1 に答える 1

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; 
}
于 2020-03-28T22:30:48.590 に答える