如题
卸载的我想先判断程序是否在运行 如果是的话就给出先退出程序的提示。晚上很多用下面这个代码
Function   un.onInit
      FindProcDLL::FindProc   "abc.exe"
      Pop   $0
      IntCmp   $0   1   0   no_run
      MessageBox   MB_ICONSTOP   "(你的程序)正在运行,请先关闭程序!"
      Quit
      no_run:
  FunctionEnd
我用了出错提示Invalid command: FindProcDLL::FindProc
在线等 各位大哥帮帮忙,谢谢!!

解决方案 »

  1.   

    DWORD FindProcess(char *strProcessName)
    {
        DWORD aProcesses[1024], cbNeeded, cbMNeeded;
        HMODULE hMods[1024];
        HANDLE hProcess;
        char szProcessName[MAX_PATH];    if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )  return 0;
        for(int i=0; i< (int) (cbNeeded / sizeof(DWORD)); i++)
        {
            //_tprintf(_T("%d\t"), aProcesses[i]);
            hProcess = OpenProcess(  PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);
            EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbMNeeded);
            GetModuleFileNameEx( hProcess, hMods[0], szProcessName,sizeof(szProcessName));
           
            if(strstr(szProcessName, strProcessName))
            {
                //_tprintf(_T("%s;"), szProcessName);
                return(aProcesses[i]);
            }
            //_tprintf(_T("\n"));
        }
        return 0;
    }见函数说明:
    http://blog.csdn.net/agan2007/archive/2007/09/07/1776812.aspx
      

  2.   

    自己写个exe文件,在exe文件里面处理。卸载的时候调用,ExecWait
      

  3.   

    对,要不直接
    HWND hwnd=findwindow(null,"窗口名");
    if(hwnd)
    SendMessag(hwnd,wm_close,0,0);
    我在Installshield里面就是这样做的.
      

  4.   

    这种工作最好放一个exe中执行...
      

  5.   

    没有使用FindProcDLL这个插件的原因