Guten Morgen allerseits!
Ich habe folgendes Problem:
Ich sollte eine Mail erstellen, in welcher der User eine Website durch Klick auf einen Textlink oder Button aufrufen kann. Diese Seite muss zwingend in einem externen Internet Explorer-Fenster geöffnet werden. Unsere Mitarbeiter können aber ihren Webretriever unter den Location Settings selber einstellen. Diese Einstellungen sollten nicht verändert werden, bzw nach der URL-Öffnung erhalten bleiben.
Als Notes-Neuling habe ich einen Button in der Mail folgendermassen verunstaltet:
Sub Click(Source As Button)
'------------------------
Dim str_URL As String
str_URL = "www.google.ch"
'------------------------
Dim session As NotesSession
Dim strLocation As String 'used to get Location from Notes.INI
Dim intComma As Integer 'position of first comma
Dim dbNAB As NotesDatabase 'personal Name & Address Book
Dim viewLocations As NotesView
Dim docLocation As NotesDocument
Dim item As NotesItem
Dim int_oldbrowser
Set session = New NotesSession
strLocation = session.GetEnvironmentString("Location",True)
intComma = Instr(strLocation, ",")
strLocation = Left$(strLocation, intComma-1)
Set dbNAB = session.GetDatabase("", "names.nsf")
Set viewLocations = dbNAB.GetView("Locations")
Set docLocation = viewLocations.GetDocumentByKey(strLocation)
int_oldbrowser = docLocation.GetItemValue( "WebRetriever" )
If (docLocation.WebRetriever(0) <> "2") Then
Set item = docLocation.ReplaceItemValue("WebRetriever", "2")
Call docLocation.Save(True, False)
End If
Set notesUIWorkspace = New NotesUIWorkspace
Call notesUIWorkspace.URLOpen(str_URL)
Set item = docLocation.ReplaceItemValue("WebRetriever", int_oldbrowser)
Call docLocation.Save(True, False)
End Sub
Meine Überlegung kurz erläutert:
- Zuerst sollte die alte Einstellung in der Variable "int_oldbrowser" gespeichert werden.
- Dann mit "Set item = docLocation.ReplaceItemValue("WebRetriever", "2")" auf den externen IE einstellen.
- Dann mit "Call notesUIWorkspace.URLOpen(str_URL)" die Website öffnen.
- Alte Einstellung wieder einstellen: "Set item = docLocation.ReplaceItemValue("WebRetriever", int_oldbrowser)"
Leider klappt das ganze nicht so, wie ich will. Die Einstellungen werden zwar übernommen, jedoch anscheinend zu spät. Der Link öffnet weiterhin innerhalb von Notes.
Was mache ich falsch?
mfg
Michael
keine Antwort auf deine Frage, aber ein anderer Lösungsvorschlag.
Du könntest mit dem shell Befehl den IExplorer starten und ihm sagen, welche Seite er öffnen soll.
Der Befehl zum Starten des IE lautet
iexplore http://www.atnotes.de
also insgesamt könnte das so aussehen:
Call Shell("iexplore http://www.atnotes.de")
Sehr interessanter Vorschlag, der mir auch viel logischer vorkommt :)
Nur meine Umsetzung misslang:
Sub Click(Source As Button)
Call Shell("iexplore http://www.atnotes.de")
End Sub
Das ergibt den Fehler:
"Data not saved due to script error(s)" (kann das Script gar nicht speichern.
In der Notes Hilfe finde ich folgendes Beispiel:
' Start the Windows Calculator as a normal (not minimized)
' window with focus.
Dim taskId As Integer
taskId% = Shell("CALC.EXE", 1)
Und angepasst:
Sub Click(Source As Button)
Dim taskId As Integer
taskId% = Shell("iexplore http://www.atnotes.de", 1)
End Sub
Dann bekomme ich:
"File not found"
In der Hilfe steht noch folgendes, womit ich nicht klar komme:
Usage
Shell must be called from within an expression or an assignment statement, so that its return value is used.
der Shell-Befehl kennt also den Ort, an dem die iexplore.exe liegt, nicht.
Dann musst du ihn wohl aus der Registry ermitteln.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App
Paths\IEXPLORE.EXE
Gleich mal getestet:
Sub Click(Source As Button)
Set wsh = createobject("Wscript.Shell")
x = wsh.RegRead(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\IEXPLORE.EXE)
Dim taskId As Integer
taskId% = Shell(x & " www.google.ch", 1)
End Sub
Wobei die Zeile
"x = wsh.RegRead(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\IEXPLORE.EXE)"
den Fehler "Division by zero" auslöst...
Der Windows Scripting Host ist installiert.
Ich suche grade ne neue Variante zum Auslesen.