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-ки...
Ты, кстати, так и не назвал пока ни одного преимущества
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 1