1 怎样判断某个程序正在被使用?
比如:我打开了我的一个程序名字叫 "a.exe",怎样编写一个程序来判断"a.exe"正在被使用?如果正在被使用给出一个提示,如果"a.exe"使用完后被关闭就删除它。即编写一个程序在后台监视。请各位能帮我一下,小弟在此万分感激。是否您能分别编一个程序发到我的信箱?
Email:  [email protected]

解决方案 »

  1.   

    如果是你自己编的程序就好办了
    var
      hmutex:hwnd;
      ret:integer;
    begin
      Application.Initialize;
      hmutex:=createmutex(nil,false,'project1');
      //这里project1是程序的名称  ret:=getlasterror;
      if ret<>error_already_exists then
      begin
      Application.CreateForm(TForm1, Form1);
      end
      else
      begin
      messagedlg('程序已运行。',mtinformation,[mbok],0);
      releasemutex(hmutex);
      end;//将上面的额程序加到你的额project里面
      

  2.   

    //用互斥可以 ;  简单点取句柄也行   h := FindWindow(PChar('ClassName'),PChar('Caption')) ;
      if h = 0 then Application.Run ;
      

  3.   

    function IsFileInUse(Const AFileName: String): Boolean;
    var
      HFileRes: HFILE;
    begin
      Result := False;
      if not FileExists(AFileName) then
        exit;
      HFileRes := CreateFile(pchar(AFileName), GENERIC_READ or GENERIC_WRITE,0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);
      Result := (HFileRes = INVALID_HANDLE_VALUE);
      if not Result then
        CloseHandle(HFileRes);
    end;