Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Obtaining some properties for the Windows desktop using the GetWindowPlacement function
Quering a waveform-audio input device
Retrieving window and menu help context identifiers
Simple printer queue monitor: deletes, pauses, resumes print jobs for local printer
Using FrameRgn for displaying system colors
Accessing Windows Control Panel from VFP Application
Copying files as a transacted operation (Vista)
Drawing icons associated with the VFP main window
Enumerating ODBC Data Sources available on the local computer
How to get Special Folders paths
Retrieving configuration information for the specified server (Win98/Me)
Retrieving current settings for an ODBC connection
Retrieving Printer Device Context using PrintDlg function
Current keyboard type
Extracting the name and extension parts of a path string
Finding the path to the VFP executable running
Quering Audio Mixer Device
Time in milliseconds represented as string (e.g. 1 hour 24 min 36 sec)
Uploading file to the FTP server using InternetWriteFile
Using Font and Text functions
GDI+: Storing DLL icon resources in image files
Obtaining provider name for a specific type of network
Reading parameters of streams in AVI file
Retrieving the User Datagram Protocol (UDP) listener table
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: 104  
    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.22.25.119)
    31.88 min.Function: 'GetProfileString'
    31.93 min.Example: 'GDI+: sending image of FoxPro form to printer'
    32 min.Function: 'GetWindowTextLength'
    1.65 hrs.Example: 'Placing a button on the VFP form as a new child window'
     Function: 'InitiateShutdown'
    Function group: 'System Shutdown'
    1.96 hrs.Example: 'Saving HKEY_LOCAL_MACHINE\\Software\\ODBC Registry Entries to an XML file'
     Example: 'GDI+: printing vertical text on VFP reports via generated images (VFP8)'
    3.75 hrs.Example: 'How to display a user-defined icon in the MessageBox dialog'
     Example: 'Displaying the color palette stored in an image file'
     Function: 'EnumPrinterData'
    Google
    Advertise here!