解决方案 »

  1.   

    创建个线程 一直循环 获取NAME
      

  2.   

    就是用
    TCHAR szFilePath[MAX_PATH + 1]={0};
     GetModuleFileName(NULL, szFilePath, MAX_PATH);
    我这里测试并没有出现你说的问题
      

  3.   

    感谢 CharlesSimonyi 的热心回复,还做了动画演示,但是可能大家没理解我的意思,我是指程序一直处于运行状态,但期间文件名变化了,怎么才能每次都能获取当前的文件名.
    A.exe运行了,这时GetModuleFileName获取的是**\A.exe,但是文件名被改变(A.exe仍处于运行中),怎么获取改变后的文件名?
      

  4.   

    在运行过程中,exe文件名被改变??
      

  5.   

    程序启动的时候记录程序路径及其名称,程序运行的时候可以使用定时器来查找记录的程序路径是否存在不存在就XXXXX
      

  6.   

    请问动画是用什么软件制作的?PCHunter等工具不但可以修改正在运行的exe文件名,还能删除。
      

  7.   

     GetModuleFileName获取的是应用程序名
    你要的是不是窗口标题?
      

  8.   

    EXE运行时候是只读的,怎么肯能改变啊??运行中不可能被修改的
      

  9.   

    调用API函数GetModuleFileName即可
      

  10.   

    使用QueryFullProcessImageName可以做到。尝试了GetModuleFileName,GetProcessImageFileName和QueryFullProcessImageName,只有后者可以实现。示例代码:
    #include "stdafx.h"
    #include <Windows.h>
    #include <Psapi.h>
    #include <stdio.h>#pragma comment(lib, "Psapi.lib")void OutputSelfpath()
    {
    char szFile[MAX_PATH] = {0};
    GetModuleFileName(NULL, szFile, MAX_PATH);
    printf("GetModuleFileName:\n\r%s\n\n", szFile); memset(szFile, 0, MAX_PATH); HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, GetCurrentProcessId());
    if (!hProcess)
    {
    printf("OpenProcess failed!\n");
    }
    else
    {
    DWORD dwRet = GetProcessImageFileName(hProcess, szFile, MAX_PATH);
    if (dwRet)
    {
    printf("GetProcessImageFileName:\n\r%s\n\n", szFile);
    }
    else
    {
    printf("GetProcessImageFileName failed!\n");
    } DWORD dwSize = MAX_PATH;
    if (QueryFullProcessImageName(hProcess, 0, szFile, &dwSize))
    {
    printf("QueryFullProcessImageName:\n\r%s\n\n", szFile);
    }
    else
    {
    printf("QueryFullProcessImageName failed\n", szFile);
    }
    }
    }int main()
    {
    const char* pszFile = "ConsoleTest.exe";
    const char* pszNewFile = "ConsoleTest_bak.exe";
    remove(pszNewFile); OutputSelfpath();

    int nRet = rename(pszFile, pszNewFile); if (0 != nRet)
    {
    printf("rename file failed!\n");
    }
    else
    {
    OutputSelfpath();
    } system("pause");
    return 0;
    }输出:
    参见http://www.mazhuang.org/2014/10/09/path-after-rename/
      

  11.   

    惊闻如此之多的 CSDN 的老用户居然都不知道运行中的 exe 可以改名这个事实。不过我发现只是部分可以改名,有的不行,有的则是 XP 上运行中不可以改名,Windows 7 可以。不知道运行中是否可以改名与什么有关系。
      

  12.   


    嗯……可能很多人想当然了吧。不只是EXE运行中一般可以改名,DLL在被加载后一般也是可以改名的。