Extract and launch Network Directory File(s)

Be able to use a Page or Form to enable end users to automatically launch any file types from network directory.

Be able to use a Page or Form to enable end users to automatically launch any file types from network directory. Very useful when the design element does not have attachments to launch, rather looks for Network files to launch. The script will extract files to local temporary directory and launch them, thereby avoiding the netwwork files to be edited. The script will clean up all temp files on completion. I borrowed a function from...

searchDomino - Extract and start all attachments by Alexander Kogan, and tweaked slightly. (thanks and hope you don't mind).


This script essentially provides the ability to create a page with a series of hotspots pointing to files on the network. For example, I collated this process to enable persons to automatically launch Budget models in excel, policy documents in WordPro, etc. Each file location is stored in a keyword type document which is referenced by the Click routine.

Create a form, which may contain any number of hotspots designed to display files from the network. Do not want these files to be edited, rather view a copy of the document, leaving the Network directory file "as it was found".
1. Create a SaveOptions field, and set it to "0".
2. Do up your page, with tables, and Hotspots which state the files to view
3. Create a Rich Text Field called "Body"
4. Create a Computed, Multivalue value field: separated by (, ;) and display NewLine, called filePath. Value = filePath.
5. Create a Keyword Form - The form only needs FileName and FileLocation fields. - Name the Form "Document Location"
6. Create a view - File Locations - First sorted column (FileName), Second Column (FileLocation)
7. Create your Keyword documents - for FileLocation type in the full file path. Since script is being used, no need for (\) double backslashes
8. all this prevents hard coding of filepaths, etc...
9. Follow table instructions, to past Function and Declarations in the Globas of the Form
10. For each hotspot, Copy the Click command at the table. This will locate your filePath, attach the file to body field of your Form, then it will extract it to C:temp, then
the Function (kindly borrowed - slightly tweaked - from searchDomino - Extract and start all attachments by Alexander Kogan ) will launch the File.
May launch as many files as you wish. Each filePath will be appended to the filePath field.
11. The queryclose event, will trigger the Simple Agent to delete document.
12. Need to run another agent to clean up c:temp. This agent will loop through each string entry in filepath to delete all instances of the extracted files.

CODE:
1. In the Global of the form - Option = Option Public
====================================================
2. In Global of the Form - Declarations =

Declare Function SleepEx Lib "kernel32" Alias "SleepEx" (Byval dwMilliseconds 
As Long, Byval bAlertable As Long) As Long
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (Byval 
hwnd As Long, Byval lpOperation As String, _
Byval lpFile As String, Byval lpParameters As String, Byval lpDirectory As 
String, Byval nShowCmd As Long) As Long

====================================================
3. In the Options of the Form, paste this:

Function ExtractAndView(Doc As NotesDocument)
On Error Goto ErrorExtractAndStartAttchments
Dim item As notesitem
If Doc.HASEMBEDDED = True Then
Forall eItem In Doc.ITEMS
If (eItem.Type = Clng(RICHTEXT))  Then
If Not (Isempty(eItem.EMBEDDEDOBJECTS)) Then
Forall  fItem In eItem.EMBEDDEDOBJECTS
If fItem.Type = EMBED_ATTACHMENT Then
Call fItem.EXTRACTFILE( "C:Temp" & fItem.Name)
'store this value to kill the file later "Inserted to create a string array in 
'fielPath field"	
Set item = doc.GetFirstItem("filePath")
Call item.AppendToTextList(fItem.Name)
ret = ShellExecute(handle&, "open", "C:Temp" & fItem.Name, "", "", 1&)
xx = SleepEx (4000,0)
Doevents
'Exit Forall ' Only First attachment
End If
End Forall
End If
End If
End Forall
End If
ExitExtractAndStartAttchments:
Exit Function
ErrorExtractAndStartAttchments:
Msgbox ("in ExtractAndView: " + Error$(Err))
Resume ExitExtractAndStartAttchments
End Function
====================================================
In the Query Close of the Form
@Command([ToolsRunMacro];"delete uidoc");
@Command([toolsRunMacro];"kill")
====================================================
Create an agent - "delete uidoc"
Simple Action - Delete Document
Manually from the actions menu
Selected Documents
====================================================
Create another agent "kill"
Manually from the actions menu
Selected Documents
Sub Initialize
Dim session As NotesSession
Set session = New NotesSession
Dim doc As NotesDocument
Set doc = session.DocumentContext
Dim path As Variant
Dim DelFiles As Variant
delFiles = doc.GetItemValue("filePath")
Forall files In delFiles
	path = "C:Temp" & files
	Msgbox path
	Kill path
End Forall
End Sub

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

For each hotspot:

Sub Click(Source As Button)
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Set uidoc = ws.currentdocument
Dim doc As notesdocument
Set doc = uidoc.document
Dim filePath As String
Dim view As notesview
Dim lup As notesdocument
Dim s As New notessession
Dim db As notesdatabase
Set db = s.currentdatabase
Set view = db.getview("File Locations")
Set lup = view.getdocumentbykey("Corporate Financial Guidelines")
filePath = lup.FileLocationScript(0)	
Dim rtitem As Variant
Dim file As notesrichtextitem
Dim object As NotesEmbeddedObject
'insert the attachment before launching

Set file = New NotesRichTextItem( doc, "Body" )
Set object = file.EmbedObject _
( EMBED_ATTACHMENT, "", filePath)
Call doc.save (True,True)
uidoc.reload
'bring the attachment to screen

Call ExtractAndView(Doc)

Call uidoc.Save
End Sub
This was first published in November 2001

Dig deeper on Domino Resources - Part 5

0 comments

Oldest 

Forgot Password?

No problem! Submit your e-mail address below. We'll send you an email containing your password.

Your password has been sent to:

-ADS BY GOOGLE

SearchWinIT

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchEnterpriseLinux

SearchVirtualDataCentre.co.UK

Close