9. ACTIVEX BILEŞENLERİNİN WEB SAYFALARINDA KULLANILMASI
9.1. GİRİŞ
İnternet teknolojisi, artan derecede karmaşık ve programlama yeteneğini gösterme konusunda bir çok farklı yol sunmaktadır. Visual Basic ile internet için programlar yapabilmenin yanısıra, internet teknolojisini kullanan karmaşık uygulamalar gerçekleştirme olanağı vardır.
Uygulama geliştirme ortamı olarak İnternet
İnternet, global, merkezileşmemiş ve TCP/IP standardına dayanan bilgisayar ağıdır. İnternet teknolojisini yerel ağlar için de kullanmak mümkündür. İnternet için ActiveX bileşeni hazırlarken biraz farklılıklar vardır ama yine metotlar, özellikler ve olaylar sözkonusudur.
İnternet bize daha rahat bir çalışma ortamı içinde program yapabilme olanağı sağlar.
Örneğin,
İnternet uygulama geliştirme ortamı olarak düşünüldüğünde bir istemci/sunumcu ilişkisi vardır. Burada istemci/sunumcu kavramları aktif ve statik olarak vardır. Aktif kesimler sunumcu görevi görür ve dinamik bir yapıya sahiptir. Statik kesim ise pasif olarak işler.
Bu iletişimin
olmak üzere 4 farklı biçimi vardır.
İnternetin iki ucundaki programların iletişimi olan bu iletişim aradaki bilgi alışverişinin düzeyine göre sınıflandırılmıştır.
ActiveX bileşenlerinin Web sayfalarında kullanılması
ActiveX bileşenleri kullanıldığında web sayfalarının özellikleri önemli ölçüde artar.
HTML ve VBScript kullanırken ActiveX kontrol nesnelerini HTML sayfalarına eklemek mümkündür. ActiveX kontrol nesneleri HTML sayfalarının işlevlerini artırır.
Bir ActiveX kontrol nesnesinin işlevi HTML ve VBScript kullanarak da gerçekleştirilebilir.
9.2. KONTROL NESNELERİNİN YUKLENMESİ
Bu bölümde kontrol nesnelerine internet özelliklerinin eklenmesi ve kontrol nesnelerinin yüklenmesi (downloading) konu edilecektir.
Visual Basic ile yaratılmış ActiveX kontrol nesneleri zamanuyumsuz özellik değeri yüklemeyi destekler. Örneğin bitmap içerebilecek bir Resim özelliği, UserControl nesnesinin Hyperlink özelliği, belirtilen bir URL adresine bir tarayıcı yardımıyla geçişi sağlar.
Bu özellikler kontrol nesnesi, bu tür işlemleri destekleyen bir form içine konduğunda geçerli olabilir.
Bir uygulama gerçekleştirirken kontrol nesnelerinin özelliklerini hem zamanuyumsuz, hem de PropBag kullanarak yüklemek gerekebilir.
Zamanuyumsuz Yükleme
Bir kontrol nesnesinin bir özelliğini zamanuyumsuz olarak yüklemek için AsyncRead metodu kullanılır. Bu metot, bir kontrol nesnesi bir form üzerine yerleştirildikten sonra herhangi bir yordam içinden çağrılabilir.
Bu metot yordamdan dönüşün hemen, özellik değerinin yüklenmesinin ise geri planda olmasını sağlar. Kontrol nesnesinin özelliğinin yüklenmesi bittiğinde AsyncReadComplete olayı meydana gelir.
Şimdi zamanuyumsuz yükleme özelliğini kavramak için aşağıdaki örneği inceleyin.
Project Name Resim
UserControl Name ctlRes
PictureBox Name res
Option Explicit
Dim mKaynak As String
Property Get resim() As Picture
Set resim = res.Picture
End Property
Property Let resim(ByVal deger As Picture)
Set res.Picture = deger
PropertyChanged "resim"
End Property
Property Set resim(ByVal deger As Picture)
Set res.Picture = deger
PropertyChanged "resim"
End Property
Property Let uResim(strDeger As String)
mKaynak = strDeger
If UserControl.Ambient.UserMode And Len(strDeger) Then
AsyncRead strDeger, vbAsyncTypePicture, "uResim"
End If
PropertyChanged "uResim"
End Property
Property Get uResim() As String
uResim = mKaynak
End Property
Private Sub res_Resize()
If res.Picture <> 0 Then
UserControl.Width = res.Width
UserControl.Height = res.Height
End If
End Sub
Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
Select Case AsyncProp.PropertyName
Case "uResim" Set resim = AsyncProp.Value
End Select
End Sub
Private Sub UserControl_InitProperties()
Set resim = Nothing
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set resim = PropBag.ReadProperty("resim", Nothing)
End Sub
Private Sub UserControl_Resize()
If res.Picture = 0 Then res.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "resim", resim, Nothing
End Sub
Bu kod ile UserControl nesnesi için resim ve uResim adlı iki özellik eklenmiştir. Bu özellikler PictureBox kontrol nesnesinin göstereceği resim ve resim dosyasının adını belirlemeye yarar.
Option Explicit
Private Sub Form_Load()
ctlRes1.uResim = "file://" & App.Path & "\clouds.bmp"
End Sub
Private Sub Form_Paint()
ctlRes1.Left = 0
ctlRes1.Top = 0
Width = ctlRes1.Width + 100
Height = ctlRes1.Height + 400
End Sub
HyperLink nesnesi
HyperLink nesnesi UserControl nesnesinin HyperLink özelliği aracılığıyla erişilen bir nesnedir. Bu nesnenin üç tane metodu vardır. Bunlar GoBack, GoForward ve NavigateTo metotlarıdır. Bu metotlar, ancak Web browser gibi görev yapan bir nesne içinde iken geçerli olur. Diğer durumlarda bu metotlar ihmal edilir.
Örneğin bir form üzerine içine aşağıdaki kod olan bir UserControl nesnesi eklendiğinde Internet Explorer kullanılarak belirtilen HTML dosyası açılır.
Private Sub UserControl_Click()
Hyperlink.NavigateTo "c:\windows\desktop\faq.htm"
End Sub
9.3. KONTROL NESNELERİ İÇİN MAKRO (SCRIPT) HAZIRLAMA
Bir HTML sayfasında kontrol nesnesi <OBJECT> ve </OBJECT> yazıları arasında belirtilir. HTML dosyası işlenirken, kontrol nesnesi yaratılır ve yeri belirlenir. Bu ifade eğer <PARAM NAME> ile başlayan ifadeler içeriyorsa, burada belirtilen özellikler kontrol nesnesinin ReadProperties olayına, standart PropBag nesnesi kullanılarak aktarılır.
HTML dosyası aktif hale geldikten sonra, nesne olayları ile ilişkilendirimiş olaylar kullanılarak da nesne özelliklerinin değerleri değiştirilebilir.
Application Setup Wizard programı kontrol nesneleri için internet setup programları oluşturmayı kolay hale getirir.
Visual Basic kontrolleri, sayısal imza, güvenli yaratma ve güvenli makro oluşturma özelliklerini destekler.
Visual Basic makrosu kullanarak kontrol nesnesinin web sayfasında kullanılmasına örnek olarak aşağıdaki HTML kodu verilebilir.
<title></title>
</head>
<body>
<p><object id="ctlRes"
classid="clsid:9FBCEE2D-03C7-11D2-A252-8CBC08C10000"
codebase="Resim.CAB#version=1,0,0,0" align="baseline" border="0"
width="193" height="150"><param name="uResim"
value="c:\clouds.bmp"></object></p>
<p><input type="button" name="cmdAc" value="AC"> <script
language="VBScript"><!--
Sub cmdAc_Click
ctlRes.uResim="file://c:\clouds.bmp"
End Sub
--></script> </p>
</body>
</html>
9.4. GÜVENLİK
Kontrol nesneleri HTML sayfalarında kullanılırken, kontrol nesnelerinin bu sayfayı ziyaret edenlerden saklanması, izinsiz olarak kontrol nesnelerinin kullanılması engellenmelidir. Bunun için:
Kontrol nesnesinin yaratıcısı olarak onun kötü amaçlarla kullanımını engellemek de bize düşmektedir.
Aşağıdaki işlemlere izin veren kontrol nesneleri makrolar için güvenli değildir:
Onu başkalarının kullanmasına izin vermeden önce bir kontrol nesnesinin makrolar için güvenli olup olmadığını test etmenin en iyi yolu, kontrol nesnesinin tüm özellik metot ve olayları ile erişilen tüm dosyalar, Registry elemanları ve WinAPI fonksiyonlarını bir çizelge halinde hazırlamaktır.
Daha sonra bu çizelge dikkatle incelenmelidir.
Güvenli yaratılabilme özelliğine sahip olmayan kontrol nesneleri, kötü niyetli web tasarımcıları tarafından başkalarının sistemlerine zarar vermek amacıyla kullanılabilir.
Bu tür işlemleri engellemenin en iyi yolu kontrol nesnesinin özelliklerinin alabileceği tüm değerlerin bir ön kontrolünün yapılması ve uygun olmayan değerlerin özelliklere atanmasının engellenmesidir.