呵呵,那就不要用STRCMP
用STRSTR,应该可以吧,不过尽管可能实现,方法是有些菜。
不明白为什么会有你说的情况。

解决方案 »

  1.   

    strstr可以,你说的情况可能和操作系统有关。据我试验,98下可以有路径,2000下就没有路径了。
      

  2.   

    其实,我个人认为用GetModuleBaseName好些,它不带路径。可是不知道9x是否支持。
      

  3.   

    对,我自己的机器是WinXP,学校的机器上98。但是很奇怪,我自己的程序上显示的进程名都带“\”,可是VC自带的ProcessViewer上显示的同样的进程却不带“\”,不知道怎么回事,是不是ProcessViewer用了其他的API函数?不是CreateToolhelp32Snapshot?
      

  4.   

    另,to lshadow(光影)
    那你自己去掉那个'\',试试看
    --------------------------------
    我试过了,在学校的机器上不论加不加“\”,我的判断语句都失效。
      

  5.   

    to:NowCan(能量、激情、雨水、彩虹——雷雨云)我用一个循环把PROCESSENTRY32的szExeFile中保存的路径已经去掉了啊,只留下了可执行文件名。
      

  6.   

    TCHAR *lib;LPTSTR mir = "mir.exe";bag = Process32First( hand, &pe);for ( ; bag ; bag = Process32Next ( hand , &pe ) )lib =  _tcsrchr ( pe.szExeFile ,  _T('\\')) + 1 ;if ( lstrcmpi (mir , lib ) == 0).....
    ......
    .......
      

  7.   

    VC自带的ProcessViewer用的是PSAPI,不是ToolHelp。它只能在NT系列上使用。
      

  8.   

    可是学校的机器是98,而且Visual Studio Tools里面的ProcessViewer是可以用的啊。
      

  9.   

    Visual Studio Tools里面的ProcessViewer有两个版本,分别用于9X和NT
      

  10.   

    哦,我说我的机器上的ProcessViewer怎么和学校的界面不一样呢。
      

  11.   

    另,我把判断语句由strcmp改成了strstr可是还是不行啊!按说不应该这样啊。
      

  12.   

    没有道理吧,你看看STRSTR的用法。
      

  13.   

    呵呵,不怕各位见笑,VC我装在XP下,98只是用来玩玩游戏的,没开发环境,只有一个SoftICE(我想还犯不着劳动SoftICE的大驾吧?),所以我写程序的时候一直都没有考虑到98和XP有什么区别,现在每次修改程序,都得重启动到98下试验,不行的话还要再回到XP,挺麻烦的。XP底下我的程序一切正常,没有跟踪的必要。为98而写的那段代码根本就不会执行。
      

  14.   

    vcdll(zhxx) 兄弟:
    TCHAR *lib;
    LPTSTR mir = "mir.exe";
    bag = Process32First( hand, &pe);
    for ( ; bag ; bag = Process32Next ( hand , &pe ) )
    lib =  _tcsrchr ( pe.szExeFile ,  _T('\\')) + 1 ;
    if ( lstrcmpi (mir , lib ) == 0)
    .....
    ......
    .......
    你这段程序里面面的"Process32First( hand, &pe);" 在2000下调用返回false
    有办法解决没有落
      

  15.   

    在C语言中,\WINAMP.EXE 应写成 "\\WINAMP.EXE"
      

  16.   

    strstr返回值非0说明找到匹配,
    而strcmp返回值0说明相同。注意区别。
      

  17.   

    解决了!感谢wj6752() 一语惊醒梦中人!他的方法是最简单的,最有效的!再次感谢你wj6752() !
    也感谢其他帮助我的大侠!