meraklısına Visual Basic ile Programlama Visual Basic'te Kısa Kısa Uygulamalar Visual Baiic kullanarak yazmış olduğunuz programlara ekleyebileceğiniz bu kısa kod parçaları, programlama sırasında çeşitli konularda ve takıldığınız noktalarda size yardımcı olacaktır. VcımUÜp öijlu r-: -&tKJ3.tCSlJf Bu ay ver lar arasu Netwoti kapatılma.*ı! ekras lımması gibi İ ilmi ç vereceğimiz örnek kodda Rcgisrıy, Internet ve narindeki biigisayar.r, koruyucu şifresinin bu-kodlar da yer alıyor, l-Network üzerinde bilgisayarların kapatılması Bu ü 3X 'rt.ııı son siı:iii'i" k..ı',:i ram Vli sürümle ı allında çalışabiliyor ve gerçekten de cgır yetkileriniı kısıtlı de-ar; kapanmaya zorlaya ıı önce aşağıdaki tanını- karşı biigisa biliyor. Bunun iç lamaları yapman? gerekiyor (tablo 1). Aşağıdaki kod İm, programın ana kısmın; oluşturmaktadır Gerekenler karşı bilgi-linmcsidİr. Kod başarıu savarın isminin h ise I değen gen döndtirceeklir •tablo 2). 2-Internet'e bağlantının sıra-dışı bir yöntemle kontrolü Kullanıcının ti madiğim kontrol Üstelik bunun ya da bir OC\ Çünkü işlem değişik bir şekild jiyor. Kodu kıı bîr proje açın. I;> şu ekleyip aşagıd yapıştırın. I Itıpsi vernet'e bağlı olup ol etmenin basit bir yolu. İç n hiçbir ştıkildc bir Al'! h uilanılıııası gerekmiyor. ntımeıı ^>!:cll komutunun kullanımı ile gerçekle anabilmek için önce yeni ı'a bir Corıımand ttı- İS kodu da bunun içine >u (tablo 3). Özetle... • Netvvork üzerin* kapatılması • Regİsuy ve hıer et kaç ilginç kod • Ekran koruyucu Basic kodlarıyla ?'J.C \M~.l\-J bir bilgisayarın üzerine ij if resinin V&uai c ğrenıimesı 3-Sevi!en Internet sayfalarının kaydedilmesi Bu uîâcık kod boyundan büyük İŞİCT başararak herhangi bçğendîğJnİZ bir Wcb sayfasını Wİndows^un ana Bavoıitcs list"i:ıe (Sık Kullanılanlar) ekleyecektir. Kodu çalıştırabilmek için önce veni bîr proje açın. Sonra bir Tex:box *e Com-nıand iuşu ekleyin. Bunun Capuou'uıı 'S-Add io Pavorites* olarak değiştirin. Aşağıdaki kodu cia programın. Dcclarati-on bölümüne ekleyin ve çalıştırın. To\t-bo\ içine yandığınız her URL Commaııd tuşuna bastığınız, zaman listeye eklenecektir 'tablo 4). 4-VB altından Registry üzerine istediğiniz herşey Aşağıdaki kod u/un olmasına rağmen gerçekten Kegisıry ile ilgilenenlerin ol- dukça işine yarayacaktır. Programın başında yer alan uzun tanımlamalar Re-gisiry'dc rahatlıkla değişiklik jrapmartızı sağlayacak fonksiyonları ranımlamay.ı yarar. Akabinde bı: kodların kultaıım-r:; yönelik örnekler bulabilirsiniz (tablo 5}. Eğer yukarıdaki tanımlamaları doğru olarak girdiyseniz Rcgistıy den anahtar oku -mak için CîctKcy fonksiyonlum kullana-bilırsıııı/. l;nııksıvonur. genel forman: SetKeyfhKey, aKayMame, İValueKöas) Omck kullanım şek!) İse şöyledir: return - ÛetReytHSEV_LOCSI._HftCBÎ-HE, :iofr.ware\Hicrı>sof-\v;ir.- dows\Currer.rVersion\", "Prcduc-t-Key"l Sonuç olarak lisan anahtarında ne yazıyorsa o dönecektir. Aşağıda bununla ilgili bir örnek kod yer almaktadır. Benzer şekilde diğer tbnksiyonian da kuilanabi- Private Declare Fur.ct.lor, initiatfiSYSt.ftPSVat.down ıdb "acvapi32.dU" Ali-as "Ir.itiatsSys-er.ShutdowrJıl (ByVal IpMachir-eSarne As String, ByVal IpMessaçe as String, ByVal dvrınseouî. As mteçer, fcyVa! bFsreeAppsClosed As Long, SyVal bKebootAfterShıiKİcm As Lcngj As Loıig PrivaLe Deciare Furıction AbortSyst.emSîmtdown Lib 'şdvapi32.dll" Alıas. 'Abor^SysıezShütdovrjr (ByVal 2pXachıneSane As .String> As Lor.g Tablo 1: Bilgisayarların kapatılması ile İlgili tanımlamalar. Public Function ShutDovnCcreputeriCompKame as String, MessageTOUser as String, Seccr.ds*or.tilShutdovn as Lor.g, ForeeAppsclcsed ss ir.tegsr, Rebo- otAfter as tnteger} EhutDovr-Corcp-ter - :nıtiate5ystfiwS!ıutdcwn(Cop,pîlame. KessftgeToUsar, Se- cnndsöntilSraıtriowıı, ForceAppaCloaed, RebootAîter) End Function Public Functıcn AtortS^uteowrı(Coıplİene as Strino) AbortShutdövn ¦ Abot tSys tftmShut.dfiwn (Comttamu ı End Function Tablo 2: Yukarıdaki fonksiyon başarılı ise 1 değeri çer1 döndürecektir. Şubat 2C00 Uisual Basic ile Programlama , mı İraklısına lirsiniz (tablo Ö). Private Sub coıt™andl_CIick( J Rtgisiry içinde herhangi bir aııahtaj 'Dûsya yekaa oluşturur atamak için ;sc .Ser Key fonksiyonu kulla ShaU f'carriMnd.com /c echo D > Teftt.txt''), vbilide ı: ilahi lir. Dim FileFile As Tnteger Fonksiyonun genci forman: Dim TestStrir.g AS Strİlly setKeyIhKey, sKcyHame, lvalueSame, 'Isjtcdîşinıa bir sunucuya 2 ping gönderip. sonucu bir dos; aya kaydeder. vvaluesettins) Örnek kullanım İekli İse şöyledir: TestStrmg - "plnc -n 2 ww.chı?.con.tr > Test.txt" tıieFils = FreeFile BJV1 dosyasını yaratır rotum = Se=Key(HKKV_LüCAL_KACHr- ûp*n (App-Patb fi "\Test.bat') For Binary As FileFile *12, "Sof r-rareM-iicrosef t\windcws", Pul. #FilİPllİj , ToStString "Chiprl", "Tt-ue") cltfse FileFile Sı nıaçta geriye birşey dönmeyecek chcîck:: uma analılar RegsstryVe yazılacaktır, Snü Sub 5-Registry'de kayıtlı tüm Private Sub CheckîT*) ISS isimlerinin okunması 'BAT dosyasın! calistirir Bu k>Kİ sistem Re.psrry'sinc ulaşarak Shsll ("ccOTaand.com /e Test.bat'), yÖBİâş bilgisayarda kayıtlı tüm ISS'leriıı isimleri BAT dnsyasi halen 203 byte'in aitinda ise devan, eciyoru ııi alarak bunları bir ComboBos alanda 'b*j sekîlde Ping komutu sonuçlanana kadar devam ediyor lisrclcyccckctr. Tabii ki önce Form ûze rinde: hır Combo bo\ yararmıs. olmanı/ '2>*er kocat pozitif ise sonuç dosya eti asagi 400 Bytes o malıdır Do tfhile - -. ¦.•^.enrApp.Patl: 4 "\Te3t.txt") > 200 Locp 'Sonuç negatif Ese dosya 160 Byte CllRUrİndfi olacaktir ve ismini de ISS olarak değiştirmeniz ye rckcccktir. IS File:.en;App.Path & \Test.txt"ı > 201 Iher. Private Sub Form,Load{i KsgBox "Ba>j-: Sİ* :SSKara ta StTing Else Sin CurreiıtlSSlîum Aa Inteçer NsgBox "Bağlı Segil' Eırâ it Miti: Hegistryl.HREÎjrüRRE.NÎJJSER 1 Dosya boyutunu sıfırla uim Rey as csegistryKey Shell ¦;'coma-ıd.con /o echo ö > Test.txt"), vfcHİde Set Key = .KeyrSeroteAccess') 'Set The Curcent Key to HKEY_çiTR- Snd sub Tablo 3: Interneı'e değişik bir yoldan bağlamak için bu kodu den îyin. R5NT_USER\RemoteAccess Private Sub Cc-sroûjıdljriicM) Set Key = JCey.Keyı'Addrssses") 'Set The Curreat Key to HKEi_CUR- Öpen 'C:\Xindowsl:'avorites\' i TeXU.îext i '-utl' For fcinary Access ırite As #1 'Dosyayi kaydet RESTJJSER\SeîwteAcce8s\Addre3Se3 Put #1, . "£In.temetShortcut;" & vbtfewLine t. 'OTU,-' s Te* t l.*ext Clcse -1 Fer Currer.tl££îvu-: = i To Key.h'oC-f- H3gBox 'URL basan ile kaydedildi.". vbInforxation Values ' Bunun kac kere yapilaca^i- Snd Sub ni bildir ISSHemct - Pey.V"alueByI.ıdex;Curren- Tabîo 4: Bu kısa kod sevilen adresleri Bookmark yapaıakur. tl3SH0B>iS4nı 'ISS ismini al Public Functior. üe!.Key(hlCey AS Long, ByVal sKeyKace, 3yVa iyal^iftuı) TSS.AddTtem TSSÎlentC ISS in isroi- Dim re:.v^:s, -.SubSoy As Long, dwType As Long, SZ ab f^ng, /S, : Aa Long tü Combo 8ox'a yerleştir retvnlS = " llext Sun anahtar ali-ana kadar ia- t RegOpenKeyEx(hxey, sKeyMame, 0, SESallciassss, hsub :ey! deni tekrarla If r >> E3S03_SUCCESS Then Goto Cikls £nd sich sa B 256: vS - St.rlngŞfSZ, 0) ISS.TeXt - ISS.List{C) ' Ccrio r = SegQueryVİluetx(hSubKeyr lValueKane, 0, d'-Tyce. SyVal v$, S2| Sox'in metnini son ISS olacak de- il ı * EB20K SUCC2SS And dvType ¦ REG_SZ T>,er. ğiştir. retvals - LeftjvS, Si - l\ 2nd Sİb Else retvalS = "¦ 6-Ekran koruyucu şifresini End i: öğrenmek istemez misiniz? Aslında bir defe bilgisayarı Resct'ledik- îf nİey = 0 Then r - ReşCloseKey(llSubKey! Cikis: ren sonraki açılışında henüz ekran koru GetJtey = retvalS End Function yucıı devreye girmeden ayarlarına gaip şifreyi lievcre dışı bırakmak kolay. Ancak Şubat 20O0 Tablo 6; Reçisi-y'den bilgi almak için gereken kod. > EBB 24îi Visual Basic ile Programlama Declare Fu.icti.oii RegCioaeKey Lib 'advapi^J.OH" (ByVal Declare Funct eîlarce As Stı >gj M Long Declaro Function Regöner,KeyEx Lib 'advapi32.dll' Rİİ&a "ReşOp^nKeyEKA" (ByVal hKey As Long, ByVal IpSııbKey As String, ByVal ulOptlons As Long, ByVal saıOesireü As Lo:;g, pLliFe^H As '..or.ç\ As Long Declare FuncI ion RegQuKryValueEx Lib "advapİ32.dir' Alias "RegUueryValoeE^A" (3yVai hKey A9 Long, ByVal IpVa-luetiame As Slring, ByVai lpReserved Aa Long, İpType As Long, IpData Aş ftny, lpcbData As Long) As Long Declare PunctjiOn RegCreateKeyEK Lib "advapi32.dll" Aiıas "RegCteaceKeyEKA" (ByVat hKey As Long, ByVal IpSub-Key As Strinc , ByVai resvrved An Long, ByVal IpClass As String, ByVal dwOptiot!S As Long, ByVal samDesirc-ti As Long, İpSecuıityAttributes As Long, phkReeult Ab Long, lpdwî>.l6p0*İtİ0P, As Long) As Long Declare Functjion RegCreattıKcy Lib "advapi32.dİ*-" Alias "RegCreateKayEKÂ' (ByVoi hSey Aa Long, ByVal IpSııbKey As Srring, ay Jal resfirvad As Long, 3yval IpClass As String, ByVal dwİptionfi Aa Long, ByVal samDesired As Usng, İpSecurityAttribııtes As Long, phkResult As Long, IjKivOisıposıi Lion As Löngj Aa Long İ0.1 RegSetValueEa Lib "advapi32.dir Alias ng, Dyva; resecveıl Aa Lor.g, ByVal dwType As "HagSotValıifiBKıV (ByVal hKey As Long, ByVel ipValu-Long, IpOata ab Byte, ByVai cbtata As Long) A;. EOftg Declare Func ton R^gSetValueSxString Lib 'advapi33.dll" Alias p3egSetvaiııei;xA" |ByVal hKey As Long. ByVal lpValueNaıno Aş String, ByVal reserved As Long, SyVol dwTypt? Aa Long, ByVal Ipvalue As String, ByVal CbBata As Lo::g) As ong Declare Func-i İueüame As s Long Declare pone As String) ton SegSetValueSKLc-ng Lib 'advapi32.dll' Alias "Re^tValŞeBsâ' (ByVal hKey As Long, ByVöl İgVâ-ring, ByVai reaervec Aa topfj, ByVal aVTypo As Long, Ipva'ııe As Long, ByVal cbData Aa Long) Aa HegDeleteKeyi Lib 'advapİ'JZ.dll" Alias 'RegDeleteKeyft" (ByVal hKey As Long, ByVal İpSubKcy Declare Funciion RegÇeleteValuei Life •adva.pi32.dii" Aliaa 'RegDeleteValueA' {ByVal hKey Ab Long, ByVal IpVa-lueNafşo As S'.rfng) Public Const Public Const Public Const Public Const Public Const .!'iı; _l: Const ¦Ufc C Cor,çt ?iiî:. \.~. Const Const REG OP Const REG SZ onda hangi şifi ediyorsanız bu n/.ır.caol.\n kod fcecek, uk başta) modüle yerleştir 7-Bir HTTP bağlantının Bu kod bağla aucudao bir (401) li.ii.isi dö HKEY_CLASSES_RCOT ı &H8ÖÖ&0OÛÖ RKEy_CURRBNT_C0NPr.6 - SB8000ÛOCS BRR1 EBHRBSE '.ISER - &H8Ö3ÖO0CI aKEÎ DVh BATA *ı ftHBOOOOOafi HKEY LOCAL.KACHTHB ¦ frH8Ö&0ÛÜÖ2 &KEY PERFORKANCBJÎATA ¦ &H8şOÛCÜC4 HKEY USERS - fcH800Û0003 ERROR_SUCCESS - ÜS ION_raK_VOLATlLS - İOÛ Const KEY_AL1 _CLASSES As Long - 4HF00S3 Const KEY_AL1 ^ACCESS - SH3F As Long Tablo 5: Rcgistty'e erişebilmek iciıı gerçeklen uzun tanımlamaların yapılması gerekiyor. ¦ııın ver .ildiğini merak kır.unda acıdaki halli' .1 yazıp denemem? gerc-er alan lanınılaıııalan biı ı(rabloK). sunucuya kontrol edilmesi ıılıııak istenen karşı Mı authentieation failed" itin döıımr'di^ini koni rol edecektir- lürij; iç3n sadece karakter .li/isi olarak Su men, kullanıcı ismi ve jjrrcnİKİn ^irilm ".si yeterli olur. Sonuçta ?A? \M~A\-1 genye Ttuc ya da l'alse değerlen döne tektir. Kodun duğru olacak ealtjabilmc-sı için 'Microsoft Internet Transfer Protoeol ö.O'uı (MSINET.OCX) lor-rhunuza eklenmiş olması gerekir Kıını: ekleyebilmek için araç s'ubuğu tticriûc sag. rıış ile tıklayıp oradan Önce ">>ııvı-poneııis" dalıa .soma da 'Mıerosofı In-itrııet Transfer Protocol 6.1)" sekenesinin isareilenmesi ittrekir. H Functinn connectToKerver> scriierv6r As String, strlTsemame Aa String, strPaas-rford As su-ing) As aoolear, Diı recleved As String Inetl,?assword - atr?assword Ineti.UBftrKame - strfafirnare ruciev&d " Ineti.Opt*nnnı,(ı;trSer- verj Xhile Inetl.StiilExecuting - True 'ݦend If (İnSırırecieved. "401 Authori- zacion Required") o 0ı Thcn Conr,ci:ro!;srver - î'alse Else ConnecıroServer - Trus End If End eynetior. Şubat 2Ü0C Visual Basic ile Programlama ftfctfcifcate VB Hare *= "JicdJİei" Public Const R3RD_C0KTR0T. ¦ SB20000. Public-Con*t STAfcDARD RİGHr.S_READ ¦ (HÎÎAD_COBTROL) Bu&lin corsl 5raMI)AR[>_RIGBKt_İKtîB = IREAD_COKTRor.) PublİC COîîSt KESjaBBfiî VALUE - &Hİ Pyötic Const R£Sr$ff£_¥XI$B - (>H2 Public COOSt K6Y_CWMTE.SÜS_KSY = İKİ Public Const KEY_EN0MEKATS_S1!B_KF,YS = bH8 Public Consr KEY KOÎIFY = İKİO Public Conat KEY_CSF.ATE;_LTîlK = AH20 PublİC Const SYNC3K0NIZE = SHIuuuÛO Public Const 5TAriDARIiğRIGHTS_ALI. - SHltr::: PubiiC Const K2YR3AÛ = {(STANDAFtD_BIGHTS_SBA1 Or KEY..ÜUfcRY_VALUE Or KKY_EKÇME3ATE SIIB KEl'S Or KİY JJOTIFY) And (ÎJot SYKCKROKTZE)) PublİC COtlSt KBY^ITE = I{STAHfJA80_RIGHTS_H?rTE Cr KEY SET_VAL*J£ Or KEY CREATE_S>;B_KEY) And (Not SYHCHHONI- ÎBJJ Public Const KEY_ALL_ACCESS - ((STAJIDARa_RH!HTS_AIX Ör KEY_OUEaY__VALDE Ol KEY SET VALUS Or KEYJJrBATB^SUBJCEY Oe KEî_ENUMERArE_İi;/D_KEYS ör KBJ t&ş&İ Or *=; _CRHATS_!. 1NK I And (ıOt 5YNC5B0BIZE)) PUbl^G Cocst KEY ENECUTE * >(KEY RHAÎ1J And [Kot SYRCBRONIZElj PgbliC Const ERROR.SUCCESS - 06 Deelare Function Reg0pe:ıXoy2>: Lib "arfWapi32'.dİ.X" Aîias "RegüpenKoyRsA" (3yVal lıKey Ae Long, ByVa] İpSubKej String( Gyval uİCption? 7ıiı Long, ByVal samDasıred As Loeg, phkResLLt As Long) Ab Long PöCİarö Functioii RegOueryValueEx Lib 'advapi Î2.ı:: |' A1İŞ9 "•tcgQuery\Talue£xA' (ByVal nRey A-a Lone iB#Name As Stritıg, ByVal IpReserved As Long, lpType Aa Long, lpDatû As Any, IpcbData As Lor.ç) Declare FUaCttûn RegCloaeKey Lib 'advapi32.dll" (ByVal hKey Aa Longı A3 Long Tanı-I asi ardan sonra aşağıdaki kodu kullanarak Registry kaydından bu değeri okutabilirsiniz. Fucctior. sd&Ge-t5eç£ntry>atE:>sy As strinç, strSubKeys As Stıing, strV'alName As String, lngType| Striııg Oş Frror Goto sdaGetRegüntry Err Dim İngResıılt As fcBÜg, IngKey As Long Din IngHandle As Le"g, İngcbDatu As Long Dini strRst As String Soluct Case strKey Case 'HKEY CLASSES_RCOT"s İngKey ¦ SHÖOOO&OOÛ Case *HKEY_C0RFENÎ.C0NHG": IngRey = 6H800C0005 Case 'UKEY_CURFENT_üSESl'ı ingEey = SBSÖÜOşşöl Case "iJKEY DYN PATA": ] ngKoy = SHSDDDOşOÖ Ca30 "HKEYJ&0Cft&jWM9JSB' : iogKey İ SH800C0002 Caae ,'aKEY_PERFOB>lAt>CS_ DA'A": İngKey - İHÖ000ODD4 Case *3KSSj;SERS*: İngKey - İH8OCCG0C3 Case Else: Bxtb Furtctioıı Rnd Select If Not ERROR_SIfCCESS - RegOpcnKeyEx: Ir.gSey, strSubKeys, DK, RSV..Rfc'ftl>, IngHandle) Tnen Esifc Fur "iiüRösuU = RegQueryValııeSxI IngHandle, atrValName, 0s, IngType, ByVal strReb, İngcbDaea) strRet = üpaceşngcbBataf lngaosult = aegOuer'/ValueEx;l"alfandle, strValHaBe, 0S, İngTysı, ByVai stcRet, İngcbtataı If Kot. ERRQR_SUCCES5 = ReçCioseSey(lngIlanJle; Thftft îngT'ype = -İS sdaGet3cgE;ıtıy ¦ strRet sdaGetRegEatry Esitî On Ettor Goto 0 Exit Function sdaGetRygEntryErr: l.ıcType = -İt Ksç&oj: Err s *> ' t. KrrocS, 16, "GenUtUs/'sdaGetRegEntcy" Resume sdaüetRegi:n,.:'V Eİttt End Function Tablo 8: Bir önceki sayfadaki tanımlamalann devamı... Şubaî 2000 , Byvİl lpva-Long As long) As :ion r^TT=3 ?.ir>'