Using Win32 functions in Visual FoxPro Image Gallery
Code examples:
GDI+: Storing content of the Clipboard to a bitmap file
Class for sound recording
Using the DrawText function
Initiating Inet connection using a modem
How to activate Windows Calculator
Using File Mapping for enumerating files opened by Visual FoxPro
Winsock: reading email messages (POP3, port 110)
Custom HttpRequest class (WinHTTP)
Start an executable from VFP application by using the CreateProcess
Displaying bitmap using the AlphaBlend function
Using Common Controls: the Header Control
Adding and deleting Scheduled Tasks using NetScheduleJob API functions
Creating the Open dialog box to specify the drive, directory, and name of a file to open
Displaying system dialog that selects a folder
Bitmap Class for Visual FoxPro application
How to change the name and the size of the font in the MessageBox dialog
Establishing connection using the SQLDriverConnect
How to convert a bitmap file to monochrome format (1 bpp)
How to retrieve configuration data for a specified printer stored in the registry (PrinterDriverData key)
Starting an external application in VFP using WinExec
Deleting files into the Recycle Bin
Connecting a local device to a network resource
Custom FTP Class for Visual FoxPro application
Custom HttpRequest class (WinINet)
How to activate Windows Calculator

User rating: 10/10 (2 votes)
Rate this code sample:
  • ~
More code examples    Listed functions    Add comment     W32 Constants      Translate this page Printer friendly version of this code sample
Versions:
click to open
Before you begin:
This code sample explains how to programmatically open an instance of Windows Calculator.

 
PUBLIC frm
frm = CreateObject("Tform")
frm.Visible = .T.
 
DEFINE CLASS Tform As Form
#DEFINE WM_QUIT 18
#DEFINE SW_SHOWNORMAL 1
    Width=400
    Height=200
    Caption="Activate Windows Calculator"
 
    ADD OBJECT cmdShow As CommandButton WITH;
        Caption="Show Calc", Height=24, Width=100,;
        Top=5, Left=10
 
    ADD OBJECT cmdHide As CommandButton WITH;
        Caption="Hide Calc", Height=24, Width=100,;
        Top=5, Left=112
 
PROCEDURE Init
    THIS.declare
 
PROCEDURE Destroy
    THIS._hide
 
PROCEDURE cmdShow.Click
    ThisForm._show
 
PROCEDURE cmdHide.Click
    ThisForm._hide
 
PROCEDURE _show
    LOCAL hWindow
    hWindow = FindWindow(Null, "Calculator")
 
    IF IsWindow(hWindow)=0
        = WinExec("calc.exe", SW_SHOWNORMAL)
        DOEVENTS
        hWindow = FindWindow(Null, "Calculator")
*        = SetParent(hWindow, _vfp.HWnd)
    ENDIF
 
    IF IsWindow(hWindow) <> 0
        = SetForegroundWindow(hWindow)  
*        = SetParent(hWindow, _vfp.HWnd)
        THIS.PasteNumber(PI())
    ENDIF
 
PROCEDURE _hide
    LOCAL hWindow
    hWindow = FindWindow(Null, "Calculator")
    IF IsWindow(hWindow) <> 0
        = PostMessage(hWindow, WM_QUIT, 0,0)
    ENDIF
 
PROCEDURE PasteNumber(cNumber)
#DEFINE WM_KEYDOWN 0x0100
#DEFINE WM_KEYUP 0x0101
#DEFINE VK_CONTROL 0x11
#DEFINE KEYEVENTF_EXTENDEDKEY 1
#DEFINE KEYEVENTF_KEYUP 2
 
    LOCAL hWindow
    hWindow = FindWindow(Null, "Calculator")
 
    IF hWindow <> 0
        * stores the number in the Clipboard
        STORE TRANSFORM(m.cNumber) TO _cliptext
 
        * makes Calculator the foreground window
        = SetForegroundWindow(hWindow)
 
        * simulates CTRL+V keystroke
        = keybd_event(VK_CONTROL, 0, 0, 0)
        = keybd_event(VkKeyScan(ASC("V")), 0, 0, 0)
        = keybd_event(VkKeyScan(ASC("V")), 0, KEYEVENTF_KEYUP, 0)
        = keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0)
    ENDIF
 
PROTECTED PROCEDURE declare
    DECLARE INTEGER SetForegroundWindow IN user32;
        INTEGER hWindow
 
    DECLARE INTEGER IsWindow IN user32 INTEGER hWindow
 
    DECLARE INTEGER FindWindow IN user32;
        STRING lpClassName, STRING lpWindowName
 
    DECLARE INTEGER WinExec IN kernel32;
        STRING lpCmdLine, INTEGER nCmdShow
 
    DECLARE INTEGER PostMessage IN user32;
        INTEGER hWindow, INTEGER Msg,;
        STRING @wParam, INTEGER lParam
 
    DECLARE keybd_event IN user32;
        SHORT bVk, SHORT bScan, INTEGER dwFlags,;
        INTEGER dwExtraInfo
 
    DECLARE SHORT VkKeyScan IN user32 INTEGER ch
 
    DECLARE INTEGER SetParent IN user32;
        INTEGER hWndChild,;
        INTEGER hWndNewParent
 
ENDDEFINE
 

User rating: 10/10 (2 votes)
Rate this code sample:
  • ~
2452 bytes  
Created: 2001-07-12 12:00:00  
Modified: 2009-12-28 21:59:15  
Visits in 7 days: 193  
Listed functions:
FindWindow
IsWindow
keybd_event
PostMessage
SetForegroundWindow
SetParent
VkKeyScan
WinExec
Printer friendly API declarations
My comment:
Btw, you can use the SetParent function to make the main VFP window (_screen.hWnd or _vfp.hWnd) the parent window for the Calculator. In that case the calculator window becomes confined in the main VFP window.
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 (50.17.109.248)
4 sec.Example: 'Creating a window using CreateWindowEx function'
7 sec.Function: 'RegSaveKey'
Function group: 'Registry'
1.75 hrs.Example: 'Accessing examples contained in this reference from a VFP application'
 Example: 'Retrieving Window Class information for the VFP window'
1.76 hrs.Function: 'CreateWaitableTimer'
3.15 hrs.Example: 'Reading parameters of streams in AVI file'
4.42 hrs.Example: 'Obtaining I/O counts for the current process'
 Example: 'Displaying the drive type value'
5.9 hrs.Example: 'Simple Window Viewer'
5.91 hrs.Function: 'GdipCreateMatrix'
Function group: 'GDI+ Matrix'
Google
Advertise here!