







PLA писал(а):Задача чтобы с проги на любом компьютере сети можно было записать файл на сервер. А вот обратно его получить могли лишь определенные пользователи. Нужны варианты - например, можно ли организовать посредством VB кодирование файлов?, копирование файлов запароленую область ?, чтение из явно не видимой области?

PLA писал(а):Задача чтобы с проги на любом компьютере сети можно было записать файл на сервер. А вот обратно его получить могли лишь определенные пользователи. Нужны варианты - например, можно ли организовать посредством VB кодирование файлов?, копирование файлов запароленую область ?, чтение из явно не видимой области?


PLA писал(а):Отлично! Идея с архивированием очень подходит. При этом, насколько я понимаю, можно архивировать с паролем и соответственно защита информации обеспечена. Одна проблема я не разу не сталкивался, как можно архивировать в VB. Может, есть пример или ссылка на пример с архивированием.
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
        (ByVal hProcess As Long, lpExitCode As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" _
        (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Public Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" _
        (ByVal lpApplicationName As Long, _
        ByVal lpCommandLine As String, _
        ByVal lpProcessAttributes As Long, _
        ByVal lpThreadAttributes As Long, _
        ByVal bInheritHandles As Long, _
        ByVal dwCreationFlags As Long, _
        ByVal lpEnvironment As Long, _
        ByVal lpCurrentDirectory As String, _
        lpStartupInfo As STARTUPINFO, _
        lpProcessInformation As PROCESS_INFORMATION) As Long
' Запускает файл, возвращает True, если процесс создан успешено
' Параметры:    strCommandLine - командная строка
'               lngError       - номер ошибки
'               [varDebug]     - Если True, то создавать окно консоли
' Неконсольные программы запускаются только с varDebug = True  
Public Function StartFile(ByRef strCommandLine As String, _
        Optional ByRef bDebug As Boolean = False, _
        Optional ByRef strCurrentDirectory As Variant, _
        Optional ByRef hStdInput As Variant, _
        Optional ByRef hStdOutput As Variant, _
        Optional ByRef hStdError As Variant) As Long
    Const WAIT_FAILED = -1, INFINITE = -1, WAIT_TIMEOUT& = &H102&
    Const CREATE_NEW_CONSOLE = &H10, DETACHED_PROCESS = &H8
    
    Dim s As String, lngDebug As Long, lngError As Long, iWait As Long
    Dim lngStdInput As Long, lngStdOutput As Long, lngStdError As Long
    Dim usrPI As PROCESS_INFORMATION, usrSI As STARTUPINFO
    
    lngDebug = IIf(bDebug, CREATE_NEW_CONSOLE, DETACHED_PROCESS)
    usrSI.cb = Len(usrSI)
    If Not IsMissing(hStdInput) Then If hStdInput > 0 Then usrSI.hStdInput = hStdInput: usrSI.dwFlags = &H100
    If Not IsMissing(hStdOutput) Then If hStdOutput > 0 Then usrSI.hStdOutput = hStdOutput: usrSI.dwFlags = &H100
    If Not IsMissing(hStdError) Then If hStdError > 0 Then usrSI.hStdError = hStdError: usrSI.dwFlags = &H100
    
    If IsMissing(strCurrentDirectory) Then
        s = GetTempPath
    Else
        If Len(strCurrentDirectory) = 0 Then
            s = GetTempPath
        Else
            s = strCurrentDirectory
        End If
    End If
    If 1 = CreateProcess(0, strCommandLine, 0, 0, 1, _
            lngDebug, 0, s, usrSI, usrPI) Then
        
        iWait = WAIT_TIMEOUT
        Do
            iWait = WaitForSingleObject(usrPI.hProcess, 20)
            DoEvents
        Loop Until iWait <> WAIT_TIMEOUT
        If iWait = WAIT_FAILED Then
            CloseHandle usrPI.hProcess
            StartFile = -1
        Else
            GetExitCodeProcess usrPI.hProcess, lngError
            CloseHandle usrPI.hProcess
            If lngError <> 0 Then StartFile = lngError
        End If
    Else
        StartFile = -1
    End If
End Function
    s = "unzip.exe """ & sZipFile & """"
    If StartFile(s, , sTmpFolder) Then MsgBox "Ошибка распаковки: " & s


Andrey Fedorov писал(а):Я использую обычный консольный архиватор и API-шную CreateProcess (Лично мне это больше нравится чем различные ActiveX и Dll для этой-же цели). Архиватор запускается невидимым (окно при этом не создается). По завершении работы имеем его ErrorLevel.

VVitafresh писал(а):А какие преимущества использования внешних архиваторов по сравнению с соответстующими DLL?

Andrey Fedorov писал(а):Самое крупное преимущество - гарантированная совместимость созданного архива ибо он создается оригинальным архиватором, с которым я и так работаю. Всяческие OCX и DLL зачастую создаются третими лицами и какого либо преимущества вообще не дают...

alibek писал(а):unrar.ocx выпускается тем же разработчиком, который занимается WinRARом.
alibek писал(а): Различные библиотеки для ZIP также выпускаются не самопальщиками. О всяческих портах с Linux на Windows (gzip, tgz) я и не говорю.


alibek писал(а):Для 7zip есть библиотеки, тут. Кроме того, есть куча библиотек, полностью совместимых с форматом ZIP, я в свое время пользовался парочкой библиотек, которые давали мне весь функционал и ни разу не сбойнули.

alibek писал(а):Для RAR я уже называл, там есть и библиотека, и OCX. И даже комплект для девелопера можно купить, если денег не жалко.

Andrey Fedorov писал(а):Насколько я понимаю для 7z есть только обычные dll-ки...
Ты, кстати, так и не назвал пока ни одного преимущества
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5