DOCUMENT:Q195850  27-AUG-1999  [foxpro]
TITLE   :HOWTO: Determine the Windows Messaging Subsystem Default
PRODUCT :Microsoft FoxPro
PROD/VER:WINDOWS:3.0,3.0b,5.0,5.0a,6.0
OPER/SYS:
KEYWORDS:kbMAPI kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp600

======================================================================
-------------------------------------------------------------------------------
The information in this article applies to:

 - Microsoft Visual FoxPro for Windows, versions 3.0, 3.0b, 5.0, 5.0a, 6.0 
-------------------------------------------------------------------------------

SUMMARY
=======

Occasionally, when you are working on MAPI-enabled FoxPro applications you might
need to determine what the default Windows Messaging profile is on a target
computer. This article demonstrates how to accomplish this using the Windows
API.

MORE INFORMATION
================

Step-by-Step Procedures
-----------------------

1. In Visual FoxPro, open a new program window by typing the following in the
   Command window:

         MODIFY COMMAND

2. Copy the following code into a program file:

      #DEFINE HKey_CURRENT_USER 2147483649
      DECLARE INTEGER RegCloseKey IN Win32API ;
         INTEGER nHKey
      DECLARE INTEGER RegOpenKey IN Win32API ;
         INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
      DECLARE RegEnumValue IN ADVAPI32 INTEGER nKeyHandle, INTEGER iValue, ;
         STRING @cValueName, INTEGER @iValueLen, INTEGER, STRING @cTypeCode, ;
         STRING @cDataValue, INTEGER @iDataLen

      nSubKey = 0
      nErrCode = 0
      nKeyHandle = 0
      iValue = 0
      cValueName = SPACE(255)
      iValueLen = 255
      cTypeCode = SPACE(255)
      cDataValue = SPACE(255)
      iDataLen = 255

      *!* Determine what operating system you are on: Windows NT or
      *!* Windows 9x.
      IF "NT" $ OS(1)
         ckey = "Software\Microsoft\Windows NT\CurrentVersion\" + ;
            "Windows Messaging Subsystem\Profiles"
      ELSE
         ckey = "Software\Microsoft\Windows Messaging Subsystem\Profiles"
      ENDIF

      nErrCode = RegOpenKey(HKey_CURRENT_USER,ckey,@nKeyHandle)
      *!* If nErrCode <> 0, Windows messaging is probably not installed.
      IF nErrCode # 0
         WAIT WINDOW "Windows Messaging Key Not Present"
         RETURN nErrCode
      ENDIF

      RegEnumValue(nKeyHandle,0,@cValueName,@iValueLen,0,;
         @cTypeCode, @cDataValue, @iDataLen)
      *!* If cDataValue is blank, no profiles have been set up.
      IF EMPTY(cDataValue)
         WAIT WINDOW "No Windows Messaging Profiles Set"
         RETURN
      ELSE
         ? LEFT(cDataValue, iDataLen-1)
      ENDIF
      RegCloseKey(nKeyHandle)

3. Save and run this program.

RESULT: You should see text echoed in the main FoxPro window. This is the default
Windows Message profile for this computer.


Additional query words:

======================================================================
Keywords          : kbMAPI kbvfp300 kbvfp300b kbvfp500 kbvfp500a kbvfp600 
Technology        : kbVFPsearch kbAudDeveloper kbVFP300 kbVFP300b kbVFP500 kbVFP600 kbVFP500a
Version           : WINDOWS:3.0,3.0b,5.0,5.0a,6.0
Issue type        : kbhowto

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS
PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND.  MICROSOFT DISCLAIMS
ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  IN NO
EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR
ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL,
CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF
MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO NOT ALLOW THE EXCLUSION
OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES
SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1999.