Tắt Popup regsvr32 khi đăng kí DLL thành Công

Liên hệ QC

khongnhienttt

Thành viên hoạt động
Tham gia
15/7/15
Bài viết
137
Được thích
33
- Do e có một số File dll cần đăng kí nên e tạo sự kiện khởi động nó tự đăng kí với cú pháp
Mã:
regsvr32 <full path of the DLL>
- Đăng kí thành công thì nó hiện thông báo này:
1569982929962.png
- Em đã thử dùng các lệnh sendkeys để tắt đều không thành công:
Mã:
SendKeys "%{F4}"
SendKeys "{ESC}"
SendKeys "{ENTER}"
- Khi dùng code mở trực tiếp regsvr32 .exe thì lại tắt được popup này
Mã:
Sub ClosePopup()
    Dim MyAppID
    MyAppID = Shell("C:\Windows\SysWOW64\regsvr32.exe", 1)
    AppActivate MyAppID
    SendKeys "{Enter}"
End Sub
1569983098171.png
- Nhưng cũng dùng code tương tự thì có thể tắt được regsvr32.exe nhưng không thể tắt được popup thông báo đăng kí thành công bên trên, Mong Các bạn và các anh chị giúp đỡ
Mã:
Sub ClosePopup()
    AppActivate "regsvr32"
    SendKeys "{Enter}"
End Sub
 
- Do e có một số File dll cần đăng kí nên e tạo sự kiện khởi động nó tự đăng kí với cú pháp
Mã:
regsvr32 <full path of the DLL>
- Đăng kí thành công thì nó hiện thông báo này:
View attachment 225985
- Em đã thử dùng các lệnh sendkeys để tắt đều không thành công:
Mã:
SendKeys "%{F4}"
SendKeys "{ESC}"
SendKeys "{ENTER}"
- Khi dùng code mở trực tiếp regsvr32 .exe thì lại tắt được popup này
Mã:
Sub ClosePopup()
    Dim MyAppID
    MyAppID = Shell("C:\Windows\SysWOW64\regsvr32.exe", 1)
    AppActivate MyAppID
    SendKeys "{Enter}"
End Sub
View attachment 225987
- Nhưng cũng dùng code tương tự thì có thể tắt được regsvr32.exe nhưng không thể tắt được popup thông báo đăng kí thành công bên trên, Mong Các bạn và các anh chị giúp đỡ
Mã:
Sub ClosePopup()
    AppActivate "regsvr32"
    SendKeys "{Enter}"
End Sub
Cách đăng ký sao vậy bạn?
 
Upvote 0
Rõ ràng đính kèm ảnh của sổ hướng dẫn mà không chịu đọc. Bó tay.

Theo hướng dẫn:

regsvr32 <đường dẫn full file dll> /s
 
Upvote 0
DLL - vb6 đường dẫn tiếng việt có dấu là tèo đấy ...UAC đang kéo lên cao cũng teo vậy nên run as
 
Lần chỉnh sửa cuối:
Upvote 0
Sao em làm nó báo lỗi access is denied
Capture.PNG
 
Upvote 0
Bạn mở CMD dưới quyền Administrator.
Click phải chuột vào cmd.exe -> Run As Administrator
 
Upvote 0
Đăng ký thư viện regsvr32 VBA:

Ví dụ:
Gọi thủ tục RegisterFile để thực hiện chọn file "D:\A.DLL" để đăng ký

Gọi thủ tục UnregisterFile để hủy đăng ký
UnregisterFile "D:\A.DLL"
Hoặc UnregisterFile "C:\Windows\System32\A.DLL" (Nguy hiểm)


MsgBox IIF(FileExists("C:\Windows\System32\A.DLL"), "Registered","Unregistered")


*Xin lưu ý: Code dưới đây thuộc một trong những thành phần của Virus Macro nếu người viết code có "Ý đồ không tốt",
*Vì vậy hãy kiểm duyệt file Office Có chứa Macro VBA trước khi mở.
*Quét Virus Macro Online cho file Office tại đây với hơn 70 phần mềm quét đồng thời, có cả BKAV

-------------------------------

JavaScript:
Option Explicit
#If VBA7 And Win64 Then
  Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                    (ByVal hwnd As LongPtr, _
                                    ByVal lpOperation As String, _
                                    ByVal lpFile As String, _
                                    ByVal lpParameters As String, _
                                    ByVal lpDirectory As String, _
                                    ByVal nShowCmd As Long) As LongPtr    
#Else
  Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                          (ByVal hwnd As Long, _
                           ByVal lpOperation As String, _
                           ByVal lpFile As String, _
                           ByVal lpParameters As String, _
                           ByVal lpDirectory As String, _
                           ByVal nShowCmd As Long) As Long

#End If


Sub RegisterFile()
   Dim FilePath$
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Select a regsvr32 file!"
        .Filters.Clear
        .Filters.Add "regsvr32 file", "*.*"
        .Show
            If .SelectedItems.Count = 0 Then
                Exit Sub
            Else
                FilePath = .SelectedItems(1)
            End If
    End With

  ShellExecute 0, "RunAs", "cmd", "/c regsvr32 /s " & """" & FilePath & """", "C:", 0
End Sub

Sub UnregisterFile(FilePath$)
  ShellExecute 0, "RunAs", "cmd", "/c regsvr32 /u /s " & """" & FilePath & """", "C:", 0
End Sub

