Sistem yönetimi için tipik yönetim işlemlerini yapmak için yaratılan komut ya da komut dosyalarına script denir. Scriptler, Microsoft VBScript© dili kurallarına göre oluşturulur.
Scriptlerle yapılabilecek bazı işlemler:
· Lokal bilgisayar üzerinde ve Active Directory üzerinde nesneler yaratmak için scriptler yazılabilir. Rutin işlemler bu şekilde toplu olarak yapılabilir.
· Yazılan scriptler logon script olarak kullanılabilir.
· Kullanıcı ile etkileşimli çalışmak için kullanılabilir. MsgBox, InputBox deyimleri gibi.
·Sürülerin map edilmesinde kullanılır.
Scriptler, NotePad gibi basit bir metin editörü aracılığıyla yazılabilir. Onun dışında çok sayıda program içinde de script yazılabilir.
WSH (Windows Script Host)
Windows Script Host, scriptlerin çalışması için bir ortam yaratır. Diğer bir değişle değişik script dillerini destekleyen script enginidir. JScript ve VBScript’i destekler. WSH sayesinde yazılan script’ler Windows ortamında çift tıklanarak çalıştırılır.
Değişken Tanımlamak
Script içinde değerleri temsil etmek için değişkenler (variables) kullanılır. Değişkenler farklı türdeki bilgileri temsil etmek için tür tanımını da sahiptir.
Değişken tanımlama:
Dim değişkenadı
Örnek:
Dim ornek
ornek adlı bir değişken tanımlar.
Script örneklerinde genellikle daha standart olsun diye str ile başlayan değişken adı kullanılır:
strComputer
strDomain
strdcbaglanti
Değişkenlerin dışında Const deyimiyle sabitler de tanımlanır:
Örnek:
JOIN_DOMAIN değerine 1 verilir.
Const AD = “cozumpark”
AD değerine cozumpark değeri verilir.
Nesne Tanımlamaları
Değişkenlerle birlikte WSH’dan bilgi almak ve işlemleri yaptırmak için ilgili nesneleri tanımlanması ve ilgili değişkenlere atanması gerekir. Bu işlem için genellikle Set deyimi kullanılır.
Örneğin Active Directory’ye erişmek:
Const JOIN_DOMAIN = 1
GetObject(“LDAP://OU=bilgiislem,dc=ceyhuncamli,dc=com“)
Lokal sisteme erişmek:
GetObject(“WinNT://” & strComputer & “/Administrators”)
Dosya sistemine erişmek:
CreateObject (“Scripting.FileSystemObject”)
Dosya işlemlerin örnek olarak, aşağıdaki script bir dosyayı siler.
Dim fso
Set fso = CreateObject (“Scripting.FileSystemObject”)
Fso.deletefile (“c:\data.xls”)
VBScript Veri Türleri
VBScript’in tek bir veri türü vardır. Bu da Variant’tır. Variant, özel bir veri türüdür ve değişik türdeki verileri (sayı, karakter dizisi gibi) verileri içerir. Variant tek bir veri türü olduğu için bütün işlevler tarafından da döndürülen veri türüdür.
Variant bütün veri tiplerini içeren ve aynı zamanda uygun biçimde kullanılmalarını sağlayan bir veri türüdür. Aşağıdaki tabloda Variant veri türünün içerdiği alt veri türleri yer almaktadır:
Tablo: Variant veri türünün içerdiği alt veri türleri
Alt Türler = Anlamı
Empty : Değer atanmamış. Sayısal verileri için sıfır, karakter değerleri için ise sıfır uzunluklu ” ” değerdir.
Null : Boş veri.
Boolean : True ya da False içerir.
Byte : 0 ile 255 arasında değerler.
Integer : -32,768 ile 32,767 arasında tamsayı değer.
Long : -2,147,483,648 ile 2,147,483,647 arasında sayısal değer.
Double : 1.79769313486232E308 ile -4.94065645841247E-324 arasında sayısal (kayan noktalı) değer.
Date (Time) : January 1, 100 ile December 31, 9999 tarihleri arasında tarih değeri.
Object : Bir nesne içerir.
Error : Bir hata numarası içerir.
VBScript’de Operatörler
Operatörler (işleçler) hem karar vermede ilişkileri oluştururlar hem da aritmetik işlemlerde kullanılırlar. Birçok operatörün bir arada kullanılması durumunda işlem sırası operatörlerin öncelik sırasına göre düzenlenir. Ancak ifadelerde parantezlere yer vermek işlem sırasının programcı tarafından kontrol edilmesini sağlar.
Değerler ya da değişkenler arasında toplama, çıkarma gibi işlemlerin yapılmasını sağlarlar. İşleçler +, *, /, – gibi işaretlerle kullanılır.
Kod: Tümünü seç
Dim toplam
toplam = toplam + 1Tablo: işleçler ve öncelikleri
Aritmetik
Karşılaştırma
Mantıksal
Üs alma (^)
Eşitlik (=)
Not
Olumsuz (-)
Eşitsizlik (<>)
And
Çarpma ve bölme (* , /)
Küçüktür (<)
Or
Tamsayı bölme (\)
Büyüktür (>)
Xor
Modülo Aritmetik (Mod)
Küçük ya da eşittir (<=)
Eqv
Toplama ve çıkarma (+,-)
Büyük ya da eşittir (>=)
Imp
String birleştirme(&)
Is
İfade içindeki operatörlerin eşit öncelikli olmaları durumunda; ifade soldan sağa doğru değerlendirilir.
Program Kontrolü
Kodun işletimi yazıldığı sırasıyla gerçekleştirilir. Ancak program kontrolü olarak adlandırılan deyimlerle bu işleyiş değiştirilebilir. Böylece program içinde belli kararlara göre yapılabilecek farklı işlemler ortaya çıkar.
If…Then…Else
If…Then…Else deyimi bir koşulun True (doğru) ya da False (yanlış) olmasını değerlendirmek için kullanılır. Buna bağlı olarak bir ya da daha fazla deyimin çalıştırılmasını sağlar. Genellikle koşul bir karşılaştırma ifadesiyle bir değeri ya da değişkeni diğerine göre karşılaştırır.
Koşul doğru olduğunda yalnızca bir deyimi çalıştırmak istiyorsanız, If…Then…Else deyiminin tek satırlık basit şeklini kullanırsınız: Aşağıdaki örnekte yalnızca IF ve Then kullanılmış, Else deyimi kullanılmamıştır. .
If sayac > 12 Then Msgbox “12 değerine ulaşıldı”
Döngüler
Döngüler bir grup deyimini bir çok kez çalıştırılmasını sağlar. Örneğin son kaydı buluncaya kadar dosyada veri okumak gibi. Bazı döngüler deyimleri belli bir koşul False oluncaya kadar yineler. Bazıları ise koşul doğru oluncaya kadar. Bunun dışında deyimleri belli bir kez yinelemek için de döngü kullanılır:
VBScript dilindeki döngü yapıları:
Do…Loop: Bir koşul True olduğu sürece ya True da oluncaya kadar yineleme.
While…Wend: Koşul doğru olduğu sürece döngü yapmak.
For…Next: Deyimleri belli bir sayıda yinelemek.
Do…Loop deyimlerini bir blok deyimini belli bir koşul olduğu ya da koşul sağlanıncaya kadar yineler. Ancak değişik şekillerde tasarlanabilir:
Bir koşul doğru olduğu sürece yinelemek:
Bir Do..Loop deyimindeki koşulu kontrol etmek için While anahtar sözcüğü kullanılır. Koşulu döngüye girmeden önce ya da döngü bir kez çalıştıktan sonra çıkışta kontrol edebilirsiniz.
Örnek:
Kod: Tümünü seç
Dim sayac
sayac = 1
Do
sayac = sayac + 1
Loop Until sayac > 20
Msgbox “döngü ” & sayac & ” kere döndü.”Kod: Tümünü seç
Dim Sayac
Sayac= 10
Do
MsgBox “ceyhuncamli-Scripting”
Sayac = Sayac + 1
Loop Until Sayac = 10Deyimleri bir koşul doğru oluncaya kadar yinelemek:
Bir Do..Loop döngüsü içinde Until sözcüğünü iki şekilde kullanarak bir koşulu test edebilirsiniz: Birincisi döngüye girmeden önce koşulun test edilmesi, ikinci ise döngüye girildikten sonra birinci işleyişin ardında koşulun test edilmesi gibi.
For…Next Kullanımı
For…Next deyimleri bir blok deyimin belli bir sayı kadar çalıştırılmasını sağlar. Örneğin 10 kere yapılacak işlemleri değer = 1’den başlayarak 10 kere yapmak gibi.
Örnek:
Kod: Tümünü seç
Dim i, toplam
For i = 1 To 10
toplam= toplam + i
Next
MsgBox “Toplam = ” & toplamYukarıdaki örnekte i değişkeni döngü kontrol değişkeni olarak adlandırılır. Bu değişken (i) döngünün kaç kez döneceğini ve aynı zamanda kendi değerinin de bilgi olarak kullanılabilmesini sağlar.
VBScript Deyimleri
VBScript dilinde çok sayıda deyim vardır. Bunlar şu kategoriler içinde listeleyebiliriz:
Array (dizi) İşlemleri
· Dim, Private, Public, ReDim
· IsArray
· Erase
· LBound, UBound
Atamalar
· Set
Sabitler
· Nothing
· Null
· True, False
· Empty
· False
· Nothing
· Null
· True
Program Kontrolü
· Do…Loop
· For…Next
· For Each…Next
· If…Then…Else
· Select Case
· While…Wend
· With
Dönüşümler
· Abs
· Asc, AscB, AscW
· Chr, ChrB, ChrW
· CBool, CByte
· CCur, CDate
· CDbl, CInt
· CLng, CSng, CStr
· DateSerial, DateValue
· Hex, Oct
· Fix, Int
· Sgn
· TimeSerial, TimeValue
Tarih/Saat
· Date, Time
· DateAdd, DateDiff, DatePart
· DateSerial, DateValue
· Day, Month, MonthName
· Weekday, WeekdayName, Year
· Hour, Minute, Second
· TimeSerial, TimeValue
Tanımlamalar
· Class
· Const
· Dim, Private, Public, ReDim
· Function, Sub
· Property Get, Property Let, Property Set
Hata İşleme
· On Error
· Err
Formatlama
· FormatCurrency
· FormatDateTime
· FormatNumber
· FormatPercent
Giriş/Çıkış
· InputBox
· LoadPicture
· MsgBox
Matematik
· Atn, Cos, Sin, Tan
· Exp, Log, Sqr
· Randomize, Rnd
Nesneler (Object)
· CreateObject
· Err Object
· GetObject
· RegExp
Operatörler
· Addition (+), Subtraction (-)
· Exponentiation (^)
· Modulo aritmetik (Mod)
· Multiplication (*), Division (/)
· Integer Division (\)
· Negation (-)
· String concatenation (&)
· Equality (=), Inequality (<>)
· Less Than (<), Less Than or Equal To (<=)
· Greater Than (>)
· Greater Than or Equal To (>=)
· Is
· And, Or, Xor
· Eqv, Imp
Prosedürler
· Call
· Function, Sub
· Property Get, Property Let, Property Set
· Rounding
Sözcük (Strings) İşlemleri
· Asc, AscB, AscW
· Chr, ChrB, ChrW
· Filter, InStr, InStrB
· InStrRev
· Join
· Len, LenB
· LCase, UCase
· Left, LeftB
· Mid, MidB
· Right, RightB
· Replace
· Space
· Split
· StrComp
· String
· StrReverse
· LTrim, RTrim, Trim
Fonksiyonlar (Functions)
• CDate() Bir değeri tarihe dönüştürür.
• CInt() Bir değeri tamsayıya dönüştürür.
• CStr() Bir değeri string’e dönüştürür.
• Date() Sistemdeki tarih bilgisini verir.
• DateAdd() Tarihe değer ekler ve çıkarır.
• DateDiff() İki tarih arasındaki farkı bulur.
• DatePart() Tarih bilgisinin kısımlarını (year, day, month, vb) verir.
• GetObject() Bir nesneyi belirtir.
• InputBox() Ekrandan bilgi almak için.
• InStr() Bir string bilginin diğer bir string içinde aranmasını sağlar.
• LCase() Bir string veriyi küçük harfe çevirir.
• Left() String bilgiler üzerinde, belirtilen sayı kadar soldan alır.
• Len() String bilginin uzunluğunu verir.
• MsgBox() Ekran üzerinde mesaj verir.
• Now() Sistem zamanını verir.
• Right() String bilgiler üzerinde, belirtilen sayı kadar sağdan alır.
• UCase() String bilgiyi büyük harfe çevirir.
Scriptleri Çalıştırmak
Script’ler Windows ortamında çalışırlar. Masaüstünde çift tıklanarak ya da Start/Run ortamında çalıştırılabilirler.
Script dosyalarının türleri:
Batch Files (.BAT)
Genelde bütün Windows versiyonları ve DOS ortamlarında çalışır. Logon Script dosyalar .BAT olarak hazırlanabilir.
Command Files (.CMD)
Windows NT ile gelmiştir. 32-Bit Command Processor ister. .BAT ile hemen hemen aynıdır.
Visual Basic Script (.VBS)
32-Bit Windows Command Processor ister. Windows ortamında çalışır.
JAVA Script (.JS)
Genellikle Internet ortamında kullanılır.
Scriptler komut satırından doğrudan ya da bir dosya olarak hazırlanıp çalıştırılabilir. Birkaç satırlık scriptler komut satırından doğrudan uygulanabilir. Uzun scriptler ise bir .VBS dosyası olarak oluşturulur.
Bat dosyası:
Logon sırasında çalışmak üzere bir logon Script dosyası yaratılmışsa bu dosya server üzerinde belli bir yere konur:
basla.bat
Kod: Tümünü seç
%systemroot%\SYSVOL\sysvol\domain_adı\scripts\ basla.batNET USE Z: \\sunucu\paylasim
Script Dosyaları
Script dosyaları program parçaları aracılığıyla yönetim işlemlerine yardımcı olurlar. Biraz “programcılık bilmek gerekir” diyebiliriz, ancak önemli olan temel bileşenleri iyi bilmek ve script’i basit bir şekilde hazırlamaktır. Scriptler, NotePad gibi bir metin düzenleyici programla hazırlanabilir.
Active Directory domaini üzerinde bir kullanıcı yaratan scripti inceleyelim:
Kod: Tümünü seç
Dim adi
adi = inputbox(“Kullanıcı adı:”,”Kullanıcı”)
Set OU = GetObject(“LDAP://OU=izmir,dc=ceyhuncamli,dc=com“)
Set kullanici = OU.Create(“User”,”cn=” & adi)
kullanici.Put “sAMAccountName”, adi
kullanici.SetInfoDim adi
Adi adlı bir değişken tanımlanır. Türü belirtilmemiş, varsayım tür kabul edilmiştir.
adi = inputbox(“Kullanıcı adı:”,”Kullanıcı”)
InputBox fonksiyonu aracılığıyla ekranda bilgi istenir.
adi = inputbox(“Kullanıcı adını girin:”)
şeklinde de olabilir.
Set OU = GetObject(“LDAP://OU=bilgiislem,dc=ceyhuncamli,dc=com“)
Bu satır ise; LDAP tanımı yaparak bir OU ve domaini belirtmek. Burada LDAP, Active Directory nesnelerine erişim için kullanılan bir providerdir. Lokal bilgisayara erişmek için ise WinNT provider’ı kullanılır.
Set kullanici = OU.Create(“User”,”cn=” & adi)
OU üzerinde kullanıcıyı yaratmak. Burada hem Create deyimi, hem de yine nesnenin gösterimi için gerekli kurallara uyulur.
kullanici.Put “sAMAccountName”, adi
kullanici.SetInfo
PUT ve SETINFO deyimleriyle de kullanıcı adının Active Directory veritabanına eklenmesi sağlanır.
Lokal bilgisayar için script yazmak:
Lokal bilgisayar üzerindeki işlemler için ise kullanacağımız nesne LDAP değil WinNT’dir.
Lokal kullanıcı yaratmak için:
Kod: Tümünü seç
strComputer = “SERVER”
Set objGroup = GetObject(“WinNT://” & strComputer & “/Administrators”)
Set objUser = GetObject(“WinNT://” & strComputer & “/ceyhun.camli”)
objGroup.Add(objUser.ADsPath)Active Directory scriptlerinin amacı tipik yönetim işlemlerine yardımcı olmaktır. Belki daha kolay yapmaktır. Ancak yine de yönetime biraz programcı açısından bakmak gerekebilir. Örneğin kullanıcıları bir yerden transfer etmek ve yaratmak gibi.
Administrative Script’ler
Belli yönetim işlemleri (administrative tasks) scriptler aracılığıyla yapılır.
Örnek:
· Kullanıcı, grup, OU ve diğer Active Directory bileşenlerini yaratmak, değiştirmek ve silmek.
· Bilgisayarları yapılandırmak.
· Dosyaları, klasörleri ve diskleri yönetmek.
Windows Server 2003 ailesinde iki script ortamı vardır:
· Komut işleyici
· Windows Script Host (WSH)
Komut işleyici (command processor) komutları içeren dosyaları çalıştırır. Batch dili olarak da adlandırılan bu yöntemde belli komutlar kullanıldığı için kısıtlıdır. Ancak eski işletim sistemleri tarafından da desteklenmektedir.
Windows Script Host, scriptlerin çalışması için bir ortam yaratır. Diğer bir değişle değişik script dillerini destekleyen script enginidir. JScript ve VBScript’i destekler.
Örneğin VBScript ya da Jscript komutları Active Directory Service Interfaces (ADSI) verilerine erişerek nesneleri yönetilmesini. Ayrıca Management Instrumentation (WMI) ile iletişim kurarak da sistem kaynaklarına erişmeyi sağlar.
İki script dilinin yanı sıra WSH iki programı da destekler: WScript.exe ve CScript.exe.
Active Directory’ye erişmek kullanılan yapı:
Set objOU = GetObject(“LDAP://OU=bilgiislem,dc=ceyhuncamli,dc=com“)
Bilgisayar kaydı eklemek:
Kod: Tümünü seç
dim computername
computername = inputbox(“bilgisayar adini girin“)
Set objRootDSE = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://cn=Computers,” & _
objRootDSE.Get(“defaultNamingContext”))
Set objComputer = objContainer.Create _
(“Computer”, “cn=” & computername)
objComputer.Put “sAMAccountName”, computername & “$”
objComputer.SetInfoKod: Tümünü seç
Dim computername
Dim ouadi
computername = inputbox(“bilgisayar adı“)
ouadi = inputbox(“OU adi”)
Set objou = GetObject(“LDAP://dc=ceyhuncamli,dc=com“)
Set objcomputer = objOU.Create(“computer”,”cn=” & computername,”cn=”, ouadi )
objComputer.Put “saMAccountName”, “ computername “
objComputer.SetInfoBilgisayar kaydını silmek:
Kod: Tümünü seç
strComputer = “comp1“
set objComputer = GetObject(“LDAP://CN=” & strComputer & _
“,CN=Computers,DC=ceyhuncamli,DC=com“)
objComputer.DeleteObject (0)Kod: Tümünü seç
Set objNewOU = GetObject(“LDAP://OU=muhasebe,DC=ceyhuncamli,DC=com“)
Set objMoveComputer = objNewOU.MoveHere _
(“LDAP://CN=comp1,CN=Computers,DC=ceyhuncamli,DC=com“, “CN=comp1“)Kullanıcı hesabı oluşturmak:
Kod: Tümünü seç
dim kullanici
kullanici = inputbox (“kullanıcı adı“)
Set objou = GetObject(“LDAP://OU=satis,DC=ceyhuncamli,DC=com“)
set objuser = objou.Create(“user”,”cn=” & kullanici)
objuser.put “saMAccountName”, kullanici
objuser.setinfo
objuser.accountdisabled = false
objuser.setinfoKod: Tümünü seç
Set objDomain = GetObject(“LDAP://dc=ceyhuncamli,dc=com“)
Set objOU = objDomain.Create(“organizationalUnit”, “ou=Yonetim“)
objOU.SetInfo
Set objOU = GetObject(“LDAP://OU=Yonetim,dc=ceyhuncamli,dc=com“)
Set objUser = objOU.Create(“User”, “cn=Ceyhun.Camli“)
objUser.Put “sAMAccountName”, “Ceyhun.Camli“
objUser.SetInfo
Set objOU = GetObject(“LDAP://OU=Yonetim,dc=ceyhuncamli,dc=com“)
Set objGroup = objOU.Create(“Group”, “cn=sistem“)
objGroup.Put “sAMAccountName”, “sistem“
objGroup.SetInfo
objGroup.Add objUser.ADSPathKullanıcı password’ünü değiştirmek:
Kod: Tümünü seç
Set objUser = GetObject _
(“LDAP://cn=user2,ou=muhasebe,dc=ceyhuncamli,dc=com”)
objUser.ChangePassword “Pa*ktrYH3¨, “XY*12z@trK”Kod: Tümünü seç
Set objUser = GetObject (“LDAP://cn=user1,ou=satis,dc=ceyhuncamli,dc=com“)
objUser.AccountDisabled = FALSE
objUser.SetInfoKod: Tümünü seç
Const ADS_UF_ACCOUNTDISABLE = 2
Set objUser = GetObject _
(“LDAP://cn=user1,ou=satis,dc=ceyhuncamli,dc=com“)
intUAC = objUser.Get(“userAccountControl”)
objUser.Put “userAccountControl”, intUAC OR ADS_UF_ACCOUNTDISABLE
objUser.SetInfoToplu kullanıcı kaydı oluşturmak:
Kod: Tümünü seç
Kullanici1’den başlamak üzere n tane Kullanici kaydı oluşturmak için:
Set objRootDSE = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://cn=Users,” & _
objRootDSE.Get(“defaultNamingContext”))
For i = 1 To 50
Set objLeaf = objContainer.Create(“User”, “cn= Kullanici ” & i)
objLeaf.Put “sAMAccountName”, “ Kullanici ” & i
objLeaf.SetInfo
Next
WScript.Echo “50 kullanici kaydi yaratilmistir“Kod: Tümünü seç
Set objOU = GetObject(“LDAP://OU=satıs,dc=ceyhuncamli,dc=com“)
Set objGroup = objOU.Create(“Group”, “cn=pazarlamacilar“)
objGroup.Put “sAMAccountName”, “ pazarlamacilar “
objGroup.SetInfoKod: Tümünü seç
Set objOU = GetObject(“LDAP://ou=izmirOU,dc=ceyhuncamli,dc=com“)
objOU.Delete “group”, “pazarlamacilar“Kod: Tümünü seç
Set objDomain = GetObject(“LDAP://dc=ceyhuncamli,dc=com“)
Set objOU = objDomain.Create(“organizationalUnit”, “ou=Muhasebe“)
objOU.SetInfoKod: Tümünü seç
Set objDomain = GetObject(“LDAP://dc=ceyhuncamli,dc=com“)
objDomain.Delete “organizationalUnit”, “ou=Muhasebe“Kod: Tümünü seç
Const ADMINISTRATIVE_TOOLS = 6
Set objShell = CreateObject(“Shell.Application”)
Set objFolder = objShell.Namespace(ADMINISTRATIVE_TOOLS)
Set objFolderItem = objFolder.Self
Set objShell = WScript.CreateObject(“WScript.Shell”)
strDesktopFld = objFolderItem.Path
Set objURLShortcut = objShell.CreateShortcut(strDesktopFld & “\cozumpark.url“)
objURLShortcut.TargetPath = “http://www.cozumpark.com“
objURLShortcut.SaveKod: Tümünü seç
Sub Dügme1_Tiklat()
Dim kullanici
For i = 1 To 7
kullanici = Sheets(“sayfa1”).Cells(i, 2).Value & Mid(Sheets(“sayfa1”).Cells(i, 1).Value, 1, 1)
‘ soyadi , arti adinin ilk karakteri
kullanici = Sheets(“sayfa1”).Cells(i, 1).Value
‘ adi
Set nesne1 = GetObject(“LDAP://ou=satis,dc=ceyhuncamli,dc=com“)
Set nesne2 = nesne1.create(“user”, “cn=” & kullanici)
nesne2.put “samaccountname”, kullanici
nesne2.SetInfo
Next
End SubKullanılan deyim:
Sheets (sayfa).Cells (satir, sütun)
İkinci sütundan Soyadını almak için:
Sheets(“sayfa1”).Cells(i, 2).Value
Birinci sütundan adının ilk karakterini almak için:
Mid(Sheets(“sayfa1”).Cells(i, 1).Value, 1, 1)
Kodu düzenlemek için; Excel ortamında Forms (Formlar) araç çubuğu aracılığıyla bir düğme çalışma ortamına eklenir. Ardından Assign Macro (Makro Ata) iletişim kutusu aracılığıyla yeni (new) kod eklenir.
Kaynak Site : https://www.cozumpark.com
TRWE_MMXII
YAZILIM EDİTÖRÜ (Alaydan Yetişme...!)
REASMCODERİNG
YAZILIM EDİTÖRÜ (Alaydan Yetişme...!)
REASMCODERİNG

