# PxPlus COM Support

Using PxPlus COM Interface - Examples |

The code samples below show how to perform a number of actions using the PxPlus COM Interface. These are not complete programs and are intended only to demonstrate some practical non-event COM usage in PxPlus applications. For event-driven program examples of COM, see Event-Driven COM.

## Example 1

This example demonstrates how to embed a shell browser window within PxPlus and to display either a web page or a folder view as the contents.

> 0010 DEF OBJECT IE, @(2, 2, 70, 16) = "Shell.Explorer"
> 0020 IE'Navigate2("http://www.pvxplus.com")
> 0030 ESCAPE
> 0040 IE'Navigate2("file://c:\")
> 0050 ESCAPE
> 0060 DELETE OBJECT IE

## Example 2

The following invokes Adobe PDF printing hidden from the user.

> 0010 DEF OBJECT PDF,"PDF.PdfCtrl.6"
> 0020 PDF'LoadFile("C:\tmp\test.pdf")
> 0030 PDF'Print()
> 0040 DROP OBJECT PDF

## Example 3

This example demonstrates how to use the tool window dialogue to select a control.

> 0010 PRINT 'CS'
> 0020 DEF OBJECT AXCTL, @(40,1,30,10)="*", ERR=0100
> 0030 PROG$ = AXCTL'PVXNAME$
> 0040 ESCAPE
> 0050 END
> 0100 PRINT MSG(-1)

## Example 4

This example demonstrates how to embed a Word document from a file reference. Requires Microsoft Word to be installed.

> 0010 GET_FILE_BOX READ WORDDOC$, LWD, "Word Document", "Word Document|*.doc,"
> 0020 IF WORDDOC$="" THEN END
> 0030 DEF OBJECT WD, @(0,0,80,20)="[File]"+WORDDOC$
> 0040 INPUT *
> 0050 DELETE OBJECT WD
> 0060 END

## Example 5

This example demonstrates how to open an Access database and to read the table schema. Requires Microsoft Access to be installed.

> 0010 GET_FILE_BOX READ MDB$, LWD, "Access Database"," Access Database |*.mdb,"
> 0020 IF MDB$="" THEN END
> 0030 DEF OBJECT CONN, "ADODB.Connection"
> 0040 LET CONNSTR$ = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+MDB$
> 0050 CONN'OPEN(CONNSTR$)
> 0060 DEF OBJECT VARDATA,"*VARARRAY"
> 0070 VARDATA'CREATE(4)
> 0080 VARDATA'SETDATA(3,"Table")
> 0090 LET R = CONN'OPENSCHEMA(20,*VARDATA)
> 0100 LET N$ = ""; FOR I=0 TO R'FIELDS'COUNT-1; LET N$=N$+R'FIELDS(I)'NAME$+" | "; NEXT I; PRINT N$
> 0110 LET RA = R'GETROWS(20)
> 0120 FOR I=0 TO RA'UBOUND(2)
> 0130 LET TXT$ = ""
> 0140 FOR II=0 TO RA'UBOUND(1)
> 0150 LET TXT$ = TXT$+RA'GETDATA$(II,I)+" | "
> 0160 NEXT II
> 0170 PRINT TXT$
> 0180 NEXT I

## Example 6

This example demonstrates how to use WMI to display the MAC and IP address for the local computer. It also demonstrates the "for each" enumerator usage using a collection and an array.

> 0010 DEF OBJECT WMI,"[GetObject]winmgmts:\\.\root\cimv2"
> 0020 LET COLITEMS = WMI'EXECQUERY("Select * from
> WIN32_NetworkAdapterConfiguration where IPEnabled = True")
> 0030 LET ITEMSFOREACH=COLITEMS'PVXFOREACH
> 0040 WHILE ITEMSFOREACH'NEXT()
> 0050 PRINT ITEMSFOREACH'DATA'PROPERTIES_("MACAddress")'VALUE$
> 0060 LET IPARRAY=ITEMSFOREACH'DATA'PROPERTIES_("IPAddress")'VALUE
> 0100 LET IPFOREACH=IPARRAY'PVXFOREACH
> 0110 WHILE IPFOREACH'NEXT()
> 0120 PRINT IPFOREACH'DATA$
> 0130 WEND
> 0140 IPARRAY'PVXFREE()
> 0150 WEND
> 0160 ITEMSFOREACH'PVXFREE()
> 0170 ESCAPE
> 0180 DELETE OBJECT WMI

