OCX dosyasını kod ile Windowsa tanıtmak.

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Merhaba.
OCX dosyalarını windowsa tanıtmak için başlat==>çalıştrır regsvr32.exe xxx.ocx yazıp windowsa tanıtıyoruz.Bu işlemi VBA kodları ile yapabilirmiyiz?:)
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Ben denedim güzel bir şekilde kurdu

Aynı şekilde tekrar kurmak istediğim de ise Ocx ismini vererek Registered uyarısı verdi.
Kaldırınca da DeRegistered uyarısı verdi.

Galiba dosyayı taşıyor. Çünkü register ettikten sonra klasör içerisindeki ocx kayboldu :)
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Günaydın beyler;

Aşağıdaki kodu denermisiniz ? ( OCX dosya yolunu uyarladıktan sonra tabii...)

Kod:
Declare Function FreeLibrary Lib "kernel32" _
        (ByVal hLibModule As Long) As Long
Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" _
        (ByVal lpLibFileName As String) As Long
Declare Function GetProcAddress Lib "kernel32" _
        (ByVal hModule As Long, ByVal lpProcName As String) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
        (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, _
         ByVal wParam As Any, ByVal lParam As Any) As Long
'
Const ERROR_SUCCESS = &H0
Const MyOCX As String = "C:\Winnt\System32\msdxm.ocx"
'
Sub RegOCX()
    If Dir(MyOCX) = Empty Then
        MsgBox MyOCX & " bulunamadı, dosya yolunu kontrol edin.... !"
    Else
        Call RegisterServer(MyOCX, True)
    End If
End Sub
'
Sub UnRegOCX()
    If Dir(MyOCX) = Empty Then
        MsgBox MyOCX & " bulunamadı, dosya yolunu kontrol edin.... !"
    Else
        Call RegisterServer(MyOCX, False)
    End If
End Sub
'
Function RegisterServer(pathOCX As String, Register As Boolean)
    Dim ProcAddr As Long
    On Error Resume Next
    If Register = True Then
        ProcAddr = GetProcAddress(LoadLibrary(pathOCX), "DllRegisterServer")
    Else
        ProcAddr = GetProcAddress(LoadLibrary(pathOCX), "DllUnregisterServer")
    End If
    If CallWindowProc(ProcAddr, ByVal 0&, ByVal 0&, ByVal 0&, ByVal 0&) = ERROR_SUCCESS Then
        MsgBox IIf(Register = True, "Registration", "Unregistration") & " Basarili oldu !"
    Else
        MsgBox IIf(Register = True, "Registration", "Unregistration") & " Basarili olmadi"
    End If
    FreeLibrary LoadLibrary(pathOCX)
End Function


.
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Günaydın Haluk abi,
Ben D: sürücüsünde var olan bir ocx'i adres gösterdim fakat Register basarili olmadi diyor sebebi nedir acaba.
Ocx'in adı: actskn43.ocx
Yolu: D:\Excel Programlama\extra\OCX\actskn43.ocx
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Not:

RegOCX prosedürü ilgili OCX dosyasını Windows'a "register" eder. (Kaydeder)

UnRegOCX prosedürü de ilgili OCX dosyasını Windows'tan "unregister" eder (kaydı siler)
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Mahmut kardeşim, doğrusu neden olmamış bir fikrim yok.

Olmaması için bir neden de yok aslında....

Oturumu açtığın kullanıcı Admin yetkilerine sahip, değil mi ?

.
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Sahip çünkü tek oturum var.
Haluk abi şu kod da register ve unregister eder galiba

Kod:
Sub Register()
Shell "RegSvr32 /s" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub

Sub UnRegister()
Shell "RegSvr32 /s /u" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub
Şu kodlarda kallbimizin müsterih (gerçekten register olmuş mu diye) olasını sağlıyor. Muhahahha :mrgreen::mrgreen::mrgreen:

Kod:
Dim soru As String
   soru = GetSetting("program", "actskn43", "cevap")
      If soru = vbNullString Then
   Shell "RegSvr32 /s" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
SaveSetting "program", "actskn43", "cevap", "1"
      Else
         MsgBox "Dosya Zaten Register Edilmiş .."
      End If
 
Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,310
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Mahmut kardeşim;

Verdiğin son kod, sanırım Başlat>> Çalıştır regsvr32.exe...... işinin VBA similasyonu olsa gerek yok.

Eğer syntax hatası yoksa, herhalde olur ....


.
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Herhangi bir hata vermedi.
Tamam anladım ilgine, bilgine teşekkür ederim.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Haluk hocamın verdiği kodları getopenfilename ile seçtirip o şekilde çalıştırır şekilde düzenledim.
Uygulama default olarak windows\system32 klasörünü açıyor ve içindeki OCX dosyalarını listeliyor.
Eğer bu liste içinde kaydedeceğiniz ocx dosyası yoksa ilgili ocx dosyasını önce Windows\system32 klasörüne kopyalayın sonrada reg edin.
Başka klasörler içinde bulup gene yapabilirsiniz ama bir gün gelir orada olduğunu unutur ve ocx dosyasını silerseniz Dosyanız çalışmaz.
Haluk hocama tekrardan teşekkür ederim.
Dosya ektedir.
 
Son düzenleme:

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
Aslında toplu seçim yaptırarak toplu tanıtım yaptırılsa iyi olur.
Akşam bunun üzerinde biraz çalışayım bakalım neler yapabileceğiz.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,269
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Kod:
Sub Register()
Shell "RegSvr32 /s" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub

Sub UnRegister()
Shell "RegSvr32 /s /u" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub
Eğer dosya yolu gerçekse problem çıkması gerekir. Bu durum klsör isminin boşluk içermesinden kaynaklanıyor.

Dosya yoluna eklenecek iki çift tırnak sorunu ortadan kaldırır.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Kod:
Sub Register()
Shell "RegSvr32 /s" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub

Sub UnRegister()
Shell "RegSvr32 /s /u" & "D:\Excel Programlama\extra\OCX\actskn43.ocx"
End Sub
Eğer dosya yolu gerçekse problem çıkması gerekir. Bu durum klsör isminin boşluk içermesinden kaynaklanıyor.

Dosya yoluna eklenecek iki çift tırnak sorunu ortadan kaldırır.
Zeki bey dtpickeri kaldırıp kurmak istedim ama unreg olmuyor.
Kod aşğıda.
Kod:
Shell "RegSvr32 /s /u" & "C:\Windows\system32\MSCOMCT2.OCX"
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,269
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Bir boşluk gerekiyor.

Kod:
Shell "RegSvr32 /s /u" & [COLOR=Blue][B]" C[/B][/COLOR]:\Windows\system32\MSCOMCT2.OCX"
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Bir boşluk gerekiyor.

Kod:
Shell "RegSvr32 /s /u" & [COLOR=Blue][B]" C[/B][/COLOR]:\Windows\system32\MSCOMCT2.OCX"
Evet bu oldu teşekkürler.
Birde yolun yazılışında arasında boşluk varsa demiştiniz onu anlayamadım.
Arasında boşluk yoktu ama ben yolun başlangıç ve bitişlerine fazladan bir tırnak koydum hata verdi.
 
Üst