Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
How to change display settings: screen resolution, screen refresh rate
Adding and deleting Scheduled Tasks using NetScheduleJob API functions
Custom GDI+ class
Converting Unicode data from the Clipboard to a character string using a given code page
Capturing keyboard activity of another application with the Raw Input API (VFP9)
Enumerating data formats currently available on the clipboard
Winsock: sending email messages (SMTP, port 25)
Custom FTP Class for Visual FoxPro application
How to download a file from the FTP server using FtpGetFile
Detecting changes in connections to removable drives (VFP9)
Splash Screen for the VFP application
Custom HttpRequest class (WinINet)
Mapping and disconnecting network drives
How to activate Windows Calculator
Enumerating raw input devices attached to the system (keyboard, mouse, human interface device)
Establishing connection using the SQLDriverConnect
How to convert a bitmap file to monochrome format (1 bpp)
Custom HttpRequest class (WinHTTP)
GDI+: copying to the Clipboard (a) image of active FoxPro window/form, (b) image file
Using EnumPrinters function to enumerate locally installed printers
Using Font and Text functions
Using WM_COPYDATA for interprocess communication (VFP9)
Displaying bitmap using the AlphaBlend function
Extensible Storage Engine class library
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: 109  
    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 (23.22.252.150)
    4.64 hrs.Example: 'Using an Event Object. Part A: running an application that creates an Event object'
     Function: 'SQLDataSources'
    7.65 hrs.Example: 'Displaying system dialog that selects a folder'
     
     Function: 'GdipRemovePropertyItem'
    Function group: 'GDI+ Image'
    8.12 hrs.Function: 'GdipSetMatrixElements'
     Function: 'SQLGetPrivateProfileString'
    Function group: 'ODBC API'
    8.7 hrs.Example: 'How to display a dialog box with which the user can add a data source (DSN)'
     Function: 'GdipCreatePen1'
    14.47 hrs.Example: 'Storing screen shot of a form to bitmap file'
    Google
    Advertise here!