Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Распаковка архива из кода / 12 сообщений из 12, страница 1 из 1
09.01.2004, 14:36
    #32371576
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
Кто знает, как можно из кода добраться до архивного файла в каком-нить директории и распаковать его куда-нить ?

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

Хелпа на Shell йок, тьфу !!!!
...
Рейтинг: 0 / 0
09.01.2004, 15:06
    #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
09.01.2004, 15:17
    #32371660
sposad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
Во вещь !!!!


Спасибо Funddd
...
Рейтинг: 0 / 0
09.01.2004, 15:20
    #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
09.01.2004, 15:23
    #32371673
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
Есть еще такой вариант\r
\r
/topic/43942&hl=%e7%e0%ef%f3%f1%ea
...
Рейтинг: 0 / 0
09.01.2004, 15:33
    #32371688
Allll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
2 incold
Если не установлен сервер сценариев в Windows 95/98 (про Millenium не знаю), то этот вариант не пройдет.
Вариант с RunAndWait работает и под Win98 под WinXP - проверял.
...
Рейтинг: 0 / 0
09.01.2004, 15:38
    #32371694
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
2 Allll
Я знаю, в ссылке я предупреждал.
У меня и такой и такой вариант есть.
Но через Scripting больше нравится - код короче
...
Рейтинг: 0 / 0
09.01.2004, 15:49
    #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
09.01.2004, 16:30
    #32371763
Allll
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Распаковка архива из кода
2 incold
через Scripting больше нравится - код короче
А через API интереснее :)

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

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

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

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


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