Bayrağımız
http://www.guroldemir.com
Meslek sahibi olmak bir köye sahip olmaktan daha iyidir.
Benjamin Franklin
::: 4 Şubat Cumartesi ::::::29 Nisan 2005'den beri 86.352.846 ziyaretci, 2473 günde ortalama 34.918, şu an 99 kişi:::
Programlar | Hesaplamalar | Makaleler | Visual Basic | Sitene Ekle | Kaybettiklerim | Albüm | Mesaj Defterleri | Linkler
Sisteme active-x (ocx) kaydı
     Gürol Demir
     Vergi Denetmeni


     Visual basic ile yapılan programlarda ocx kullanmış iseniz bu programların başka bilgisayarlarda çalışması için ciddi bir sorunla karşı karşıyasınız demektir.
     En iyi çözüm gibi görünen yol; programın visual basic ile gelen "setup wizard" kullanılmak suretiyle taşınmasıdır. Ki bu da gerçekte 10-100 Kb gibi küçük bir boyutta bulunan programlarınıza ek olarak 1.400 Kb boyunda çirkin bir ek demektir.
     Eğer ocx'leri hedef sisteme kaydettirebilirseniz bu sorundan kurtulursunuz.
     Bunun için ise kullanılan yöntemlerden biri visual basic ile birlikte gelen "regsvr32.exe" dosyasını kullanmaktır. Bu program kendisine parametre olarak verilen ocx dosyasını sisteme kayıt işlemlerini yapar. Tam kullanımı için dos satırında "regsrv32 /?" komutunu kullanabilirsiniz.
     Ancak bu yöntem de -hedef bilgisayara "regsrv32.exe" dosyaının taşınması- profesyonel bir yaklaşım olmaz. Aslında her ocx içinde kendi kendini sisteme kayıt ettirme ve sistem kaydından çıkarma yordamları vardır. Bu yordamları kullanmamız gerekir.
     Her ocx dosyasında; sisteme kayıt için;
     DllRegisterServer Lib "Ocxismi.Ocx" () As Long

     Ve sistem kaydından çıkarmak için;
     DllUnregisterServer Lib "Ocxismi.Ocx" () As Long

yordamları bulunmaktadır.

     Örnek olarak; visual basic grid kontrolü kullanarak yaptığımız programı başka bir bilgisayara nasıl taşıyacağımızı görelim (Bu örnekte takıldığınız konuları dökümanlar ve api örnekleri bölümünde bulabirsiniz).
     1) "MsFlxGrd.Ocx" dosyasının içinde olduğu bir resource dosyası oluşturup bu dosyayı projemize dahil ediyoruz.
     2) Programımız bir form ile başlamıyor. Bunun için bir modül ekleyip bu modüle bir "sub main" yordamı ekliyoruz. Project/Properties menüsünden "startup object" olarak "Sub Main'i" seçiyoruz.
     3) Projeye ikinci bir modül daha ekliyoruz. Bu modülün amacı ocx'i sisteme kaydettirmek veya gerekirse silmek. Bunun için neden ikinci bir modül gerektiği konusu önemli. Çünkü biliyoruz ki "MsFlxGrd.Ocx" dosyası hedef bilgisayarda yok. Bu nedenle "MsFlxGrd.Ocx" kullandığımız her kod parçası hata verecek. Bunu önlemek için "Sub Main" yordamanın olduğu içinde "MsFlxGrd.Ocx" dosyasından hiç bir şey bulunmayan bir modül herşeyden önce çalışacak, Bizim ocx dosyamızı resource dosyadan söküp windows/system klasörüne kopyalayacak. Bundan sonra bu ocx'i sisteme kaydettirecek ve daha sonra programın ana formunu gösterecek.
     "Sub Main" içinde ocx sistem klasörüne kopyalandıktan sonra Ocxkaydet fonksiyonu çağrılmalıdır. "OcxKaydet" fonksiyonu ise ikinci modül içine; aşağıdaki gibi yazılabilir.
Private Declare Function DllRegisterServer Lib _
"MsFlxGrd.Ocx" () As Long
Private Declare Function DllUnregisterServer Lib _
"MsFlxGrd.Ocx" () As Long

Sub OcxKaydet()
    DllRegisterServer
End Sub

Sub OcxSil()
    DllUnregisterServer
End Sub
     Tekrarlamak gerekirse; program bir modül ile başlamalı, bu modülde ocx'e ihtiyaç duyan hiç bir kod parçası bulunmamalı. Bu modül ortamı hazırladıktan sonra ocx'e ihtiyaç duyan diğer modül veya formlar çalıştırılmalıdır.
:: Bu sayfaya 5.283 kere bakıldı ::
  Ana Sayfa  |  Giriş Sayfası Yap  |  Favorilere Ekle  |  İletişim  |  Tavsiye Et  |  Yönetici Girişi  |  Hakkında  
© 2005-2012 Gürol DEMİR.