Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
Using Multimedia Command Strings to play MIDI files
Winsock: how to retrieve a service information corresponding to a port
Winsock: how to retrieve the protocol information corresponding to a protocol number
Displaying the drive type value
GDI+: Color Transparency
How to retrieve version information for the specified file
Minimizing all running applications
Obtaining heap handles and enumerating memory blocks for the current VFP session (WinNT only)
Retrieving information specific to the current Time Zone
Starting a dialog box for connecting to network resources and passing input parameters
Changing system colors
Converting twips to pixels and vice versa
Creating hash values for the list of names
GDI+: Using Scale and Shear transformations
GetProcessVersion points at target OS
Reading data from INI files
Using an Event Object. Part B: running an application responding to events
Closing Windows
Copying files as a transacted operation (Vista)
DiskFreeSpace class
GDI+: converting text strings to images and saving in a graphics file
How to initiate System shutdown
Retrieving window and menu help context identifiers
Drawing a window caption using the DrawCaption routine
Winsock: how to retrieve a service information corresponding to a port

User rating: 8/10 (1 votes)
Rate this code sample:
  • ~
More code examples    Listed functions    Add comment     W32 Constants      Translate this page Printer friendly version of this code sample
 
DO decl
LOCAL lnServentPtr, lnPort
 
IF InitWinsock()
    CREATE CURSOR cs (port N(5), service C(20), prot C(20), aliases C(200))
 
    FOR ii=0 TO 1024
*    FOR ii=0 TO 65535  && usually it takes awhile
 
        * converting the port number to the network byte order
        lnPort = htons(ii)
 
        * try "tcp" or "udp" instead of the .NULL.
        lnServentPtr = getservbyport (lnPort, .NULL.)
 
        IF lnServentPtr <> 0
            = DisplayServInfo (lnServentPtr)
        ENDIF
    ENDFOR
    = WSACleanup()
 
    SELECT cs
    GO TOP
    BROWSE NORMAL NOWAIT
ENDIF
* End of Main
 
PROCEDURE  DisplayServInfo (lnServentPtr)
*| struct servent {
*|   char FAR *        s_name;      0:4
*|   char FAR * FAR *  s_aliases;   4:4
*|   short             s_port;      8:4
*|   char FAR *        s_proto;    12:4
*| }; total bytes = 16
#DEFINE SERVENT_SIZE  16
 
    LOCAL lcBuffer, lcService, lnPort, lcProt, lcAliases
    lcBuffer = Repli(Chr(0), SERVENT_SIZE)
    = Heap2Str (@lcBuffer, lnServentPtr, SERVENT_SIZE)
 
    lcService = GetMemStr(buf2dword(SUBSTR(lcBuffer, 1,4)))
    lcAliases = GetAliases(buf2dword(SUBSTR(lcBuffer, 5,4)))
    lnPort    = htons(buf2word(SUBSTR(lcBuffer, 9,2)))
    lcProt    = GetMemStr(buf2dword(SUBSTR(lcBuffer, 13,4)))
 
    ? lnPort, ":", lcService
    INSERT INTO cs VALUES (lnPort, lcService, lcProt, lcAliases)
RETURN
 
FUNCTION  GetAliases (lnArrayPtr)
* returns a string with alternate names for the service
* delimited with semicolons
    IF lnArrayPtr = 0
        EXIT
    ENDIF
 
    LOCAL lcResult, lnDataPtr, lcAlias
    lcResult = ""
 
    DO WHILE .T.
        * each array element contains a pointer to data
        lnDataPtr = buf2dword(GetMemBuf(lnArrayPtr, 4))
 
        IF lnDataPtr <> 0
            lcAlias = GetMemStr(lnDataPtr)
            lcResult = lcResult +;
                Iif(Empty(lcResult), "",";") + lcAlias
        ELSE
        * the last array element contains null
            EXIT
        ENDIF
        lnArrayPtr = lnArrayPtr + 4  && next array element
    ENDDO
RETURN  lcResult
 
FUNCTION  InitWinsock()
* Initializing the Winsock service for the application
#DEFINE WSADATA_SIZE 398
#DEFINE WS_VERSION 0x0202
    LOCAL lcWSADATA, lnInitResult
    lcWSADATA = Repli(Chr(0), WSADATA_SIZE)
    lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA)
RETURN  (lnInitResult = 0)
 
FUNCTION  GetMemBuf (lnAddr, lnBufsize)
    LOCAL lcBuffer
    lcBuffer = Repli(Chr(0), lnBufsize)
    = Heap2Str (@lcBuffer, lnAddr, lnBufsize)
RETURN  lcBuffer
 
FUNCTION  GetMemStr (lnAddr)
* returning data from a memory block
* before the first occurence of a zero byte
    LOCAL lcBuffer
    lcBuffer = GetMemBuf (lnAddr, 250)
RETURN  SUBSTR(lcBuffer, 1, AT(Chr(0),lcBuffer)-1)
 
FUNCTION  buf2word (lcBuffer)
RETURN Asc(SUBSTR(lcBuffer, 1,1)) + ;
    Asc(SUBSTR(lcBuffer, 2,1)) * 256
 
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 WSACleanup IN ws2_32
    DECLARE INTEGER getservbyport IN ws2_32 INTEGER port, STRING proto  
    DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING @lpWSAData
    DECLARE INTEGER htons IN ws2_32 INTEGER hostshort
 
    DECLARE RtlMoveMemory IN kernel32 As Heap2Str;
        STRING @Dest, INTEGER Src, INTEGER nLength
 
 

User rating: 8/10 (1 votes)
Rate this code sample:
  • ~
3241 bytes  
Created: 2001-12-17 23:33:58  
Modified: 2005-12-27 10:43:43  
Visits in 7 days: 71  
Listed functions:
getservbyport
htons
WSACleanup
WSAStartup
Printer friendly API declarations
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 (54.224.75.101)
4 sec.Example: 'Placing an arbitrary rectangular area of main VFP window on the Clipboard'
56.6 min.Example: 'Using Video Capture: displaying on FoxPro form frames and previewing video obtained from a digital camera'
56.65 min.
Function group: 'Device Context'
1.95 hrs.Function: 'WNetGetLastError'
Function group: 'Windows Networking'
 Function: 'waveInOpen'
2.29 hrs.Function: 'CryptGetKeyParam'
6.46 hrs.Example: 'Drawing Windows frame controls using the DrawFrameControl function'
 Function: 'MAPIFreeBuffer'
6.75 hrs.Function: 'ReleaseCapture'
6.76 hrs.Example: 'Enumerating print processors and supporting data types installed on the specified server'
Google
Advertise here!