powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распаковка архива из кода
12 сообщений из 12, страница 1 из 1
Распаковка архива из кода
    #32371576
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает, как можно из кода добраться до архивного файла в каком-нить директории и распаковать его куда-нить ?

Спасибо.
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371585
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно использовать ф-ю Shell с консольной версией архиватора (скажем winrar -а).
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371632
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот гадство !!!!

Хелпа на Shell йок, тьфу !!!!
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371641
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускает исполняемую программу и при успешном запуске программы возвращает значение типа Variant (Double), представляющее идентификатор программы; в противном возвращается нуль.

Синтаксис

Shell(pathname[,windowstyle])

Синтаксис функции Shell содержит следующие именованные аргументы:

Элемент Описание
pathname Обязательный. Значение типа Variant (String). Имя выполняемой программы и любые требуемые аргументы или ключи командной строки; допускает включение каталога или папки и диска.
windowstyle Необязательный. Значение типа Variant (Integer), соответствующее типу окна, в котором выполняется программа. Если аргумент windowstyle опущен, программа запускается в свернутом окне и получает фокус.
Именованный аргумент windowstyle имеет следующие значения:

Константа Значение Описание
vbHide 0 Окно скрыто, и фокус передается скрытому окну.
vbNormalFocus 1 Окно имеет фокус и восстанавливает свои стандартные размер и положение.
vbMinimizedFocus 2 Окно отображается в виде значка с фокусом.
vbMaximizedFocus 3 Окно развертывается на полный экран с фокусом.
vbNormalNoFocus 4 Восстанавливаются предыдущие размер и положение окна. Активным остается текущее окно.
vbMinimizedNoFocus 6 Окно отображается в виде значка. Активным остается текущее окно.
Дополнительные сведения

При успешном запуске функцией Shell указанного файла она возвращает идентификатор (ID) запущенной программы. Идентификатор задачи ID является уникальным номером, указывающим на выполняемую программу. Если функция Shell не может запустить указанную программу, возникает ошибка. При использовании функции MacID с функцией Shell в Microsoft Windows возникает ошибка.

Примечание. Функция Shell запускает другие программы в асинхронном режиме. Это означает, что для продолжения выполнения инструкций, следующих за Shell, не требуется завершения программы, запущенной с помощью функции Shell.
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371660
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во вещь !!!!


Спасибо Funddd
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371668
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используя Shell, нет возможности узнать - закончена ли работа запущенной программы (закончена ли распаковка файла и можно ли уже брать данные из распакованного файла).
Есть "стандартная" функция RunAndWait, которая ожидает завершения запущенной программы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Public Function RunAndWait(ComLine As String) As Boolean
' запустить приложение и дождаться окончания его работы
', ShowFlag As VbAppWinStyle
'--------------------------------------------------------------------------------
'
'Использование:
'
'If RunAndWait("rar.exe a regbackup system.dat user.dat", "c:\windows", vbNormalFocus) Then
'    MsgBox  "Registry backuped!" 
'End If
    Dim si As STARTUPINFO
    Dim pi As PROCESS_INFORMATION
    si.wShowWindow = vbNormalFocus
    si.dwFlags = STARTF_USESHOWWINDOW
    If CreateProcess(vbNullString, ComLine, ByVal  0 &, ByVal  0 &, False,  0 , _
                            ByVal  0 &,  "c:\" , si, pi) Then
        WaitForSingleObject pi.hProcess, INFINITE
        CloseHandle pi.hProcess
        RunAndWait = True
        Exit Function
    End If
    RunAndWait = False
End Function

Public Type PROCESS_INFORMATION
        hProcess As Long
        hThread As Long
        dwProcessId As Long
        dwThreadId As Long
End Type

Public Type STARTUPINFO
        cb As Long
        lpReserved As String
        lpDesktop As String
        lpTitle As String
        dwX As Long
        dwY As Long
        dwXSize As Long
        dwYSize As Long
        dwXCountChars As Long
        dwYCountChars As Long
        dwFillAttribute As Long
        dwFlags As Long
        wShowWindow As Integer
        cbReserved2 As Integer
        lpReserved2 As Long
        hStdInput As Long
        hStdOutput As Long
        hStdError As Long
End Type

Declare Function CreateProcess Lib  "kernel32"  Alias  "CreateProcessA"  _
(ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, lpProcessAttributes As Any, _
lpThreadAttributes As Any, ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, lpEnvironment As Any, _
ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long
Declare Function CloseHandle Lib  "kernel32"  (ByVal hObject As Long) As Long
Declare Function WaitForSingleObject Lib  "kernel32"  (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371673
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть еще такой вариант\r
\r
/topic/43942&hl=%e7%e0%ef%f3%f1%ea
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371688
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
Если не установлен сервер сценариев в Windows 95/98 (про Millenium не знаю), то этот вариант не пройдет.
Вариант с RunAndWait работает и под Win98 под WinXP - проверял.
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371694
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Allll
Я знаю, в ссылке я предупреждал.
У меня и такой и такой вариант есть.
Но через Scripting больше нравится - код короче
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371706
фыыф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторИспользуя Shell, нет возможности узнать

А че нть в виде :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Public Function Try_Exec_Application(StrApp As String, Optional Mode As Integer) As Boolean
...
On Error GoTo Try_Exec_Application_err
...
    MyAppID = Shell(StrApp, Mode)
    DoCmd.OpenForm  "f_closedApp_Monitor" 
    While closedAppIsRunning
        AppActivate MyAppID '
        DoEvents 'позволяет обрабатывать нажатия кнопки  "STOP" 
    Wend

...
Try_Exec_Application_ex:
    Exit Function
Try_Exec_Application_err:
    Select Case err.Number
        Case  5 
            Try_Exec_Application = True
            Resume Try_Exec_Application_ex
        ...
    End Select
    Try_Exec_Application = False
    msgBox err.Description & err.Number
    Resume Try_Exec_Application_ex    
End Function

разве не прокатывает? Я когда-то делал. Работало. На стандартной Shell.
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371763
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 incold
через Scripting больше нравится - код короче
А через API интереснее :)

Если пользователь переустановит Win'98 и не поставит сервер сценариев (по умолчанию он не устанавливается), то, что делать бедной программе?
Проверять наличие сервера сценариев и если его нет:
1. сообщать и ничего не делать;
2. устанавливать автоматически.

Первый вариант - лишние хлопоты для разработчика.
Второй вариант я не пробовал.

WinAPI - это праздник, который всегда с тобой!
...
Рейтинг: 0 / 0
Распаковка архива из кода
    #32371796
Allll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 фыыф
Используя Shell, нет возможности узнать - закончена ли работа запущенной программы
Я имел в виду, что у стандартного Shell нет параметра - ждать завершения работы приложения.

Ваш вариант - еще одно решение этой задачи.
Правда я не понял, как это работает :(
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распаковка архива из кода
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]