## Example 7

This example demonstrates how to use the Scripting File System object to list the available drive letters on the local computer.

> 0010 DEF OBJECT FSO, "Scripting.FileSystemObject"
> 0020 LET DRIVE_ITER = FSO'DRIVES'PVXFOREACH
> 0030 WHILE DRIVE_ITER'NEXT()
> 0040 LET DRIVE = DRIVE_ITER'DATA
> 0050 PRINT DRIVE'DRIVELETTER$
> 0060 WEND
> 0070 ESCAPE
> 0080 DELETE OBJECT FSO

## Example 8

This example demonstrates how to create a picture interface and then load the picture into a control that displays picture data.

> 0020 INPUT "Enter Picture Value:",PIC$
> 0025 IF LEN(PIC$)=0 THEN GOTO 0100
> 0026 IF (X>0) THEN X'PVXFREE()
> 0028 DEF OBJECT X,@(50,1,30,15)="Forms.Image.1"
> 0030 DEF OBJECT Y,"[picture]"+PIC$
> 0040 X'PICTURE.PUT(*Y)
> 0050 GOTO 0020

## Example 9

The following code sample is used for controlling a Shockwave Flash animation.

> 0010 print 'dialogue'(0,0,60,20,"Flash",'CS')
> 0020 Places=10
> 0030 !
> 0040 def object Flash,@(0,0,45,15.5)="Shockwaveflash.shockwaveflash.1"
> 0050 R$=lwd+dlm+"earth.swf"
> 0060 Flash'LOADMOVIE(0,R$)
> 0070 Flash'SETVARIABLE("n","Earth")
> 0080 !
> 0090 drop_box Places,@(47,5,10,10)
> 0100 print 'text'(@x(47),@y(4.25),"Visit:"),
> 0110 drop_box load Places,"<Just Spin>,North and South America,Africa, Hawaii,Asia,Australia,Russia,Europe,"
> 0120 drop_box write Places,"<Just Spin>"
> 0130 !
> 0140 obtain X
> 0150 if ctl=4 then print 'pop'; end
> 0160 if ctl=Places then gosub MOVE
> 0170 goto 0140
> 0180 !
> 0190 MOVE:
> 0200 if Places'CURRENTITEM=1 then Flash'PLAY(); Flash'SETVARIABLE("n","Earth"); goto 0140
> 0210 if Places'CURRENTITEM=2 then EARTHP=39; goto SETP
> 0220 if Places'CURRENTITEM=3 then EARTHP=62; goto SETP
> 0230 if Places'CURRENTITEM=4 then EARTHP=44; goto SETP
> 0240 if Places'CURRENTITEM=5 then EARTHP=52; goto SETP
> 0250 if Places'CURRENTITEM=6 then EARTHP=58; goto SETP
> 0260 if Places'CURRENTITEM=7 then EARTHP=61; goto SETP
> 0270 !
> 0280 SETP:
> 0290 Flash'STOP()
> 0300 C=Flash'CURRENTFRAME()
> 0310 if C=EARTHP then goto 0140
> 0320 if C>EARTHP then INC=-1 else INC=1
> 0330 R$=Places'VALUE$
> 0340 Flash'SETVARIABLE("n","Moving To "+R$)
> 0350 !
> 0360 for I=C to EARTHP step INC
> 0370 Flash'GOTOFRAME(I)
> 0380 wait .05
> 0390 next I
> 0400 Flash'SETVARIABLE("n",R$)
> 0410 goto 0140