Получить в переменную результат Shell "regsvr32.. - VB
Формулировка задачи:
Доброго Вам времени суток
Уважаемые господа.
С наступившим Вас Новым Годом.
Долгих лет Вам жизни, здоровья и успехов делах.
При наличии Вашего времени прошу Вас подсказать.
Данный код позволяет автоматически зарегистрировать список dll в List1.
При регистрации dll выходит диалоговое окно об успешном или не успешном выполнении регистрации.
Добавив к строке ключ
Диалоговое окно не появляется.
Как сделать так чтобы сообщение о регистрации dll (успешном, не успешном ) попадало в переменную для последующей обработки.
Т.е.
С Уважением и Благодарностью
Намик
Уважаемые господа.
С наступившим Вас Новым Годом.
Долгих лет Вам жизни, здоровья и успехов делах.
При наличии Вашего времени прошу Вас подсказать.
Данный код позволяет автоматически зарегистрировать список dll в List1.
При регистрации dll выходит диалоговое окно об успешном или не успешном выполнении регистрации.
Добавив к строке ключ
/s
Диалоговое окно не появляется.
Как сделать так чтобы сообщение о регистрации dll (успешном, не успешном ) попадало в переменную для последующей обработки.
Т.е.
С Уважением и Благодарностью
Намик
Решение задачи: «Получить в переменную результат Shell "regsvr32..»
textual
Листинг программы
Option Explicit
Dim hLib As String
Dim i As Integer
Dim dllz As String
Public fso As New FileSystemObject
Public file1 As File
Private Type SHELLEXECUTEINFO
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As Long
lpFile As Long
lpParameters As Long
lpDirectory As Long
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As Long
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteExW" (lpExecInfo As SHELLEXECUTEINFO) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const SEE_MASK_NOCLOSEPROCESS As Long = &H40
Private Const SW_SHOWDEFAULT As Long = 10
Private Const INFINITE As Long = -1&
Private Sub Command1_Click()
Dim sh As SHELLEXECUTEINFO
Dim ret As Long
sh.cbSize = Len(sh)
sh.fMask = SEE_MASK_NOCLOSEPROCESS
sh.lpFile = StrPtr("regsvr32.exe")
For i = 0 To List1.ListCount - 1
List1.ListIndex = i
List1.ListIndex = i
ChDir App.Path
dllz = List1.Text
sh.lpParameters = StrPtr("/s " & dllz & "")
sh.nShow = SW_SHOWDEFAULT
If ShellExecuteEx(sh) Then
WaitForSingleObject sh.hProcess, INFINITE
GetExitCodeProcess sh.hProcess, ret
CloseHandle sh.hProcess
If ret Then
Debug.Print "1"
Else
Debug.Print "2"
End If
End If
Next
End Sub
Private Sub Form_Load()
For Each file1 In fso.GetFolder(App.Path).Files
If fso.GetExtensionName(file1.Path) = "dll" Or fso.GetExtensionName(file1.Path) = "ocx" Then
List1.AddItem file1.Name
End If
Next file1
End Sub