_HWnd:=FindWindow(Nil,PChar('你要找的程序窗体名'));
    If (_HWnd<>0) Then
       //存在
    Else 
       //不存在

解决方案 »

  1.   

    我明明回车换行了呀???怎么回事???_HWnd:=FindWindow(Nil,PChar('你要找的程序窗体名'));
    If (_HWnd<>0) Then     //存在    
                  Else     //不存在
      

  2.   

    利用createmutex和openmutex进行程序检测。
    程序开始,就使用openmutex进行回斥句柄的检测,不为零表示存在实例,否则利用createmutex创建互斥句柄!
      

  3.   

    这个问题可以用下面的几个函数来解决。
    这几个函数用来遍历系统中所有的进程,然后你可以将你要找的进程特征与列表中
    的进程进行比较。
    这几个函数是示例如下:
    var
      dwProcessId: DWORD;
      hSnapshot: THandle;
      lppe: TProcessEntry32;
    begin
      result:='';
      GetWindowThreadProcessID(hWnd,@dwProcessId);
      hSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
      lppe.dwSize:=Sizeof(lppe);
      if Process32First(hSnapshot,lppe) then
        while Process32Next(hSnapshot,lppe) do
          if dwProcessId=lppe.th32ProcessID then result:=lppe.szExeFile;
      CloseHandle(hSnapshot);
    以上代码用来查找指定句柄窗口所在进程的文件名称
      

  4.   

    使用下面方法
       createmutex(NIL,TRUE,'SFSFDSDSGDSGDSGDSGDSGDGD');
      IF GetLastError=ERROR_ALREADY_EXISTS THEN “存在在”;
    在函数createmutex的最后一个参数为特别字符(随便写),在两个程序中都加入上面两行,
    当一个程序运行后,另一个就能检测到。
      

  5.   

    用inbud(清风侠)的方法好一些,用MUTEX是不是没必要啊