Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: klez am 22.08.05 - 10:10:14

Titel: URL über anderen Webretriever öffnen
Beitrag von: klez am 22.08.05 - 10:10:14
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:
Code
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



Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: animate am 22.08.05 - 10:58:56
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")
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: klez am 22.08.05 - 12:24:43
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:

Code
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:
Code
' Start the Windows Calculator as a normal (not minimized)
' window with focus.
Dim taskId As Integer
taskId% = Shell("CALC.EXE", 1)
Und angepasst:
Code
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:
Zitat
Usage
Shell must be called from within an expression or an assignment statement, so that its return value is used.
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: animate am 22.08.05 - 13:05:06
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
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: flaite am 22.08.05 - 13:17:25
Ist es dann nicht wesentlich einfacher die Politik den Webretriever zu benutzen zu ändern?
Dh. im Location Dokument IE einzustellen?
Weiss eigentlich jemand, ob am Web Retriever von Seiten von Lotus überhaupt weiterentwickelt wird?
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: klez am 22.08.05 - 13:30:43
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:

Code
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.
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: Glombi am 22.08.05 - 13:35:18
Sieh mal hier nach
http://www.atnotes.de/index.php?topic=12683.msg72594#msg72594

Andreas
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: animate am 22.08.05 - 13:42:20
oder hier: http://www.abc.se/~m9071/lss/Registry.lss.html

Das ist eine Klasse, die den Zugriff auf die registry kapselt.

Meine Codebeipiele können leider Fehler enthalten, weil ich kein Notes habe, um sie auszuprobieren
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: Glombi am 22.08.05 - 13:45:45
Es geht auch so:

ret = Shell("rundll32.exe url.dll,FileProtocolHandler http://www.atnotes.de")

siehe
http://www.winfaq.de/faq_html/tip0564.htm

Andreas
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: animate am 22.08.05 - 13:48:28
Das ist einfacher :)

Achtung:
Öffnet nicht zwingend den IExplorer, sondern immer den Standardbrowser.
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: klez am 22.08.05 - 13:54:37
Es geht auch so:

ret = Shell("rundll32.exe url.dll,FileProtocolHandler http://www.atnotes.de")

siehe
http://www.winfaq.de/faq_html/tip0564.htm

Andreas

(http://atog.ch/stuff/anbet.gif)

Das suchte ich, tausend Dank!
Titel: Re: URL über anderen Webretriever öffnen
Beitrag von: klez am 22.08.05 - 13:55:34
Das ist einfacher :)

Achtung:
Öffnet nicht zwingend den IExplorer, sondern immer den Standardbrowser.

Sollte kein Problem sein. Die User können keine Programme installieren und somit nichts an der Einstellung fummeln.