Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
Всем доброго здоровичка.
Есть у меня задача - выполнять запуск приложения по нажатию кнопки в форме. В зависимости от положения SelectedItem в TreeView выполняется запуск приложения.
Dim ИмяФормы As String
Dim Родитель As String
Dim КодВетки As String
Dim stAppName As String
On Error Resume Next
ИмяФормы = "Платежи" 'Screen.ActiveForm.Name
КодВетки = Forms(ИмяФормы).TreeView60.SelectedItem
Родитель = Forms(ИмяФормы).TreeView60.SelectedItem.Parent
If Родитель > "" Then
    stAppName = DLookup("Путь", "тблРасчетныеСчета", _
    "[Банк]= '" & Родитель & "'")
    Call Shell(stAppName, 1)
Else
    stAppName = DLookup("Путь", "тблРасчетныеСчета", _
    "[Банк]= '" & КодВетки & "'")
    Call Shell(stAppName, 1)
End If

все классно работает, только не на все приложения, на некоторых (это одно и то же только на разных дисках) - пишет подряд 3 msgbox:
1- "C:\Program Files\System\Mapi\1049\sysconf\mailcfg.dbf" содержит неправильный путь. Open Error! 2- Ошибка файла конфигурации (Connect). 3 -
Ошибка файла конфигурации (FILLVAR).
Где прога этот путь нашла не знаю, в отладке stAppName показало путь - "C:\Mbankkrn\bin\mbnkpwin.exe". Спасибо за любые мнения по этому поводу.
8 фев 06, 11:11    [2332733]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
bubucha
Member

Откуда:
Сообщений: 5642
Для начала Debug.Print stAppName, и пробовать его запустить из пуск-выполнить
8 фев 06, 11:15    [2332767]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
сделал Debug.Print stAppName, и пробовать его запустить из пуск-выполнить. Приложение запускается замечтательно.
8 фев 06, 11:20    [2332796]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
bubucha
Member

Откуда:
Сообщений: 5642
Я правильно понимаю, что мессажбоксы не аккесовские , а внешнего приложения?
8 фев 06, 11:27    [2332834]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
Да. Потому что когда я сделал:
On Error GoTo 10
'.....
Exit Sub
10
Debug.Print err.Description

то ничего в окно отладки не напечаталось.
8 фев 06, 11:34    [2332885]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
попробуйте запускать командный файл,в свойствах которого надо прописать домашний каталог для приложения и сделать cd к exe
8 фев 06, 11:42    [2332940]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
Немного не понял. Нужно создать .bat ? И что такое "и сделать cd к exe"
8 фев 06, 12:37    [2333279]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
antoniony
Нужно создать .bat ? И что такое "и сделать cd к exe"

1 Да
2 cd туда , где лежит исполняемый файл или файл приложения
8 фев 06, 12:47    [2333343]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
А что такое cd ?
8 фев 06, 12:57    [2333394]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
antoniony
А что такое cd ?

команда сменить директорию, Вы в школе DOS прогуляли ?
8 фев 06, 12:59    [2333405]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
bubucha
Member

Откуда:
Сообщений: 5642
Если не хочется возится с bat файлами, можно попробовать перет вызовом приложения, менять текущий каталог:
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
8 фев 06, 13:04    [2333438]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
К сожалению в школе, когда я учился компьютеров не было, и доса соответственно тоже, он Гейтсу только снился еще. :)
А как правильно написать строку запуска экзешника? Просто путь, или команда специальная должна быть.
8 фев 06, 13:04    [2333439]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
bubucha
Если не хочется возится с bat файлами, можно попробовать перет вызовом приложения, менять текущий каталог:
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long

И что с этим делать? Куда добавлять в моем случае?
8 фев 06, 13:13    [2333504]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
bubucha
Member

Откуда:
Сообщений: 5642
перед
Call Shell(stAppName, 1)
определяете путь к программе и вызвваете функцию, в параметре которой его передаете....если конечно догоадка Shuhard верна.
8 фев 06, 13:53    [2333815]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
antoniony
К сожалению в школе, когда я учился компьютеров не было, и доса соответственно тоже, он Гейтсу только снился еще. :)
А как правильно написать строку запуска экзешника? Просто путь, или команда специальная должна быть.

откель нам про Ваши приложения для клиент-банка знать, звоните в суппорт
8 фев 06, 14:00    [2333858]     Ответить | Цитировать Сообщить модератору
 Re: Работа с Call Shell  [new]
antoniony
Member

Откуда: Запорожье
Сообщений: 500
Победил я этого крокодилуса. Пошел другим путем (логически): если не запускается экзешник, а ярлык на него запускается, то нужен метод запуска ярлыка. Наваял прогу по созданию гиперссылки активному контролу с автоматическим выполнением и все получилось.
Sub CreateHyperlink(ctlSelected As Control, Optional strAddress As String)
    Dim hlk As Hyperlink
    Select Case ctlSelected.ControlType
        Case acLabel, acImage, acCommandButton
            Set hlk = ctlSelected.Hyperlink
            With hlk
                If Not IsMissing(strAddress) Then
                    .Address = strAddress
                Else
                    .Address = ""
                End If
                .Follow
                .Address = ""
            End With
        Case Else
            MsgBox "The control '" & ctlSelected.Name _
                 & "' does not support hyperlinks."
    End Select
End Sub

а потом по нажатию кнопки запускаю строку:
    stAppName = DLookup("Путь", "тблРасчетныеСчета", _
    "[Банк]= '" & КодВетки & "'")
    Call CreateHyperlink(Me.ActiveControl, stAppName)

вот так вот мы их совместно, всем спасибо
8 фев 06, 16:18    [2334686]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить