Разархивировать и сохранить вложение

  • Автор темы Guest
  • Дата начала
G

Guest

Нужно для входящей почты написать агента, который бы сохранял где-нить на диске вложение и разархивировал его.

Впринципе с первой частью справляется такой код:

Код:
Sub Initialize
Dim s As NotesSession
Dim db As NotesDataBAse
Dim coll As NotesDocumentCollection
Dim doc As NOtesDocument
Dim rtitem As Variant
Dim result As Integer

Set s=New NotesSession
If Not s Is Nothing Then
 Set db=s.CurrentDataBAse
 If Not db Is Nothing Then
 	Set coll=db.UnprocessedDocuments
 	If Not coll Is Nothing Then
   For i=1 To coll.Count 
   	Set doc=coll.GetNthDocument(i)
   	Set rtitem = doc.GetFirstItem( "Body" )
   	If ( rtitem.Type = 1 ) Then
     If doc.HasEmbedded Then
     	Forall o In rtitem.EmbeddedObjects
       If (o.Type = EMBED_ATTACHMENT) Then 
       	Call o.ExtractFile( "c:\111\" & o.Source )
       End If
     	End Forall
     End If
   	End If    	
   	Call s.UpdateProcessedDoc(doc)
   Next
 	End If
 End If
End If
End Sub

Теперь осталось разорхивировать. :(
Пыталась сделать что-то типа такого:
Код:
Declare Function ExtractArchive Lib "unrar" Alias "ExtractArchive" (sArchive As String, Byval sDestPath As String, Byval sPassword As String) As Boolean

....
Call ExtractArchive("image.rar", "c:\\111\\", "")

или вот так:
Код:
        	stringShell$ = "rar.exe e " & "c:\\111\\" & o.Source
       	Msgbox stringShell$ 
       	result = Shell(stringShell$, 1)

но что-то не идет... явно где-то глюк. 8(
я еще с dll в Лотусе не работала. Может че не так пишу...
и с командной строкой явно какой-то глюк в конструкции

Лотус 6.0.3.
 
D

Domino6

Shel работает от текущей(current) директории укажи напрямую размещение rar.exe
Код:
stringShell$ = "c:\tmp\rar.exe e " & "c:\tmp\" & o.Source

и посмотри переменную stringShell$ после склейки
по моему "c:\\111\\" много слешей попробуй "c:\111\"

а это Call ExtractArchive("image.rar", "c:\\111\\", "")
попробуй вызвать так
Код:
rez= ExtractArchive("image.rar", "c:\\111\\", "")
 
G

Guest

Да, спасибо! Второе помогло, а на первое оно пишет, что не находит такой функции в длл-ке.
"External function not found"
Все может быть, конечно... фиг знает как ее проверить есть она там или нет. А может вообще длл-ку не находит? :D
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!