Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Dial the Net Automatically
Disconnecting USB Mass Storage Device programmatically
Displaying printer-properties Property Sheet for the specified printer
Get the power status of your laptop computer
How to delete IE cookies, clear IE history and delete files in Temporary Internet Files directory
How to retrieve adapter information for the local computer (including MAC address)
Simple Window Viewer
Accessing examples contained in this reference from a VFP application
Drawing a rectangle using Windows regular edges and borders
Drawing standard Windows icons
How to set Creation Date/Time for a folder (WinNT)
Retrieving file information for the VFP executable running
Using the RestartDialog function -- restarting Windows
Attaching menu to a top-level form
Extended MessageBox Class
Retrieving current settings for an ODBC connection
Shortcut Menu Class
Storing registration key in the resources of an executable file
Using Change Notification Objects to monitor changes to the printer or print server
Winsock: reading and setting socket options
Disabling drawing in the VFP form
How to retrieve network parameters for the local computer (including Host name, Domain name, and DNS Server)
Power capabilities of the system: battery, UPS, sleep and hibernation modes, processor throttling
Reading VFP settings from the Windows Registry
Retrieving file information for the VFP executable running

User rating: 0/10 (0 votes)
Rate this code sample:
  • ~
More code examples    Listed functions    Add comment     W32 Constants      Translate this page Printer friendly version of this code sample
Before you begin:
API calls GetModuleFileName and GetFileInformationByHandle are used to obtain information about the file behind the current process.
The latter returns populated BY_HANDLE_FILE_INFORMATION structure.

