40:
We're looking for a control to show files, just like the eXShellView, but than we would like to specify the files themselves. Is that possible using your control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 1/*LargeIcons*/
		oExShellView:HeaderVisible := .F.
		oExShellView:BrowseFiles := "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe|C:\Program Files\Microsoft Visual FoxPro 9\vfp9.exe"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
39:
How do I prevent pressing the Backspace, or go up to the parent

PROCEDURE OnKeyDown(oExShellView,KeyCode,Shift)
	DevOut( "Set the KeyCode = 0, if the KeyCode is 8 " )
	KeyCode := 0
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:KeyDown := {|KeyCode,Shift| OnKeyDown(oExShellView,KeyCode,Shift)} /*Occurs when the user presses a key while an object has the focus.*/

		oExShellView:ViewMode := 4/*Details*/
		oExShellView:BrowseFolder := "c:\Temp"
		oExShellView:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
38:
How can I show grid lines around items

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 4/*Details*/
		oExShellView:DrawGridLines := .T.
		oExShellView:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
37:
How can I prevent shwoing the overlay icons (shortcut icons have a small arrow in lower-left corner, shared folders have a hand that shows that folder is shared, etc. )

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 1/*LargeIcons*/
		oExShellView:OverlayIcons := .F.
		oExShellView:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
36:
I need to provide my own context menu but I am not able to find RClick event. What can be done

PROCEDURE OnQueryContextMenu(oExShellView,Items,Separator)
	DevOut( "Show here your popup/context menu" )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:QueryContextMenu := {|Items,Separator| OnQueryContextMenu(oExShellView,Items,Separator)} /*Fired when the context menu is about to be active. You can supply new items to the context menu.*/

		oExShellView:DefaultMenuItems := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
35:
How can I provide my own context menu (RClick event is missing)

PROCEDURE OnInvokeMenuCommand(oExShellView,Command)
	DevOut( Transform(Command,"") )
RETURN

PROCEDURE OnQueryContextMenu(oExShellView,Items,Separator)
	Separator := ","
	Items := "First,Second,Third"
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:InvokeMenuCommand := {|Command| OnInvokeMenuCommand(oExShellView,Command)} /*Fired when the user selects an item context menu that has been added during QueryContextMenu event.*/
		oExShellView:QueryContextMenu := {|Items,Separator| OnQueryContextMenu(oExShellView,Items,Separator)} /*Fired when the context menu is about to be active. You can supply new items to the context menu.*/

		oExShellView:DefaultMenuItems := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
34:
Is it possible to specify the "Extra Large Icons" view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 13/*Extra_Large_Icons*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
33:
Is it possible to specify the "Large Icons" view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 14/*Large_Icons*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
32:
Is it possible to specify the "Medium Icons" view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 15/*Medium_Icons*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
31:
How can I hide the file names

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:HideFileNames := .T.
		oExShellView:ViewMode := 5/*Thumbnail*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
30:
Is it possible to set the Auto Arrange and Align To Grid flags by code

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:AutoArrange := .T.
		oExShellView:AlignToGrid := .T.
		oExShellView:ViewMode := 5/*Thumbnail*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
29:
Is it possible to set the Auto Arrange flag by code

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:AutoArrange := .T.
		oExShellView:ViewMode := 5/*Thumbnail*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
28:
How do I specify the current folder

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:CurrentFolder := "c:\windows"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
27:
Is it possible to disable showing tooltips for files and folders

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:HideToolTips := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
26:
Is it possible to hide the control's header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:HeaderVisible := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
25:
How can I get the name of file being double clicked

PROCEDURE OnObjectSelect(oExShellView,Object)
	oExShellView:CancelObjectSelect()
	DevOut( Transform(Object,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ObjectSelect := {|Object| OnObjectSelect(oExShellView,Object)} /*Fired when the user selects a new object for browsing.*/


	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
24:
How can I prevent opening or selecting a folder or zip files when user double click it
PROCEDURE OnObjectSelect(oExShellView,Object)
	oExShellView:CancelObjectSelect()
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ObjectSelect := {|Object| OnObjectSelect(oExShellView,Object)} /*Fired when the user selects a new object for browsing.*/


	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
23:
Is it possible to list only files, no folders

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ModifyFolderFlags(128/*NoSubFolders*/,0/*NoFlag*/)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
22:
How can I enable multiple selection

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ModifyFolderFlags(0/*NoFlag*/,64/*SingleSel*/)
		oExShellView:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
21:
How can I select a file or a folder

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Objects():Get(2/*AllItems*/)
		oExShellView:Objects():Item(0):SelectItem(1/*Select*/)

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
20:
How can I get all files and folders as they are listed
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Objects():Get(18/*AsDisplayed+AllItems*/)
		DevOut( Transform(oExShellView:Objects:Count(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
19:
How can I get all files and folders being displayed
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Objects():Get(2/*AllItems*/)
		DevOut( Transform(oExShellView:Objects:Count(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
18:
How do I get the selected files or folders as they are displayed
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Objects():Get(17/*AsDisplayed+SelectedItems*/)
		DevOut( Transform(oExShellView:Objects:Count(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
17:
How do I get the selected files or folders
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Objects():Get(1/*SelectedItems*/)
		DevOut( Transform(oExShellView:Objects:Count(),"") )

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
16:
How can I disable or enable the control's context menu

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:DefaultMenuItems := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
15:
How can I include only files that match a pattern

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:IncludeObjectType := 3/*PatternObjects*/
		oExShellView:FilePattern := "*.exe *.lnk"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
14:
How can I include only files that match a pattern

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:IncludeObjectType := 3/*PatternObjects*/
		oExShellView:FilePattern := "*.bmp"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
13:
How can I list only folders in the view

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:IncludeObjectType := 2/*FoldersOnly*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
12:
How do I specify what objects files or folders should be included in the list

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:IncludeObjectType := 2/*FoldersOnly*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
11:
How do I browse a special folder

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:BrowseFolder := oExShellView:ShellFolder(oExShellView:SpecialFolder(2/*Programs*/))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
10:
How can I go up to one level, so I can browse the parent folder

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:BrowseFolder := oExShellView:ShellFolder("C:\")
		oExShellView:UpOneLevel()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
9:
How do I browse a specified folder

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:BrowseFolder := oExShellView:ShellFolder("C:\")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
8:
How can I disable or enable the entire control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Enabled := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
7:
How do I refresh the control
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
6:
How can I change the control's font

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView
	LOCAL f

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		f := CreateObject("StdFont")
			f:Name := "Verdana"
			f:Size := 12
		oExShellView:Font := f

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
5:
How can I change the view, so it displays as THUMBNAIL

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 5/*Thumbnail*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
4:
How can I change the view, so it displays as a a grid with details

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 4/*Details*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3:
How can I change the view, so it displays as a list

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 3/*List*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2:
How can I change the view, so it displays small icons

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 2/*SmallIcon*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1:
How can I change the view, so it displays large icons

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oExShellView

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oExShellView := XbpActiveXControl():new( oForm:drawingArea )
	oExShellView:CLSID  := "Exontrol.ShellView.1" /*{B4E1F234-AF0D-4EAD-8113-A563B40E71CA}*/
	oExShellView:create(,, {10,60},{610,370} )

		oExShellView:ViewMode := 1/*LargeIcons*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN