你用独占的方式尝试打开文件,如果失败不就表明有程序在用吗.读取只读文件的话你可以用只读的方式来打开它就可以了,不要用可写的方式打开.

解决方案 »

  1.   

    OpenFile
    The OpenFile function creates, opens, reopens, or deletes a file. Note  This function is provided only for compatibility with 16-bit versions of Windows. Win32-based applications should use the CreateFile function. HFILE OpenFile(
      LPCSTR lpFileName,        // file name
      LPOFSTRUCT lpReOpenBuff,  // file information
      UINT uStyle               // action and attributes
    );
    Parameters
    lpFileName 
    [in] Pointer to a null-terminated string that names the file to be opened. The string must consist of characters from the Windows 3.x character set. The OpenFile function does not support Unicode file names. Also, OpenFile does not support opening named pipes. 
    lpReOpenBuff 
    [out] Pointer to the OFSTRUCT structure that receives information about the file when it is first opened. The structure can be used in subsequent calls to the OpenFile function to refer to the open file. 
    The OFSTRUCT structure contains a pathname string member whose length is limited to OFS_MAXPATHNAME characters. OFS_MAXPATHNAME is currently defined to be 128. Because of this, you cannot use the OpenFile function to open a file whose path length exceeds 128 characters. The CreateFile function does not have such a path length limitation. uStyle 
    [in] Specifies the action to take. This parameter can be one or more of the following values. Value Meaning 
    OF_CANCEL Ignored. In the Win32 API, OF_PROMPT produces a dialog box containing a Cancel button. 
    OF_CREATE Creates a new file. If the file already exists, it is truncated to zero length. 
    OF_DELETE Deletes the file. 
    OF_EXIST Opens the file and then closes it. Used to test for a file's existence. 
    OF_PARSE Fills the OFSTRUCT structure but carries out no other action. 
    OF_PROMPT Displays a dialog box if the requested file does not exist. The dialog box informs the user that the system cannot find the file, and it contains Retry and Cancel buttons. Choosing the Cancel button directs OpenFile to return a file-not-found error message. 
    OF_READ Opens the file for reading only. 
    OF_READWRITE Opens the file for reading and writing. 
    OF_REOPEN Opens the file using information in the reopen buffer. 
    OF_SHARE_COMPAT For MS-DOS–based file systems using the Win32 API, opens the file with compatibility mode, allowing any process on a specified computer to open the file any number of times. Other efforts to open with any other sharing mode fail. 
    Windows NT/2000: This flag is mapped to the CreateFile function's FILE_SHARE_READ | FILE_SHARE_WRITE flags.
     
    OF_SHARE_DENY_NONE Opens the file without denying read or write access to other processes. On MS-DOS-based file systems using the Win32 API, if the file has been opened in compatibility mode by any other process, the function fails. 
    Windows NT/2000: This flag is mapped to the CreateFile function's FILE_SHARE_READ | FILE_SHARE_WRITE flags.
     
    OF_SHARE_DENY_READ Opens the file and denies read access to other processes. On MS-DOS-based file systems using the Win32 API, if the file has been opened in compatibility mode or for read access by any other process, the function fails. 
    Windows NT/2000: This flag is mapped to the CreateFile function's FILE_SHARE_WRITE flag.
     
    OF_SHARE_DENY_WRITE Opens the file and denies write access to other processes. On MS-DOS-based file systems using the Win32 API, if the file has been opened in compatibility mode or for write access by any other process, the function fails. 
    Windows NT/2000: This flag is mapped to the CreateFile function's FILE_SHARE_READ flag.
     
    OF_SHARE_EXCLUSIVE Opens the file with exclusive mode, denying both read and write access to other processes. If the file has been opened in any other mode for read or write access, even by the current process, the function fails. 
    OF_VERIFY Verifies that the date and time of the file are the same as when it was previously opened. This is useful as an extra check for read-only files. 
    OF_WRITE Opens the file for writing only. 
    Return Values
    If the function succeeds, the return value specifies a file handle.If the function fails, the return value is HFILE_ERROR. To get extended error information, call GetLastError. 用openfile就可以,uStyle取OF_SHARE_DENY_NONE,以不共享打开就知道有没有别的程序打开了,读取只读文件uStyle取OF_READ。