See also:
  • How to retrieve version information for the specified file
  • Showing the Properties dialog box for a file (ShellExecuteEx)
  • Basic Volume Information
  •  
    DO decl
     
    *| typedef struct _BY_HANDLE_FILE_INFORMATION {
    *|   DWORD    dwFileAttributes;       0:4
    *|   FILETIME ftCreationTime;         4:8
    *|   FILETIME ftLastAccessTime;      12:8
    *|   FILETIME ftLastWriteTime;       20:8
    *|   DWORD    dwVolumeSerialNumber;  28:4
    *|   DWORD    nFileSizeHigh;         32:4
    *|   DWORD    nFileSizeLow;          36:4
    *|   DWORD    nNumberOfLinks;        40:4
    *|   DWORD    nFileIndexHigh;        44:4
    *|   DWORD    nFileIndexLow;         48:4 total 52 bytes
    *| } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION
     
    #DEFINE FILEINFO_SIZE       52
    #DEFINE OF_READ              0
    #DEFINE OF_SHARE_DENY_NONE  64
    #DEFINE HFILE_ERROR         -1
     
    * file type constants
    #DEFINE FILE_TYPE_UNKNOWN 0
    #DEFINE FILE_TYPE_DISK 1
    #DEFINE FILE_TYPE_CHAR 2
    #DEFINE FILE_TYPE_PIPE 3
    #DEFINE FILE_TYPE_REMOTE 0x8000
     
    LOCAL lcFilename, lcFileInfo, lcReopenBuf, hFile,;
        lnFiletype, lnResult
     
    lcReopenBuf = Repli(Chr(0), 250)
    lcFilename = GetModuleName()
     
    hFile = OpenFile(lcFilename,;
        @lcReopenBuf, OF_READ+OF_SHARE_DENY_NONE)
     
    IF hFile = HFILE_ERROR
        ? "Error opening file"
        RETURN
    ENDIF
     
    lcFileInfo = Repli(Chr(0), FILEINFO_SIZE)
     
    lnResult = GetFileInformationByHandle(hFile, @lcFileInfo)
    lnFiletype = GetFileType(hFile)
    = CloseHandle(hFile)
     
    IF lnResult <> 0
        ? "Target file:", lcFilename
        ? "File type:", lnFiletype
        ? "File attributes: ", buf2dword(SUBSTR(lcFileInfo, 1,4))
     
        * the serial number of the volume that contains the file
        ? "Volume serial number:", buf2dword(SUBSTR(lcFileInfo, 29,4))
     
        ? "File size high:", buf2dword(SUBSTR(lcFileInfo, 33,4))
        ? "File size low:", buf2dword(SUBSTR(lcFileInfo, 37,4))
     
        * the number of links to this file
        * for the FAT file system this member is always 1
        ? "Number of links:", buf2dword(SUBSTR(lcFileInfo, 41,4))
     
        * FileIndex: this identifier and the volume serial number 
        * uniquely identify a file.
     
        * An application can use this identifier and the volume 
        * serial number to determine whether two handles refer 
        * to the same file.
     
        ? "File index high:", buf2dword(SUBSTR(lcFileInfo, 45,4))
        ? "File index low:", buf2dword(SUBSTR(lcFileInfo, 49,4))
    ENDIF
     
    FUNCTION  GetModuleName
    * retrieves the full path and file name 
    * for the VFP executable running
        LOCAL lcBuffer, lnLen
        lcBuffer = SPACE(512)
        lnLen = GetModuleFileName(0, @lcBuffer, Len(lcBuffer))
    RETURN  Left(lcBuffer, lnLen)
     
    FUNCTION  buf2dword (lcBuffer)
    RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
        Asc(SUBSTR(lcBuffer, 2,1)) * 256 +;
        Asc(SUBSTR(lcBuffer, 3,1)) * 65536 +;
        Asc(SUBSTR(lcBuffer, 4,1)) * 16777216
     
    PROCEDURE  decl
        DECLARE INTEGER CloseHandle IN kernel32 INTEGER hObject
     
        DECLARE INTEGER GetFileInformationByHandle IN kernel32;
            INTEGER hFile, STRING @lpFileInformation
     
        DECLARE INTEGER OpenFile IN kernel32;
            STRING lpFileName, STRING @lpReOpenBuff, INTEGER wStyle 
     
        DECLARE INTEGER GetModuleFileName IN kernel32;
            INTEGER hModule, STRING @lpFilename, INTEGER nSize
     
        DECLARE INTEGER GetFileType IN kernel32 INTEGER hFile
     
     

    User rating: 0/10 (0 votes)
    Rate this code sample:
    • ~
    3086 bytes  
    Created: 2002-01-03 19:19:17  
    Modified: 2005-12-27 10:47:47  
    Visits in 7 days: 107  
    Listed functions:
    CloseHandle
    GetFileInformationByHandle
    GetFileType
    GetModuleFileName
    OpenFile
    Printer friendly API declarations
    My comment:
    The Volume Serial Number value obtained through this code is more accurate comparing to this example: Basic Volume Information. Since the result of the latter is often interpreted by the VFP as a signed integer.
    Word Index links for this example:
    Translate this page:
      Spanish    Portuguese    German    French    Italian  
    FreeTranslation.com offers instant, free translations of text or web pages.
    User Contributed Notes:
    There are no notes on this subject.


    Copyright © 2001-2013 News2News, Inc. Before reproducing or distributing any data from this site please ask for an approval from its owner. Unless otherwise specified, this page is for your personal and non-commercial use. The information on this page is presented AS IS, meaning that you may use it at your own risk. Microsoft Visual FoxPro and Windows are trade marks of Microsoft Corp. All other trademarks are the property of their respective owners. 

    Privacy policy
    Credits: PHP (4.4.9), an HTML-embedded scripting language, MySQL (5.1.55-log), the Open Source standard SQL database, AceHTML Freeware Version 4, freeware HTML Editor of choice.   Hosted by Korax Online Inc.
    Last Topics Visited (107.20.129.212)
    6 sec.Example: 'How to print FoxPro form'
    27.13 min.Pwd
    27.18 min.Example: 'Pocket PC: modifying keys in the System Registry'
    41.32 min.Example: 'Displaying bitmap using the AlphaBlend function'
    5.72 hrs.Example: 'Using the GradientFill function'
     Example: 'How to adjust monitor brightness (Vista, monitor with DDC support)'
    7.47 hrs.Function: 'CryptProtectData'
    Function group: 'Cryptography Reference'
    8.83 hrs.Function: 'CreateFont'
    Function group: 'Font and Text'
    13.47 hrs.Function: 'MAPILogon'
    15.71 hrs.Function: 'GdipSetPageUnit'
    Function group: 'GDI+ Graphics'
    Google
    Advertise here!