Function FileExists(ByVal FilePath$) As Boolean
  If FilePath <> vbNullString Then
    FileExists = Not Dir(FilePath, 16) = vbNullString
  End If
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Đăng ký thư viện regsvr32 VBA
-------------------------------
JavaScript:
Option Explicit
#If VBA7 And Win64 Then
  Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                    (ByVal hwnd As LongPtr, _
                                    ByVal lpOperation As String, _
                                    ByVal lpFile As String, _
                                    ByVal lpParameters As String, _
                                    ByVal lpDirectory As String, _
                                    ByVal nShowCmd As Long) As LongPtr      
#Else
  Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                          (ByVal hwnd As Long, _
                           ByVal lpOperation As String, _
                           ByVal lpFile As String, _
                           ByVal lpParameters As String, _
                           ByVal lpDirectory As String, _
                           ByVal nShowCmd As Long) As Long

#End If


Sub RegisterFile()
   Dim FilePath$
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "Select a regsvr32 file!"
        .Filters.Clear
        .Filters.Add "regsvr32 file", "*.*"
        .Show
            If .SelectedItems.Count = 0 Then
                Exit Sub
            Else
                FilePath = .SelectedItems(1)
            End If
    End With

  ShellExecute 0, "RunAs", "cmd", "/c regsvr32 /s " & """" & FilePath & """", "C:", 0
End Sub

Sub UnregisterFile(FilePath$)
  ShellExecute 0, "RunAs", "cmd", "/c regsvr32 /u /s " & """" & FilePath & """", "C:", 0
End Sub

Function FileExists(ByVal FilePath$) As Boolean
  If FilePath <> vbNullString Then
    FileExists = Not Dir(FilePath, 16) = vbNullString
  End If
End Function
Cách sử dụng như thế nào vậy Anh?
 
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
ShellExecuteEx hoàn toàn không có quyền cao hơn ShellExecute.
Tuy nhiên nó có thêm nhiều tham số hơn, trong đó có các tham số nhận lại giá trị trả về trong quá trình gọi hàm (Hay còn gọi là CallBack Function).

Ví dụ như Khởi chạy Chrome vào một tiến trình, và giữ cho tiến trình tồn tại cho đến khi Chrome đóng hoàn toàn.

Tốt nhất là đọc Docs Microsoft ShellExecuteEx

PHP:
Private Type SHELLEXECUTEINFO
  cbSize       As Long
  fMask        As Long
  hwnd         As Long
  lpVerb       As String
  lpFile       As String
  lpParameters As String
  lpDirectory  As String
  nShow        As Long
  hInstApp     As Long
  lpIDList     As Long
  lpClass      As String
  hkeyClass    As Long
  dwHotKey     As Long
  hIcon        As Long
  hProcess     As Long
End Type
 
Upvote 0
ShellExecuteEx hoàn toàn không có quyền cao hơn ShellExecute.
Tuy nhiên nó có thêm nhiều tham số hơn, trong đó có các tham số nhận lại giá trị trả về trong quá trình gọi hàm (Hay còn gọi là CallBack Function).

Ví dụ như Khởi chạy Chrome vào một tiến trình, và giữ cho tiến trình tồn tại cho đến khi Chrome đóng hoàn toàn.

Tốt nhất là đọc Docs Microsoft ShellExecuteEx

PHP:
Private Type SHELLEXECUTEINFO
  cbSize       As Long
  fMask        As Long
  hwnd         As Long
  lpVerb       As String
  lpFile       As String
  lpParameters As String
  lpDirectory  As String
  nShow        As Long
  hInstApp     As Long
  lpIDList     As Long
  lpClass      As String
  hkeyClass    As Long
  dwHotKey     As Long
  hIcon        As Long
  hProcess     As Long
End Type
đã coi từ rất lâu ròi ... mượn cớ bài này là muốn đào sâu thêm một chút nữa thui đó mà .... hiểu ý mạnh ko ta ... tại mạnh chưa thật sự hiểu lắm nên mới bày trò giả vờ vậy thui ??!!!
Mà xài ShellExecuteEx ... Reg cũng ok đó

Capture.JPG
 
Lần chỉnh sửa cuối:
Upvote 0
Tặng cho Chủ thớt Hàm Sau xài cho nó đơn giản gọn nhẹ he ... Khi chạy nếu nó hỏi thì chon Yes nha
Mã:
Rem ============= Dang ky su dung file *.dll Hay *.OCX voi Windows Su dung Run As Administrator =============
Public Function RegActiveXDLL(ByVal ActiveXDLL As String, Optional ByVal Reg As Boolean = True) As Boolean
    Dim sParam As String, Fso As Object ''Kieu Manh - GPE    
    Set Fso = CreateObject("Scripting.FileSystemObject")                ''Khoi tao ket noi thu Vien FileSystemObject
    If Fso.FileExists(ActiveXDLL) = False Then Exit Function            ''Neu File khong thong tai thi thoat
   
    ActiveXDLL = Fso.GetFile(ActiveXDLL).ShortPath                      ''Lay ShortPath cua File ...
    If Reg Then sParam = " /s " Else sParam = " /u /s "                 ''Tuy chon Register Or UnRegister ActiveX DLL
    ActiveXDLL = sParam & Chr$(34) & ActiveXDLL & Chr$(34)              ''Register & UnRegister ActiveX DLL
    CreateObject("Shell.Application").ShellExecute "cmd.exe", "/c Regsvr32 " & ActiveXDLL, 0, "Runas", True
    Set Fso = Nothing
End Function
Rem =============
Public Sub Main_RegActiveXDLL()
    Dim FileName_Path As String
    FileName_Path = "D:\QLBHPN Telecom\QLBHPN_VB6_2019\QLBHPN.dll"
    Rem Call RegActiveXDLL(FileName_Path, False)    ''UnRegister ActiveXDLL
    Call RegActiveXDLL(FileName_Path, True)         ''Register ActiveXDLL
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom