Как отследить ход выполнения запускаемого приложения?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Как отследить ход выполнения запускаемого приложения?

Сообщение sergey-911 » 10.06.2005 (Пт) 1:03

Доброго времени суток уважаемые. :D Как в программе последовательно запускать файлы "*.exe", дожидаться их выполнения, а потом удалять? Очень нужно при создании инсталляционного пакета. У меня происходит запуск приложения, не дождавшись завершения этого приложения - попытка его удаления и зауск другого приложения. Нужно производить все эти действия - последовательно. Вопрос - как отследить ход выполнения запускаемого приложения - точнее - его завершение? Ниже приведу полный код, может поможет... Плиз, очень нужно. Сдавать проет уже нужно...
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 1:11

Код: Выделить всё
Option Explicit

    Dim File As File                    'Файл с программой
    Dim fso As New FileSystemObject     'Подключение библиотеки
    Dim sAppPath As String              'Путь каталога к программе

    'V Создание DSN____________________________________________________________________________________________________________________________
    'Объявление констант
    Private Const ODBC_ADD_DSN = 1        ' Добавляем источник данных
    Private Const ODBC_CONFIG_DSN = 2     ' Настраиваем источник данных
    Private Const ODBC_REMOVE_DSN = 3     ' Удаляем источник данных
    Private Const vbAPINull As Long = 0   ' NULL указатель

    'Объявление функции
    #If Win32 Then

        Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
        (ByVal hwndParent As Long, ByVal fRequest As Long, _
        ByVal lpszDriver As String, ByVal lpszAttributes As String) _
        As Long
    #Else
        Private Declare Function SQLConfigDataSource Lib "ODBCINST.DLL" _
        (ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal _
        lpszDriver As String, ByVal lpszAttributes As String) As Integer
    #End If
    'A Создание DSN____________________________________________________________________________________________________________________________

    'V Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------
    Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As Long, ByVal bRevert As Long) As Long
    Private Const MF_BYPOSITION = &H400&
    'A Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------

Private Sub Command1_Click()
On Error GoTo Er
   
    Me.Visible = False
   
    sAppPath = App.Path                 'Определение местонахождения файлов с программой
    If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
   
    'V Создание DSN подключения________________________________________________________________________________________________________________________________________________________________________________________
    If MsgBoxEx("Установить " & Chr(34) & "DSN" & Chr(34) & " подключение к " & Chr(34) & "SQL" & Chr(34) & " серверу?", vbYesNo, "Продолжение установки...", ImageList1.ListImages(1).Picture) = vbYes Then Call DSN
    'A Создание DSN подключения________________________________________________________________________________________________________________________________________________________________________________________
   
    'V Запуск установки DLL.bat________________________________________________________________________________________________________________________________________________________________________________________
    Call RunDLL
    'A Запуск установки DLL.bat________________________________________________________________________________________________________________________________________________________________________________________
   
    'V Запуск установки "Autodesk Express Viewer"______________________________________________________________________________________________________________________________________________________________________
    Call RunAutodeskViewer
    'A Запуск установки "Autodesk Express Viewer"______________________________________________________________________________________________________________________________________________________________________
       
    Unload Me
       
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Command2_Click()
On Error GoTo Er

    Unload Me
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub DSN()
On Error GoTo Er

    'V Создание подключения______________________________________________________________________________________________________________________________________________________________________________________
    #If Win32 Then
        Dim intRet As Long
    #Else
        Dim intRet As Integer
    #End If
    Dim strDriver As String
    Dim strAttributes As String
   
    'Устанавливаем драйвер на SQL Server.
    strDriver = "SQL Server"
    'Устанавливаем атрибуты, разделённые нулями (null).
    strAttributes = "SERVER=" & "69SQL" & Chr$(0)
    strAttributes = strAttributes & "DESCRIPTION=" & "Constructor" & " DSN" & Chr$(0)
    strAttributes = strAttributes & "DSN=" & "Constructor" & Chr$(0)
    strAttributes = strAttributes & "DATABASE=" & "Constructor" & Chr$(0)
       
    'V Удаление DSN_________________________________________________________________________________________________________________________________________________________________________________________
    'Чтобы показать диалог, используем Form1.Hwnd вместо vbAPINull.
    intRet = SQLConfigDataSource(vbAPINull, ODBC_REMOVE_DSN, _
    strDriver, strAttributes)
    If intRet Then
        MsgBoxEx "Существующее " & Chr(34) & "DSN" & Chr(34) & " подключение " & Chr(34) & "Constructor" & Chr(34) & " удалено!" & vbCrLf & Chr(34) & "DSN" & Chr(34) & " подключение " & Chr(34) & "Constructor" & Chr(34) & " будет создано заново.", vbInformation, "Результат операции", ImageList1.ListImages(1).Picture
    End If
    intRet = Empty
       
    'V Установка DSN________________________________________________________________________________________________________________________________________________________________________________________
    'Чтобы показать диалог, используем Form1.Hwnd вместо vbAPINull.
    intRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, _
    strDriver, strAttributes)
    If intRet Then
        MsgBoxEx Chr(34) & "DSN" & Chr(34) & " подключение " & Chr(34) & "Constructor" & Chr(34) & " создано!", vbInformation, "Результат операции", ImageList1.ListImages(1).Picture
    Else
        MsgBoxEx "DSN подключение " & Chr(34) & "Constructor" & Chr(34) & " не создано!", vbExclamation, "Результат операции", ImageList1.ListImages(1).Picture
    End If
    'A Создание подключения_____________________________________________________________________________________________________________________________________________________________________________________

Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub RunDLL()
On Error GoTo Er

    'V Запуск установки "Autodesk Express Viewer"_______________________________________________________________________________________________________________________________________________________________
    On Error Resume Next                'Отключаем режим проверки ошибок
    Set File = fso.GetFile(sAppPath & "\DLL.bat")  'Путь к файлу
    If Err.Number > 0 Then
        MsgBoxEx "Не найден файл с программой!", , "Ошибка установки программы", ImageList1.ListImages(3).Picture
        Set File = Nothing
        Err.Clear
        On Error GoTo Er                'Возвращаем режим проверки ошибок
        Exit Sub
    End If
           
    On Error GoTo Er
       
    If MsgBoxEx("Необходимо внести изменения в реестр для корректной работы программы.", vbYesNo, "Продолжение установки...", ImageList1.ListImages(3).Picture) = vbYes Then Call Shell(File, vbMinimizedNoFocus)     'Запуск программы
    Set File = Nothing
    'A Запуск установки "Autodesk Express Viewer"_______________________________________________________________________________________________________________________________________________________________
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub RunAutodeskViewer()
On Error GoTo Er

    'V Запуск установки "Autodesk Express Viewer"_______________________________________________________________________________________________________________________________________________________________
    On Error Resume Next                'Отключаем режим проверки ошибок
    Set File = fso.GetFile(sAppPath & "\ExpressViewerSetup.exe")  'Путь к файлу
    If Err.Number > 0 Then
        MsgBoxEx "Не найден файл с программой!", , "Ошибка установки программы", ImageList1.ListImages(2).Picture
        Set File = Nothing
        Err.Clear
        On Error GoTo Er                'Возвращаем режим проверки ошибок
        Exit Sub
    End If
           
    On Error GoTo Er
       
    If MsgBoxEx("Установить " & Chr(34) & "Autodesk Express Viewer" & Chr(34) & " для просмотра эскизов КОИ?", vbYesNo, "Продолжение установки...", ImageList1.ListImages(2).Picture) = vbYes Then Call Shell(File, vbNormalFocus)     'Запуск программы
    Set File = Nothing
    'A Запуск установки "Autodesk Express Viewer"_______________________________________________________________________________________________________________________________________________________________
       
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub DelComponents(n As Byte)
On Error GoTo Er

    Dim i As Byte
    Dim s As String
    Dim Flag As Boolean
   
    If n = Empty Then n = 1

    sAppPath = App.Path                 'Определение местонахождения файлов с программой
    If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
   
    For i = n To 3
        Flag = Empty
        s = Empty
        If i = 1 Then s = "ExpressViewerSetup.exe"
        If i = 2 Then s = "DLL.bat"
        If i = 3 Then s = App.Title & ".ini"
        'V Запуск установки "Autodesk Express Viewer"_______________________________________________________________________________________________________________________________________________________________
        On Error Resume Next                'Отключаем режим проверки ошибок
        Set File = fso.GetFile(sAppPath & "\" & s)  'Путь к файлу
        If Err.Number > 0 Then
            Set File = Nothing
            Err.Clear
            On Error GoTo Er                'Возвращаем режим проверки ошибок
            Flag = True
        End If
        If Flag = False Then
            'V Удаление дистрибутива "Autodesk Express Viewer"_________________________________________________________________________________________________________________________________________________________________
            SetAttr (File), vbNormal                'Снятие атрибута "Только чтение"
            File.Delete
            Set File = Nothing

            If Err.Number > 0 Then
                MsgBoxEx "Необходимо продолжить установку программы" & vbCrLf & Chr(34) & s & Chr(34) & "." & vbCrLf & "Нажмите ОК после завершения установки.", vbInformation + vbOKOnly, "Ждите...", ImageList1.ListImages(3).Picture
                Err.Clear
                On Error GoTo Er                'Возвращаем режим проверки ошибок
                Call DelComponents(i)
            End If
            'A Удаление дистрибутива "Autodesk Express Viewer"_________________________________________________________________________________________________________________________________________________________________
        End If
    Next
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Form_Load()
On Error GoTo Er

    'V Чтение настроек формы*****************************************************************************************************************************************************
    Dim sAppPath As String
    sAppPath = App.Path                                             'Определение местонахождения файлов с программой
    If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
    sAppPath = sAppPath & App.Title & ".ini"
    Me.Left = ReadFromINI(sAppPath, Me.Name, "Left", CStr(Me.Left))
    Me.Top = ReadFromINI(sAppPath, Me.Name, "Top", CStr(Me.Top))
    'A Чтение настроек формы*****************************************************************************************************************************************************
   
    'V Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------
    Call RemoveMenus
    'A Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub RemoveMenus()
On Error GoTo Er

    'V Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------
    Dim hMenu As Long
    ' Получаем дескриптор системного меню формы.
    hMenu = GetSystemMenu(hWnd, False)
    DeleteMenu hMenu, 6, MF_BYPOSITION
    'A Запрет закрытия формы нажатием на крестик-----------------------------------------------------------------------------------------------
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Form_Unload(Cancel As Integer)
On Error GoTo Er

    'V Сохранение настроек формы*****************************************************************************************************************************************************
    Dim sAppPath As String
    sAppPath = App.Path                                             'Определение местонахождения файлов с программой
    If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
    sAppPath = sAppPath & App.Title & ".ini"
    WritePrivateProfileString Me.Name, "Left", CStr(Me.Left), sAppPath
    WritePrivateProfileString Me.Name, "Top", CStr(Me.Top), sAppPath
    'A Сохранение настроек формы*****************************************************************************************************************************************************

    'V Удаление дистрибутива___________________________________________________________________________________________________________________________________________________________________________________________
    Call DelComponents(Empty)
    'A Удаление дистрибутива___________________________________________________________________________________________________________________________________________________________________________________________
   
    MsgBoxEx "Установка дополнительных компонентов завершена.", vbInformation + vbOKOnly, "Ход установки", ImageList1.ListImages(3).Picture

Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Er

    If KeyCode = 112 Then frmAbout.Show vbModal
    If KeyCode = 27 Then Unload Me
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Image1_Click()
On Error GoTo Er
   
    Call Form_KeyDown(112, 0)
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Er
   
    Call Form_KeyDown(KeyCode, Shift)
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Command2_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Er
   
    Call Form_KeyDown(KeyCode, Shift)
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Command3_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Er
   
    Call Form_KeyDown(KeyCode, Shift)
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub

Private Sub Command3_Click()
On Error GoTo Er
   
    Call Form_KeyDown(112, 0)
   
Exit Sub
Er:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbOKOnly + vbCritical, "Error"
End Sub
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 1:14

Модуль "mMsgBoxEx" - смена стандартных картинок в MsgBox
Код: Выделить всё
Option Explicit

Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal ParenthWnd As Long, ByVal ChildhWnd As Long, ByVal ClassName As String, ByVal Caption As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WH_CBT            As Long = 5
Private Const HCBT_ACTIVATE     As Long = 5
Private Const HWND_TOP          As Long = 0
Private Const SWP_NOSIZE        As Long = &H1
Private Const SWP_NOZORDER      As Long = &H4
Private Const SWP_NOACTIVATE    As Long = &H10
Private Const STM_SETICON       As Long = &H170
Private Const SWVB_CAPTION_DEFAULT As String = "SWVB_DEFAULT_TO_APP_TITLE"

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private m_Hook As Long
Private m_hIcon As Long

'(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

Public Function MsgBoxEx(ByVal Prompt As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, _
                        Optional ByVal Title As String = SWVB_CAPTION_DEFAULT, _
                        Optional ByVal Icon As Long = 0&) As VbMsgBoxResult

Dim hInst As Long
Dim threadID As Long
Dim wndRect As RECT

hInst = App.hInstance

threadID = GetCurrentThreadId()

m_Hook = SetWindowsHookEx(WH_CBT, AddressOf MsgBoxHook, hInst, threadID)

m_hIcon = Icon

    If Title = SWVB_CAPTION_DEFAULT Then
        Title = App.Title
    End If
   
    If m_hIcon <> 0& Then
        Buttons = Buttons Or vbInformation
    End If
   
MsgBoxEx = MsgBox(Prompt, Buttons, Title)

End Function

'(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((

Private Function MsgBoxHook(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim height As Long
Dim width As Long
Dim nSize As Long
Dim wndRect As RECT
Dim sBuffer As String
Dim fWidth As Long
Dim fHeight As Long
Dim x As Long
Dim y As Long
Dim hIconWnd As Long

MsgBoxHook = CallNextHookEx(m_Hook, nCode, wParam, lParam)

    If nCode = HCBT_ACTIVATE Then
        sBuffer = Space$(32)
        nSize = GetClassName(wParam, sBuffer, 32)
        Call GetWindowRect(wParam, wndRect)
       
On Error GoTo errorTrap

        height = (wndRect.Bottom - wndRect.Top) / 2
        width = (wndRect.Right - wndRect.Left) / 2
        Call GetWindowRect(GetParent(wParam), wndRect)
On Error GoTo errorTrap

        fHeight = wndRect.Top + (wndRect.Bottom - wndRect.Top) / 2
        fWidth = wndRect.Left + (wndRect.Right - wndRect.Left) / 2
       
        x = fWidth - width
        y = fHeight - height
       
SetWindowPos wParam, HWND_TOP, x, y, 0, 0, SWP_NOSIZE + SWP_NOZORDER + SWP_NOACTIVATE

    If m_hIcon <> 0& Then
        hIconWnd = FindWindowEx(wParam, 0&, "Static", vbNullString)
        Call SendMessage(hIconWnd, STM_SETICON, m_hIcon, ByVal 0&)
    End If
   
errorTrap:

        UnhookWindowsHookEx m_Hook
       
    End If

End Function
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 1:17

Модуль "IniSave" - сохранение местоположения и размеров формы в файле "*.ini"
Код: Выделить всё
Option Explicit

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

Public Function ReadFromINI _
    (ByVal sINIFile As String, _
    ByVal sSection As String, _
    ByVal sKey As String, _
    Optional ByVal sDefault As String = vbNullString) As String
   
   Dim rc&, sData$

   sData$ = String$(128, Chr$(0))

   If GetPrivateProfileString(sSection, sKey, sDefault, sData$, Len(sData$), sINIFile) > 0 Then
      ReadFromINI = Left$(sData, InStr(sData$, Chr$(0)) - 1)
   Else
      ReadFromINI = sDefault
   End If
End Function
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 1:26

Искренне надеюсь на Ваше сотрудничество. Возможно, кому - то пригодиться сохранение и загрузка всех параметров формы...

Код: Выделить всё
    'V Чтение настроек формы*****************************************************************************************************************************************************
    Dim sAppPath As String
    sAppPath = App.Path                                             'Определение местонахождения файлов с программой
    If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
    sAppPath = sAppPath & App.Title & ".ini"
    Me.Left = ReadFromINI(sAppPath, Me.Name, "Left", CStr(Me.Left))
    Me.Top = ReadFromINI(sAppPath, Me.Name, "Top", CStr(Me.Top))
    Me.Width = ReadFromINI(sAppPath, Me.Name, "Width", CStr(Me.Width))
    Me.Height = ReadFromINI(sAppPath, Me.Name, "Height", CStr(Me.Height))
    Me.WindowState = ReadFromINI(sAppPath, Me.Name, "WindowState", CStr(Me.WindowState))
    'A Чтение настроек формы*****************************************************************************************************************************************************

'V Сохранение настроек формы*****************************************************************************************************************************************************
        Dim sAppPath As String
        sAppPath = App.Path                                             'Определение местонахождения файлов с программой
        If Right$(sAppPath, 1) <> "\" Then sAppPath = sAppPath & "\"    'Проверка на местонахождение на локальном диске
        sAppPath = sAppPath & App.Title & ".ini"
    If Me.WindowState <> vbMinimized And Me.WindowState <> vbMaximized Then
        WritePrivateProfileString Me.Name, "Left", CStr(Me.Left), sAppPath
        WritePrivateProfileString Me.Name, "Top", CStr(Me.Top), sAppPath
        WritePrivateProfileString Me.Name, "Width", CStr(Me.Width), sAppPath
        WritePrivateProfileString Me.Name, "Height", CStr(Me.Height), sAppPath
    End If
        WritePrivateProfileString Me.Name, "WindowState", CStr(Me.WindowState), sAppPath
'A Сохранение настроек формы*****************************************************************************************************************************************************
С уважением, Сергей.

ism
Постоялец
Постоялец
 
Сообщения: 337
Зарегистрирован: 12.12.2001 (Ср) 12:59
Откуда: Russia, Saint-Petersburg

Сообщение ism » 10.06.2005 (Пт) 1:51

А прицепить архив было несутьба, надо пофлудить!
Лично мне с разрешением 1024x720 ничего не разобрать.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.06.2005 (Пт) 2:33

Хм. Мне с моим 1280х1024 тоже не всё видно. :)

О вопросе... Могу посоветовать сканировать список запущенных процессов на наличие в нём нужной программы. Не знаешь как? Сходи по ссылке в моей подписи.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 6:32

Спасибо. Почему у Вас не видно, вопрос...? Добавляю исходник. Файлы, которые он запускает и удаляет, вкладывать не буду, т.к. занимают много места. Просто укажу их, для наглядности.
Код: Выделить всё
Private Sub DelComponents(n As Byte)
.
.
.

        If i = 1 Then s = "ExpressViewerSetup.exe"
        If i = 2 Then s = "DLL.bat"
        If i = 3 Then s = App.Title & ".ini"
.
.
.
End Sub

[b]App.Title & ".ini"[/b] - файл с настройками программы

[b]
ExpressViewerSetup.exe; DLL.bat
[/b] - файлы, запускаемуе программой. Эти вайлы и должны удаляться после инсталляции, могут быть любыми.
[b]
Буду крайне признателен, если кто подправит мой проект и выложит.
[/b]
Вложения
Install - 10 jun 2005.rar
Интересные моменты - сохранение настроек формы и создание DSN подключения.
(14.1 Кб) Скачиваний: 39
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 6:43

А сдесь что искать http://www.vbland.net/? Сейчас разбираться некогда - на работу опаздываю, после 3-х часового сна. Жаль на работе инета нет. Если не в лом - подправте проект, Буду очень-очень признателен...
С уважением, Сергей.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 10.06.2005 (Пт) 12:38

Сергей, хроническая лень не мучает?
http://bbs.vbstreets.ru/viewtopic.php?t=8009
Моду создают модоки, а распространяют модозвоны.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.06.2005 (Пт) 13:53

2 sergey-911

Имелась ввиду ссылка "сюда".

Сканируешь. Ждешь, пока в списке есть Application.exe. Запускаешь что тебе надо.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 10.06.2005 (Пт) 17:24

Хроническая лень, Николай, меня уже замучила. Скорее даже, не лень, а собственная тупость. Весь день на работе изучал книгу API функции (справочник) - до такого не додумался. Хотя и подсказка прозвучала, что нужно сканировать список запущенных процессов на наличие в нём нужной программы. Отличный исходник. Всем спасибо. А что касаемо ссылки http://bbs.vbstreets.ru/viewtopic.php?t=14417&start=27, Борис, - так я страничку из дома скачал, а на работе пытался разобраться - проект что-то делает, а что... Так и не понял. Не скажите, уважаемые, с чего освоение API начать? В книге написан оочень сжато, до меня не доходит, если честно. Может ресурс, какой в инете... Или MSDN только? Жаль, что на работе инет запрещен в целях безопасности производства. ОГРОМНОЕ ВСЕМ СПАСИБО!!! :D
С уважением, Сергей.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 10.06.2005 (Пт) 17:48

Освоение API хорошо начинать с книжки "Win32 API и Visual Basic" Дана Эпплмана. {Издательство Питер, 2001 год, 1120 страниц с иллюстрациями. Читать надо как справочник, а не как художественное произведение. Т.е. нашел что нужно/заглянул, если непонятно/усвоил главные концепции и т.п.}

Очень помогают ресурсы вроде http://www.allapi.net. На этом сайте можно скачать API-Guide - очень удобную утилиту для получения справки по различным функциям API. Также рекомендую загрузить программу ApiViewer 2004 (ссылки, увы, не помню.)
Моду создают модоки, а распространяют модозвоны.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.06.2005 (Сб) 7:54

Спасибо Николай! :D
Книгу обязательно разыщу. А ApiViewer 2004 я 2 дня назад скачал, когда столкнулся с проблемой, описанной выше. Правда, так и не нашел особой разницы между предыдущими версиями. Возможно, новая БД к ней добавилась... Ссылки если, кому понадобятся.
http://www.activevb.de/rubriken/apiviewer/index-apiviewereng.html
http://www.mentalis.org/agnet/apiviewer.shtml
С уважением, Сергей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 11.06.2005 (Сб) 15:25

Никто, видимо, форумом не интересуется, и тем, что на нём выложено, тоже...
Кирпичи, Waiter!...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 65

    TopList