实现功能:我在程序a里检查当前系统进程列表,如果进程b存在,进程a就继续运行,否则进程a就自行关闭。
出现问题:当运行a的发布debug版本的时候,一切正常。运行release版本的时候,只要移动进程a的界面,不管进程b存不存在,进程a都回自动关闭。why?

解决方案 »

  1.   

    debug 会初始化一些信息的。 Release不会
      

  2.   

    楼上说的有道理。
    建议在Release版程序中输出一些调试信息,看看在什么地方出错的。
      

  3.   

    除了初始化的一些信息外,还应该检查有哪些代码,在debug执行了,在release版没有执行。如ASSERT()等。
      

  4.   

    进程b存在的情况下,移动进程a,输出的tts为乱码,代码如下:
    void CXieYZHDlg::OnTimer(UINT nIDEvent) 
    {
    // PROCESSENTRY32结构对象
    CString ts="",tts="";
    PROCESSENTRY32 pe;
    // 创建快照句柄
    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if(((int)hSnapshot)!=-1)
    {
    // 先搜索系统中第一个进程的信息
    Process32First(hSnapshot, &pe);
    // 下面对系统中的所有进程进行枚举,并保存其信息
    do
    {
    ts=pe.szExeFile;
    tts=tts+ts+" ";
    if(ts=="GuanL_PTC.exe") 
    {
    CloseHandle(hSnapshot);
    CDialog::OnTimer(nIDEvent);
    return;
    }
    //把进程对应的文件路径名填入列表框
    //int index = m_ctlwndList.AddString(pe.szExeFile);

    } while (Process32Next(hSnapshot, &pe));
    // 关闭快照句柄
    CloseHandle(hSnapshot);
    AfxMessageBox(tts);
    OnExit();
    return;
    }
    CDialog::OnTimer(nIDEvent);
    }
      

  5.   

    if(ts=="GuanL_PTC.exe") 
    ====》
    ts.MakeUpper();
    if(ts.Find("GUANL_PTC")!=-1)
      

  6.   

    不好意思,出差才回来,不过看到我的问题没人能有好的解答,失望!我自己找到了一个解决方法,就是把PROCESSENTRY32 pe,HANDLE hSnapshot 定义成类变量,就可以正常运行了。但是还是想不明白为什么?哪位大虾能给出合理的解释?