Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bernino1 am 08.11.06 - 09:13:47

Titel: dynamisch winzip/winrar source finden
Beitrag von: bernino1 am 08.11.06 - 09:13:47
hallo,

ich habe einen XML-Export per LS geschrieben. Alle relevanten Doks werden exportiert. Die in den Dokumenten angehängten *.jpg - Files zippe ich am Ende des Scripts und übergebe Sie per FTP.
Nun habe ich 2 Probleme:
1.
Wie schaffe ich, das LS automatisch die Source von Winrar/Winzip findet? Der Script wird jeweils Lokal an mehreren verschiedenen Arbeitsplätzen ausgeführt und ich weiß nicht 100% ob Winrar oder Winzip verwendet wird und wo dieses liegt! (Kann/Muß ich die Registry auslesen?)

2.
Bei mir Lokal habe ich die Source von WinRar fix mitgegeben. Ich sende nun also einen Shell-Befehl und Zippe einen ganzen Ordner. Der Befehl sieht folgerndermaßen aus:

rc = Shell (winrar & " a -afzip -r C:\Temp\Export\bilder.zip " & pfad & "*.jpg")
Sleep 60

Funzt einwandfrei - nur - im Zip-File ist die gesamte Ordnerstruktur enthalten ???
In den Commands bei Winrar konnte ich nicht finden wie ich die Ordnerstruktur verberge.

Habt Ihr da eine Idee?

Ist nicht unbedingt LS - ich weiß - aber immerhin wirds aus einem Lotus-Script gestartet  ;D
Vielleicht hat das ja schonmal einer von Euch realisieren müssen!

Danke auf jeden Fall und schöne Grüße vom Bodensee
Titel: Re: dynamisch winzip/winrar source finden
Beitrag von: eknori am 08.11.06 - 09:18:23
zu1:

Code
Declare Function RegOpenKeyExA Lib "advapi32" Alias "RegOpenKeyExA" (Byval HKEY As Long,Byval lpszSubKey As String,Byval dwreserved As Integer,Byval samDesired As Long, keyresult As Long) As Long
Declare Function RegQueryValueExA Lib "advapi32" Alias "RegQueryValueExA" (Byval HKEY As Long,Byval lpszValueName As String,Byval dwreserved As Integer, lpdwtype As Long, Byval lpData As String, readbytes As Long) As Long
Declare Function RegCloseKey Lib "advapi32" Alias "RegCloseKey" (Byval HKEY As Long) As Long

Dim Test As String

Sub Click(Source As Button)
	app$ = Inputbox("Enter the name of an .EXE file you want to locate.", "Name of App", "NOTES.EXE")
	AppPath$ = LocatePath(app$)
	
'----display the results
	If AppPath$ = Test Then
		Msgbox ApplicationName & " not found."
	Else
		Msgbox AppPath$
	End If
	
End Sub

Function LocatePath(ApplicationName As String)
	Dim happkey As Long
	Dim HKEY_LOCAL_MACHINE As Long
	Dim KEY_READ As Long
	Dim HKEY_CURRENT_USER As Long
	Dim ValueType As Long
	Dim ReturnedKeyContents As String * 255
	Dim readbytes As Long
	
	ReturnedKeycontents$=String$(255,Chr$(32))    ' sets up the returned key variable, C likes to know how long it's strings might be
	
	Test = ReturnedKeycontents$                 ' string used to test results of lookup; represents a blank return
	
'----the base keys of the registry.  we will be drilling into HKEY_LOCAL_MACHINE in this instance
	HKEY_LOCAL_MACHINE= &H80000002
	HKEY_CURRENT_USER= &H80000001
	
'----keys used by C function calls, used to navigate registry
	KEY_QUERY_VALUE=1
	KEY_ENUMERATE_SUBKEYS=8
	KEY_NOTIFY=16
	KEY_READ=KEY_QUERY_VALUE Or KEY_ENUMERATE_SUBKEYS Or KEY_NOTIFY
	
	BaseName$ = "Software\Microsoft\Windows\CurrentVersion\App Paths\"     ' this is the default part of the key
	KeyName$= BaseName$ + ApplicationName                  ' this adds the user-entered exe to the basename, creating the key
	ValueName$ = ""             ' a null or empty string represents the default value
	
	lstat=RegOpenKeyExA(HKEY_LOCAL_MACHINE,KeyName$,0,KEY_READ,happkey)      ' get a handle on the key, values are passed by refrence
	ReadBytes=255
	lstat=RegQueryValueExA(happkey,ValueName$,0,valueType, ReturnedKeyContents$,ReadBytes)       ' get the value of the desired value
	regclosekey(happkey)     ' release the handle of the key
	
	Test = Left$(Test, ReadBytes-1)
	LocatePath = Left$(ReturnedKeyContents$,ReadBytes-1)   ' format and return the results
	
End Function
Titel: Re: dynamisch winzip/winrar source finden
Beitrag von: bernino1 am 08.11.06 - 09:33:12
wow - das ging aber schnell!!


vielen dank @eknori!

geiles script ;-)


berndt
Titel: Re: dynamisch winzip/winrar source finden
Beitrag von: umi am 08.11.06 - 12:32:45
als Formel: @regQueryKey()
Zum Thema zip findest Du folgendes:http://atnotes.de/index.php?topic=28215.0