VB.NET - Sıkça Sorulan Sorular
-
04 Ekim 2010 Pazartesi 12:06Moderatör
Bu konuda VB.NET hakkında en sık sorulan soruların cevaplarını vermeye çalışacağım. Konu içerisinde belki aklınızdaki her sorunun cevabını bulamayabilirsiniz ancak genel olarak faydalı olacağı düşüncesindeyim. Konu yazılım geliştirici arkadaşların aradıkları cevabı hızlı ve kolaylıkla bulabilmesi için hazırlanmıştır, bizim her zaman en önemli önceliğimiz MSDN forumlarının geliştiricilerin sorularını sorup cevap aldığı,yeni teknolojiler hakkında düşüncelerini paylaştıları bir forum ortamı yaratmaktır. Bu platformu geliştirmek için önerilerinizi beklemekteyiz.
Son olarak Forumlarda soru sorup başkalarına yardım eden tüm kullanıcılarımıza teşekkür ederiz.
VB.NET Genel
- Ortak Dil Çalışma Platformu ( Common Language Runtime ) Assembly'leri nasıl yükler?
- ByVal ve ByRef arasında ne fark vardır?
- Var olan bir kontrolden (user control/kullanıcı tanımlı kontrol) nasıl kalıtım alır ve bu kontrolü toolbox'a eklerim?
- Nasıl DLL (Dynamic-link Library) gibi bir .NET bileşeni yaratır ve bunu farklı ortamlarda kullanırım?
- Windows Forms uygulamalarının performansını nasıl artırırım?
- Bir Windows uygulamasını nasıl yerelleştiririm?
- VB.NET projesinde multithreading özelliğini doğru şekilde nasıl uygularım?
- Standart bir I/O (Giriş-Çıkış) işlemi nasıl yönlendirilir?
- Seri COM Port haberleşmesini nasıl gerçekleştiririm?
- Herhangi bir dosya uzantısını uygulamamla nasıl ilişkilendiririm?
- Bir Flash dosyasını (swf) Windows Form uygulamama nasıl gömer ve bu dosyayı oynatırım?
- VB.NET ile ses veya video dosyalarını nasıl oynatırım?
- VB.NET kullanarak bir web sayfasını nasıl kaydederim?
- VB.NET Formunda herhangi bir Office dokümanını (Word-Excel vb) nasıl açar/gösteririm?
- WMI (Windows Management Instrumentation/Windows Yönetim Araçları) kullanarak bir makine üzerinde donanım bilgilerine nasıl ulaşırım?
- Sırasıyla bir PictureBox ve Image kontrolleri kullaranak nasıl resim çizerim?
- Bir resim nesnesi ile byte türünden bir dizi arasında nasıl dönüşüm yapabilirim?
- Bir resmi aynı ölçekte nasıl yeniden boyutlandırabilirim?
- VB.NET kullanarak Windows Form uygulamamda nasıl Cursor(Fare İmleci) oluşturup özelleştirebilirim?
- VB.NET kullanarak sistem varsayılan Fare İmlecini nasıl değiştirebilirim?
- Pencerelerle ilgili işlemleri nasıl yaparım?
P/Invoke (Platform Invocation Services-Platform Başlatma Servisleri)
- P/Invoke nedir?
- VB.NET kullanarak bir kısayol tuşu nasıl belirlerim?
- Mouse veya klavye hareketlerini nasıl yakalarım?
COM Interop (Component Object Model - Bileşen Nesne Modeli )
- COM Interop nedir?
- VB.NET ile VB6 dll dosyasını nasıl çağırır ve kullanırım?
- Office Word otomasyonu VB.NET'te nasıl gerçekleştirilir?
- Office Excel otomasyonu VB.NET'te nasıl gerçekleştirilir?
Web Browser
- Web Browser yardımıyla basit internet tarayıcısı işlemlerini nasıl yaparım? (Sayfadaki metni alma,üye girişi,arama,link verme vb.)
- Kendi İnternet tarayıcımı nasıl oluştururum?
- Kendi internet tarayıcıma yeni sekme özelliğini nasıl eklerim,sayfanın favorilere eklenmesi yer imi olarak kaydedilmesini nasıl yaparım?
ClickOnce, Kurulum ve Dağıtım
- Veritabanı da içeren bir Windows Forms uygulamasını ClickOnce kullanarak nasıl yayınlarım/dağıtırım?
- ClickOnce kurulum dizini neresidir ve ClickOnce ile dağıtım yapmanın herhangi bazı kısıtlamaları var mıdır?
- Başlangıç klasöründe veya masaüstündeki uygulama kısayollarını nasıl ekler/kaldırırım?
ADO.NET
- Kullanıcı Giriş prosedürlerini ve şifrenin case sensitive olmasını (küçük-büyük harf duyarlı olma durumu) nasıl gerçekleştiririm?
- Veritabanına BLOB (Binary Large Object) tipinde veriyi (resim-doküman) nasıl kaydederim?
- Basit bir veri erişim uygulamasını nasıl yaparım? (Ekleme-silme-değiştirme-sayfalama vb.)
- Veritabanındaki veriler üzerinde nasıl arama ve filtreleme yapabilirim?
- Bazı değişiklikler yapıldıktan sonra uygulama yeniden başlatıldığında bu değişiklikleri veri tabanında neden göremiyorum?
- VB.NET kullanarak veritabanında parametreli sorgu işlemlerini nasıl yaparım?
- IDE menüsünü kullanarak varolan bir projeyi farklı yerel lokasyona kaydedebilir miyim?
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez.- Taşıyan Emre GunerturkModerator 07 Şubat 2011 Pazartesi 10:24 (Gönderen:Visual Studio Forumu)
Tüm Yanıtlar
-
04 Ekim 2010 Pazartesi 12:10Moderatör
Ortak Dil Çalışma Platformu ( Common Language Runtime ) derlemeleri (assembly) nasıl yükler?
Bir .NET uygulaması çalıştığında Ortak Dil Çalışma Platformu (CLR)uygulamanın gerçekleştirildiği derleme versiyonuyla bağlanır. Bir derlemenin çözülmesi işlemi aşağıdaki işlemleri gerektirir :
- Konfigürasyon dosyalarının incelenmesi
- Daha önce referans edilmiş derlemelerin kontrol edilmesi
- Genel derleme önbelleğinin kontrol edilmesi
- Derlemenin kod tabanında ya da probing (araştırma) sonucu tespit edilmesi.
Adımlar hakkında daha detaylı bilgiyi takip eden linkten bulabilirsiniz :
http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx
Uygulama geliştiriciler çalışma zamanında herhangi bir klasörde (sadece bin klasörü değil) bulunan derlemeleri çalışma zamanında yüklemek isteyebilirler. Bu durumda kullanılabilecek 3 yol mevcuttur :
- Derlemenin Genel Derleme Önbelleğine (GAC) yüklenmesi
- <codeBase> tag'ını içeren bir uygulama konfigürasyonu dosyası (.config) kullanmak.
- AssemblyResolve olayının kullanılması.
Detaylı bilgi ve adım adım uygulama için aşağıdaki bağlantıyı ziyaret edebilirsiniz :
http://support.microsoft.com/kb/837908
İlişkili bir forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:12Moderatör
ByVal ve ByRef arasında ne fark vardır?
Bir altprogram veya fonksiyon yazdığınızda ana programdan bu altprograma ya da fonksiyona parametre geçişi yapabilirsiniz.
Eğer değişkenin değerini parametre olarak geçmek istiyorsanız ByVal sentaksını kullanmalısınız. Değişkenin değerini parametre olarak geçmekle bu değişkene o alt program veya fonksiyonda uygulanacak değişiklikler ana programda geçerli olmaz. Bu parametre geçiş yöntemi default olarak kullanılan yöntemdir.
Eğer parametre olarak alt programa ya da fonksiyona gönderdiğiniz değerin değişebilmesini istiyorsanız ByRef sentaksını kullanmalısınız. Bu yolla değişkenin referansı parametre olarak verilmiş olur ve alt program veya fonksiyondan dönüldüğünde değişkenin değeri değişmiş olabilir.
Bu konuda daha detaylı bilgi için aşağıdaki MSDN dokümanına göz atabilirsiniz :
http://msdn.microsoft.com/en-us/library/ddck1z30.aspx
Takip eden kod bölümünde bir adet değer tipinde ve yine 1 adet referans tipinde değişken tanımlanmıştır. Daha sonra bu değişkenler altprogramlara parametre olarak ByVal ve ByRef anahtar kelimeleriyle gönderilmişlerdir.
Örnek Uygulama
Imports System.Security Imports System.Security.Permissions Imports System.IO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Dim parameter_valtype As Integer = 10 Dim parameter_refertype As demo = New demo(1, "initial value") Console.WriteLine("the value of value type variable parameter_valtype:" & _ parameter_valtype.ToString) Console.WriteLine("pass value type variable parameter_valtype with byval modifier") passByval_valType(parameter_valtype) Console.WriteLine("the value of value type variable parameter_valtype:" & _ parameter_valtype.ToString) Console.WriteLine("") Console.WriteLine("pass value type variable parameter_valtype with byref modifier") passByref_valType(parameter_valtype) Console.WriteLine("the value of value type variable parameter_valtype:" & _ parameter_valtype.ToString) Console.Write(vbCrLf) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.WriteLine("pass reference type variable parameter_valtype with byval modifier" & _ " and modify the reference variable ") passByval_refType_modifyvarialble(parameter_refertype) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.Write(vbCrLf) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.WriteLine("pass reference type variable parameter_valtype with byval modifier") passByval_refType(parameter_refertype) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.Write(vbCrLf) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.WriteLine("pass reference type variable parameter_valtype with byref modifier") passByref_refType(parameter_refertype) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.Write(vbCrLf) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.WriteLine("pass reference type variable parameter_valtype with byref modifier" & _ " and modify the reference variable ") passByref_refType_modifyvarialble(parameter_refertype) Console.WriteLine("the value of reference type variable parameter_refype: " & _ parameter_refertype.nummember.ToString & " " & _ parameter_refertype.strmember) Console.Write(vbCrLf) End Sub Public Sub passByref_valType(ByRef i As Integer) i = i + 2 End Sub Public Sub passByval_valType(ByVal i As Integer) i = i + 4 End Sub Public Sub passByval_refType(ByVal d As demo) d.nummember = d.nummember * 2 d.strmember = "passByval_refType" End Sub Public Sub passByval_refType_modifyvarialble(ByVal d As demo) d = New demo(11, "passByval_refType_modifyvarialble") End Sub Public Sub passByref_refType(ByRef d As demo) d.nummember = d.nummember * 2 d.strmember = "passByref_refType" End Sub Public Sub passByref_refType_modifyvarialble(ByRef d As demo) d = New demo(d.nummember * 2, "passByref_refType_modifyvarialble") End Sub End Class Public Class demo Private _strmember As String = String.Empty Private _nummember As Integer = 0 Public Sub New(ByVal num As Integer, ByVal str As String) _strmember = str _nummember = num End Sub Public Property strmember() As String Get Return _strmember End Get Set(ByVal value As String) _strmember = value End Set End Property Public Property nummember() As Integer Get Return _nummember End Get Set(ByVal value As Integer) _nummember = value End Set End Property End Class
İlişkili bir Forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:16Moderatör
İşte adımlar :
Adım 1 : Windows Forms kontrollerinden kalıtım alan kendi kontrollerinizi oluşturun. ( Örneğin Button,Label vb. )
File -> New -> Project -> Windows Forms Control Library
Kod sayfasına girip kalıtım alınan sınıfı kendi isteğinize göre değiştirin.
Public Class UserControl1 Inherits System.Windows.Forms.Button End Class
Kullanacak olduğunuz her metodu veya özelliği bu sınıf içerisinde gerçekleyebilirsiniz.
Projeyi derleyin ve bir dll dosyası haline getirin.
Detaylı Bilgi :
Var olan Windows Forms Kontrollerinden kalıtım alma?
http://msdn2.microsoft.com/en-us/library/7h62478z.aspx
Adım 2 : Kalıtım almış olan kontrolü toolbox'a eklemek.
ToolBox'a sağ tıklayın -> Choose Item -> .NET Framework Components -> Browse butonuna tıklayıp dll yi gösterin.
Adım 3 : Bu aşamada kontrol toolboxta görünecektir. Artık kontrolü forma sürükleyip bırakabilir kullanmaya başlayabilirsiniz.
Detaylı Bilgi :
http://msdn.microsoft.com/en-us/library/skcysbt2.aspx
http://msdn.microsoft.com/en-us/library/00ctb4z0.aspx
http://msdn.microsoft.com/en-us/library/7h62478z.aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:18Moderatör
Nasıl DLL (Dynamic-link Library)gibi bir .NET bileşeni yaratılır ve bu farklı ortamlarda kullanılır?
Bir .NET bileşeni çalıştırılabilir özel bir bileşen olup .NET projesinden elde edilir. Bu bileşenler kullanıcılara programlanabilir bir arayüz sunarlar. .NET bileşeni oluşturmak için izlenecek adımlar aşağıdaki gibidir :
- Yeni bir Class Library projesi oluşturun.
- Bu sınıfın özelliklerini dışarıya açmak için public olarak tanımlayacağınız özellikler ve metodlar tanımlayın. (Bkz. Access Modifiers)
- Bu Class Library projesini DLL olarak derleyin (build).
Derleme bittikten sonra bu DLL yi referans eden uygulamalar DLL içerisindeki servisleri kullanabilirler. Takip eden bağlantıda bu konuyla ilgili detaylı bilgiyi bulabilirsiniz.
http://msdn.microsoft.com/en-us/library/ms973807.aspx
İlişkili forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:23Moderatör
Windows Forms uygulamalarının performansı nasıl artırılır?
Bir Windows Forms uygulamasının çalışma performansının düştüğünü düşünüyorsanız takip eden linkteki makaleden bazı pratik ipucular edinebilirsiniz.
http://msdn.microsoft.com/en-us/magazine/cc163630.aspx
- Uygulamanın açılma süresinin optimize edilmesi,
- Kontrollerin oluşturulması ve yerleştirilmesinin senkronizasyonu,
- Çizim performansının geliştirilmesi,
- Metin ve resimlerin görüntülenmesi,
- Kaynakların etkin kullanımı,
Genel olarak bir worker thread (BackgroundWorker sınıfı) kullanarak zaman alacak işlemlerin arkaplanda işlemesi sağlanabilir. Ayrıca artık kullanılmayacak nesnelerin zamanında bırakılması sayesinde toplam bellek ve işlemci gereksinimleri minimuma indirilerek diğer işlemler için kaynak yaratılabilir.
İlişkili bir forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:25Moderatör
Bir Windows uygulaması nasıl yerelleştirilir?
Bu işlem için yerelleştirilmiş kaynak dosyalarının proje içerisine gömülmüş olması gerekir. Daha sonra derleyici her bir yerelleştirilmiş kaynak dosyası için uydu derlemeler denen yapılar kullanarak bu dosyaları derler. Bu uydu derlemeler yalnızca yerelleştirme işlemi yapan kaynak dosyalarını içerirler. Ortak Dil Çalışma Platformu (CLR) CurrentUICulture özelliğini baz alarak doğru uydu derlemeyi yükler ve böylece yerelleştirilme gerçekleştirilmiş olur.
Visual Studio proje sistemi Windows Forms uygulamalarının yerelleştirilebilmesi için önemli bir destek sağlamaktadır. Visual Studio geliştirme ortamı kullanarak kaynak dosyalarını oluşturmak için 2 farklı yol vardır : birincisi form üzerinde metin veya resim dosyaları gibi yerelleştirilebilir arayüz elementleri için kaynak dosyaların proje sistemi tarafından oluşturulması ve bu sayede kaynak dosyaların uydu derlemeler haline getirilmesi,ikincisi ise projeye bir Resource File Template ekleyerek bu hazır şablon üzerinde XML Designer kullanarak özelleştirme yapılmasıdır. İkincisinin yapılmasındaki getiri ise dialog kutularında veya hata mesajlarında gösterilecek içeriğin de yerelleştirilebilmesidir.
Windows Forms uygulamalarının yerelleştirilmesi konusunda daha detaylı bilgi edinmek isterseniz takip eden linklerdeki makaleleri inceleyebilirsiniz.
Windows Forms uygulamalarının yerelleştirilmesi :
http://msdn.microsoft.com/en-us/library/y99d1cd3.aspx
Kaynak Dosyaları ve Yerelleştirme :
http://msdn.microsoft.com/en-us/magazine/cc163609.aspx
İlişkili bir forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:31Moderatör
VB.NET projesinde multithreading özelliği doğru şekilde nasıl uygulanır?
.NET uygulamaları çoklu görevleri multi threading (her görev için ayrı iş yolu kullanılabilmesi) kullanarak eşzamanlı olarak gerçekleştirebilirler. Bu sayede uygulamaların performansı artar ve yanıt verme sürelerinde azalmalar olur.Genel olarak MultiThreading yaparken dikkat etmemiz gereken bazı noktalar aşağıdadır :
- BackgroundWorker sınıfının kullanılması. Bu sınıf .NET Framework 2.0 tarafından sağlanır. Bu sınıfla birlikte bir işlemi ayrık bir thread ile işletebilirsiniz. Konunun sonunda bulacağınız linkte detaylı bilgi ve kod örnekleri bulunan bir MSDN dokümanı bulunmaktadır.
- Uygulama içerisindeki thread'ler arasında verilerin paylaşımı. Verilerin bozulmaması için Thread senkronizasyonunun sağlanması gerekir.
- Hata ayıklama. Thread fonksiyonlarındaki hataların giderilmemesi durumunda bu hatalar ana thread'in çalışmasını durdurabilir.
- Asenkron metod kullanımı. Asenkron metodların kullanılması CLR (Ortak Dil Çalışma Platformu) tarafından sağlanan bir özelliktir. CLR bu mekanizmayı bir iş kuyruğu mantığıyla gerçekler. Metod parametrelerini paketler ve metod adresini işaret edecek bir kuyruğa atar. CLR bu kuyruktaki her işlem talebi için toplamda tek bir thread havuzuna sahiptir.
Bir .NET uygulamasında delegate nesneleri sayesinde asenkron metodları kullanabilirsiniz. Kullanımını görmek için takip eden kod örneğini inceleyebilirsiniz.
Asenkron metod çağrılması ile ilgili olarak takip eden makaleleri gözden geçirin:
- .NET Delegate kavramı :
.NET ortamında asenkron metod çağrılması:
http://msdn.microsoft.com/en-us/magazine/cc301332.aspx
- Asenkron metod çağrılması
http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx
Imports System.Runtime.Remoting.Messaging Public Class Form1 Public Delegate Function operationdelegate(ByVal num1 As Integer, ByVal num2 As Integer) As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim obj As New demo1 Dim num1 As Integer = 111 Dim num2 As Integer = 124 Dim del As operationdelegate del = New operationdelegate(AddressOf obj.add) del.BeginInvoke(num1, num2, AddressOf Oncallback, Nothing) del = New operationdelegate(AddressOf obj.subtract) MessageBox.Show(del.Invoke(num1, num2).ToString) End Sub Private Sub Oncallback(ByVal asynresult As IAsyncResult) Dim result As Integer = 0 Dim obj As AsyncResult = CType(asynresult, AsyncResult) Dim c As operationdelegate = CType(obj.AsyncDelegate, operationdelegate) result = c.EndInvoke(asynresult) MessageBox.Show(result.ToString) End Sub End Class Public Class demo1 Public Function add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer Return num1 + num2 End Function Public Function subtract(ByVal num1 As Integer, ByVal num2 As Integer) As Integer Return num1 - num2 End Function End Class
VB.NET ile multithreading kullanımı hakkında daha fazla bilgi için linkteki MSDN dokümanını inceleyebilirsiniz.
http://msdn.microsoft.com/en-us/library/eed6swsx.aspx
İlgili forum konuları :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/904de128-4dca-4a18-a48f-048e4761bd44/
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/58a35975-2a71-4adc-86dd-5fc9d4605717/
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/6e84ea77-a77c-4e05-a641-ffd8866d3f94/
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/e1d8d23e-753d-48f7-b350-87832e0b95d6/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:34Moderatör
Standart bir I/O (Giriş-Çıkış) işlemi nasıl yönlendirilir?
Bu işlem için Process sınıfını kullanmalı ve bu sınıfın StandardInput ve StandardOutput özelliklerini ayarlamalısınız. Aşağıdaki örneğe bir göz atın :
Imports System.IO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim p As New Process() Dim sw As StreamWriter Dim sr As StreamReader Dim err As StreamReader Dim psI As New ProcessStartInfo("cmd") psI.UseShellExecute = False psI.RedirectStandardInput = True psI.RedirectStandardOutput = True psI.RedirectStandardError = True psI.CreateNoWindow = True p.StartInfo = psI p.Start() sw = p.StandardInput sr = p.StandardOutput err = p.StandardError sw.AutoFlush = True If TextBox3.Text <> "" Then sw.WriteLine(TextBox3.Text) Else 'default işlemin yapılması sw.WriteLine("dir \") End If sw.Close() TextBox1.Text = sr.ReadToEnd() TextBox1.Text += err.ReadToEnd() End Sub End Class
Detaylı bilgiyi takip eden linklerden edinebilirsiniz :
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/62acea83-236b-4f55-8eec-25d80df5df66/
http://www.c-sharpcorner.com/UploadFile/edwinlima/SystemDiagnosticProcess12052005035444AM/SystemDiagnosticProcess.aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:45Moderatör
Seri COM Port haberleşmesi nasıl gerçekleştirilir?
Seri COM Port üzerinden haberleşmeyi sağlamak için SerialPort sınıfını kullanabilirsiniz. Bu sınıf bir seri port kaynağını temsil eder. Ayrıca senkronize-olay güdümlü I/O sağlar,seri sürücülere erişimi olanaklı kılar. Bu sınıfı kullanarak bir seri port dosya kaynağını kontrol edebiliriz.
Kod örneğinde Seri Port'tan veri alınır ve bu veri kullanıcı arayüzü kontrollerinde gösterilir.
Ön gereksinimler : Form1 üzerinde SerialPort1 ve TextBox1
Public Class Form1 Dim inputData As String = "" Public Event DataReceived As IO.Ports.SerialDataReceivedEventHandler Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load 'Özellikler için değerlerin atanması SerialPort1.PortName = "COM1" SerialPort1.BaudRate = 9600 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.DataBits = 8 SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.Handshake = IO.Ports.Handshake.None SerialPort1.RtsEnable = True ' Seri portun açılması SerialPort1.Open() 'Seri Port'un çıkış tamponuna verinin yazılması If SerialPort1.IsOpen = True Then SerialPort1.Write("MicroCommand") End If End Sub ' Seri porttan verinin alınması Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, _ ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles SerialPort1.DataReceived inputData = SerialPort1.ReadExisting Me.Invoke(New EventHandler(AddressOf DoUpdate)) End Sub 'Alınan verinin kontrollerde gösterilmesi Public Sub DoUpdate() TextBox1.Text = TextBox1.Text & inputData End Sub Private Sub Form1_FormClosed(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles MyBase.FormClosed ' Seri Portu kapatmak SerialPort1.Close() End Sub End Class
Not :
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx
DataReceived olayı Seri Port'tan veri aldınığı anda ikinci bir thread tarafından çalıştırılmıştır. Bu olay ana thread tarafından değil de ikinci bir thread tarafından çalıştırıldığından bu ikinci thread'in ana thread kontrollerine vb ulaşması ve bunlar üzerinde değişiklik yapması olasıdır. Eğer ana thread elementleri üzerinde değişiklik yapılması gerçekten gerekliyse Control.Invoke metodunu kullanarak bu değişiklik isteklerini geri çevirerek işlerin hangi thread tarafından yapılacağı ayarlanabilir.
System.IO.Ports.SerialPort Sınıfı üyeleri için (özellikler,metodlar,olaylar vb.)
http://msdn.microsoft.com/en-us/library/system.io.ports.serialport_members.aspx
Konu hakkında daha detaylı bilgi için :
http://www.innovatic.dk/knowledg/SerialCOM/SerialCOM.htm
İlişkili forum konuları ve kod örnekleri :
http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/c9fef85f-949f-4f5f-8639-26205607fbce/
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/62ddb9a4-fe79-43bd-b43e-de2af7aeb039
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/479ba2a6-10a7-47a1-baa2-ed0a4d837354/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 12:57Moderatör
Herhangi bir dosya uzantısı uygulamayla nasıl ilişkilendirilir?
Bütün dosya tipi - uygulama ilişkilendirmeleri kayıt defterinde tutulur.
Kendi uygulamanızla ilişkilendirecek bir dosya uzantısı oluşturmak istediğinizde kayıt defterine gerekli kaydın girilmesi gerekir.
Örneğin ".Merhaba" uzantılı bir dosya uzantısı oluşturmak için :
My.Computer.Registry.ClassesRoot.CreateSubKey(".Merhaba").SetValue("", _ "Merhaba", Microsoft.Win32.RegistryValueKind.String) My.Computer.Registry.ClassesRoot.CreateSubKey("Merhaba\shell\open\command").SetValue("", _ Application.ExecutablePath & " ""%l"" ", Microsoft.Win32.RegistryValueKind.String)
Yukarıdaki kod parçasının açıklaması:
Kod
Yaptığı iş
CreateSubKey(".Merhaba")
.Merhaba Dosya uzantısı için bir kayıt defteri girdisi oluşturur.
.SetValue("", "Merhaba"...
-
- "" (veya Nothing) kayıt defteri girdisi için varsayılan değeri atar.
- "Merhaba" hangi kayıt defteri girdisinin .Merhaba uzantısı ile ilgili bilgi içerdiğini gösterir.
CreateSubKey("Hello" & _ "\shell\open\command")
Bu parçacık ise "Merhaba" alt anahtarını ve "store\open\command" alt anahtarını oluşturur .Bu bilgiler dosya tipini açacak uygulamanın dizin bilgisini tutar.
.SetValue("", Application.ExecutablePath & _ " ""%l"" ",...
-
- "" (veya Nothing) kayıt defteri girdisi için varsayılan değeri atar.
- Application.ExecutablePath bu dosya tipi ile şu anda çalışan programın ilişkilendirilmesini yapar.
- ""%1"" değeri ise açılan dosyanın lokasyonunu sizin programınıza gönderir. Kesme işaretleri opsiyoneldir ancak birden fazla parametre kullanacaksanız her parametrenin etrafına koymalısınız.
Detaylı bilgiye ve demo uygulamaya takip eden linkten ulaşabilirsiniz :
http://www.codeproject.com/useritems/VBFileAssociation.asp
Ayrıca manuel olarak Windows Explorer kullanarak dosya uzantıları programlarla ilişkilendirilebilir. Varsayılan programlar -> Dosya türü veya protokolü bir programla ilişkilendirin seçeneği ile bu işlemi gerçekleştirebilirsiniz.
İlişkili forum konusu :
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/4d8760c9-b2c9-4016-b75e-1b3189b0c30b/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
-
04 Ekim 2010 Pazartesi 13:01Moderatör
Bir Flash dosyası (swf) Windows Form uygulamasına nasıl gömülür ve bu dosya nasıl oynatılır?
Bir Flash dosyasını (.swf) Windows Forms uygulamasında oynatabilmek için iki seçeneğiniz vardır :
- AxWebBrowser bileşenini kullanmak
ToolBox'a sağ tık -> Choose Items -> COM Tab -> Microsoft Web Browser
Bu işlemin ardından Microsoft Web Browser kontrolü ToolBox'ta görünecektir. Sürükle-bırak yöntemiyle forma bu kontrolü bırakın ve .swf dosyasıyla ilişkilendirin.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AxWebBrowser1.Navigate("D:\flash.swf") End Sub
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/winforms/thread/d5fb9152-4d88-443c-958f-7dd5aa29de7e/
2.Shockwave Flash nesnesini kullanmak
Öncelikle Adobe Flash Player'ın sisteminizde kurulu olduğundan emin olun.
ToolBox'a sağ tık -> Choose Items -> COM Tab -> Shockwave Flash Object
Bu işlemin ardından Shockwave Flash Object adındaki kontrol ToolBox'ta görünecektir.Sürükle-bırak yöntemiyle forma bu kontrolü bırakın ve .swf dosyasıyla ilişkilendirin.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AxShockwaveFlash1.Movie = "D:\flash.swf" End Sub
İlişkili forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:07Moderatör
VB.NET ile ses veya video dosyalarını nasıl oynatılır?
4 farklı yaklaşımla bu soruyu cevaplandırabiliriz :
1.Microsoft.DirectX.AudioVideoPlayback bileşenini kullanmak
Öncelikle DirectX SDK (Software Development Kit) sisteminizde kurulu olmalıdır.
DirectX 9.0c Redistributable
DirectX 9.0 SDK UpdateDaha sonra Microsoft.DirectX.AudioVideoPlayback.dll dosyasını projenize referans olarak eklemelisiniz.
Aşağıdaki kod parçasını kullanarak arka planda ses oynatabilirsiniz :
Imports Microsoft.DirectX.AudioVideoPlayback Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim audioFile As Audio = New Audio("D:\MyMusic.mid") audioFile.Play() End Sub End Class
İlişkili forum konusu :
Aşağıdaki kod parçasını kullanarak bir panel yardımıyla video oynatabilirsiniz :
Imports Microsoft.DirectX.AudioVideoPlayback Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim videoFile As Audio = New Audio("D:\Video1.avi") videoFile.Owner = Panel1 videoFile.Play() End Sub End Class
Demo :
Playing AVI Files using DirectX 9 with C# and .NET
İlişkili forum konusu :
2.Windows Media Player kontrolünü kullanmak
ToolBox'a sağ tık -> Choose Items -> COM Tab -> Microsoft Media Player ActiveX kontrolünü bulup ekliyoruz.
Bu işlemin ardındanWindows Media Player kontrolü ToolBox'ta görünecektir.Sürükle-bırak yöntemiyle forma bu kontrolü bırakın ve ses veya video dosyasının url bilgisini kontrole verin.
AxWindowsMediaPlayer1.URL = "D:\VideoOrAudio.wmv"Media Player kontrolü otomatik olarak gösterdiğiniz dosyayı oynatacaktır.
İlişkili forum konusu :
3.RealPlayer ActiveX kontrolünü kullanmak
Benzer olarak Com bileşeni olarak toolbox'a eklediğiniz RealPlayer ActiveX Control'ü sürükleyip forma bırakın. Daha sonra bu kontrolün "source" özelliğine ses/video dosyasının bulunduğu dizin bilgisini girmelisiniz.
AxRealAudio1.Source = "D:\VideoOrAudio.wmv" AxRealAudio1.AutoStart = True
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/e3fff97d-f6e0-4ac2-b7c9-ccf7cbe7f38c/
4.My.Computer.Audio.Play metodunu kullanmak
Bu yol daha kolay görünebilir ancak sadece wav dosyalarını oynatabilir.
My.Computer.Audio.Play("C:\audio.wav", AudioPlayMode.Background) My.Computer.Audio.Stop()
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:12Moderatör
VB.NET kullanarak bir web sayfası nasıl kaydedilir?
3 Farklı yaklaşımla bu soruyu cevaplandırabiliriz :
1.System.Net.WebClient sınıfını kullanarak sayfayı direk olarak .html dosyası olarak kaydedebilirsiniz.
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim myWebClient As New System.Net.WebClient myWebClient.DownloadFile("http://forums.microsoft.com/MSDN/default.aspx", _ "C:\msdn.html") End Sub End Class
2.ADODB (ActiveX Data Objects for DataBase) veya CDO (Collaboration Data Objects) bileşenlerini kullanarak tüm web sayfasını .mht dosyası olarak kaydedebilirsiniz.
İlk olarak "Microsoft CDO For Windows 2000 Library" ve "Microsoft ActiveX Data Objects 2.5 Library" kütüphanelerini Project -> Add Reference -> COM yolunu kullanarak referans etmelisiniz.
Imports ADODB Imports CDO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click SavePage("http://forums.microsoft.com/MSDN/default.aspx", "C:\msdn.mht") End Sub Private Sub SavePage(ByVal Url As String, ByVal FilePath As String) Dim iMessage As CDO.Message = New CDO.Message iMessage.CreateMHTMLBody(Url, _ CDO.CdoMHTMLFlags.cdoSuppressNone, "", "") Dim adodbstream As ADODB.Stream = New ADODB.Stream adodbstream.Type = ADODB.StreamTypeEnum.adTypeText adodbstream.Charset = "US-ASCII" adodbstream.Open() iMessage.DataSource.SaveToObject(adodbstream, "_Stream") adodbstream.SaveToFile(FilePath, _ ADODB.SaveOptionsEnum.adSaveCreateOverWrite) End Sub End Class
İlişkili forum konusu :
3.Bir web sayfasının içeriğini WebBrowser kontrolünü kullanarak kaydedebilirsiniz.
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load WebBrowser1.Navigate("http://forums.microsoft.com/MSDN/default.aspx") End Sub Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted ' Tüm .html sayfasının .html formatında kaydedilmesi Dim MSDNpage As String = WebBrowser1.DocumentText My.Computer.FileSystem.WriteAllText("C:\msdn1.html", MSDNpage, True) ' Body nesnesi içeriğinin metin dosyasına kaydedilmesi Dim MSDNpage As String = WebBrowser1.Document.Body.InnerText My.Computer.FileSystem.WriteAllText("C:\msdn2.txt", MSDNpage, True) End Sub End Class
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:16Moderatör
VB.NET Formunda herhangi bir Office dokümanı(Word-Excel vb) nasıl açılır/gösterilir?
Visual Basic .NET bir forma Office dokümanı gömmek için herhangi bir OLE (Object Linking and Embedding) kontrolü sunmaz. Ancak aşağıdaki 2 yöntemle Office dökümanlarınızı formlarınızda kullanabilirsiniz.
- DSOFramer.ocx adındaki Visual C++ ActiveX
kontrolünü kullanarak Office dökümanlarınızı ( Word dokümanları,Powerpoint sunumları,Visio çizimleri,proje dosyaları vb)
formlarınızda kullanabilirsiniz.
Detaylı Bilgi :
http://support.microsoft.com/kb/311765
Download the DsoFramer_KB311765_x86.exe package
Örnek : .NET uygulamalarında Office belgeleri barındırmak
http://blogs.msdn.com/erikaehrli/archive/2005/08/26/hostofficeinnet.aspx
- WebBrowser kontrolünü kullanarak Office dokümanları ile çalışabilirsiniz.
Detaylı Bilgi :
http://support.microsoft.com/default.aspx?scid=kb;[LN];Q304643
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - DSOFramer.ocx adındaki Visual C++ ActiveX
kontrolünü kullanarak Office dökümanlarınızı ( Word dokümanları,Powerpoint sunumları,Visio çizimleri,proje dosyaları vb)
formlarınızda kullanabilirsiniz.
-
04 Ekim 2010 Pazartesi 13:19Moderatör
İlk olarak projenize System.Management.dll dosyasını referans olarak vermeniz ve System.Management isim alanını projenizde import etmeniz gerekir.
Kod örneği : Hard disk,anakart ve CPU hakkında cihaz bilgilerinin edinilmesi
Ön Gereksinimler :Form üzerinde Button1,Button2,Button3 ve ListBox1
Imports System.Management Public Class Form1 'Hard Disk hakkında bilgi edinilmesi Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Donanım model ve tipinin alınması Dim searcher As ManagementObjectSearcher = _ New ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive") For Each wmi_HD As ManagementObject In searcher.Get() ListBox1.Items.Add("Model:" & vbTab & wmi_HD("Model").ToString()) ListBox1.Items.Add("Type:" & vbTab & wmi_HD("InterfaceType").ToString()) Next wmi_HD ' Donanım seri numarasının alınması searcher = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia") For Each wmi_HD As ManagementObject In searcher.Get() If wmi_HD("SerialNumber") Is Nothing Then ListBox1.Items.Add("Serial No:" & vbTab & "None") Else ListBox1.Items.Add("Serial No:" & vbTab & wmi_HD("SerialNumber").ToString()) End If Next wmi_HD End Sub 'Anakart hakkında bilgi edinilmesi Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim searcher As ManagementObjectSearcher = _ New ManagementObjectSearcher("select * from Win32_BaseBoard") For Each oReturn As ManagementObject In searcher.Get() ListBox1.Items.Add( _ "MortherBoard Serial No." & Constants.vbTab & ": " & oReturn("SerialNumber").ToString) Next oReturn End Sub 'İşlemci hakkında bilgi edinilmesi Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click Dim searcher As ManagementObjectSearcher = _ New ManagementObjectSearcher("select * from Win32_Processor") For Each oReturn As ManagementObject In searcher.Get() ListBox1.Items.Add("CPU ID" & Constants.vbTab & ": " & oReturn("ProcessorId").ToString) Next oReturn End Sub End Class
Ayrıca bu işlemler için WMI Kod Geliştiricisi aracını da çok faydalı bulabilirsiniz.
WMI Kod Geliştiricisi aracı VBScript,C# ve VB.NET kodlarını kullanarak veri Yönetimi veya olay bildirimleri gibi yönetim görevlerini de yapabilir.
İlişkili forum konuları :
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/f393708f-d7e3-4aa3-a624-7e8c6662f343/
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/8724deae-d9d9-4cd9-829b-ef4eefcb4617/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:22Moderatör
Sırasıyla bir PictureBox ve Image kontrolleri kullaranak nasıl resim çizilir?
Bu işlemde yapılması gereken en önemli şey doğru Graphics nesnesini bulmaktır.
Ön Gereksinimler : Form üzerinde PictureBox1,Button1 ve Button2
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.Image = Image.FromFile("D:\VBproject\2.jpg") End Sub 'PictureBox kontrolüne resim çizmek Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim newImage As Image = Image.FromFile("D:\VBproject\1.jpg") Dim g As Graphics = Me.PictureBox1.CreateGraphics g.DrawImage(newImage, New Rectangle(10, 10, 200, 200)) End Sub 'PictureBox.Image özelliğine resmi vermek Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim newImage As Image = Image.FromFile("D:\VBproject\1.jpg") Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawImage(newImage, New Rectangle(10, 10, 200, 200)) PictureBox1.Refresh() End Sub End Class
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/7c7ee412-703e-46d8-84c7-b3f91dfefdc7/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:24Moderatör
Bir resim nesnesi ile byte türünden bir dizi arasında nasıl dönüşüm yapılır?
MemoryStream sınıfını kullanarak resim nesnesi ve Byte dizisi arasında dönüşüm yapabilirsiniz.
Imports System.IO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myImage As Image = Image.FromFile("D:\1.jpg") Dim imgByteArray As Byte() = Nothing 'Resimden byte dizisine Dim imgMemoryStream As MemoryStream = New MemoryStream() myImage.Save(imgMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg) imgByteArray = imgMemoryStream.GetBuffer() 'Byte dizisinden resim nesnesine imgMemoryStream = New MemoryStream(imgByteArray) myImage = Drawing.Image.FromStream(imgMemoryStream) End Sub End Class
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:25Moderatör
Bir resmi aynı ölçekte nasıl yeniden boyutlandırılır?
Bu soru için kullandığımız mantık yeni boyutta bir Bitmap nesnesi oluşturmak ve orjinal Bitmap nesnesinin içeriğini yeni olana çizmek.
Ön Gereksinimler : Form üzerinde Button1, PictureBox1 ve PictureBox2
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load PictureBox1.ImageLocation = "D:\mm.jpg" PictureBox2.ImageLocation = "D:\mmm.jpg" End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click resizeImage(PictureBox1.ImageLocation, PictureBox1) resizeImage(PictureBox2.ImageLocation, PictureBox2) End Sub Public Sub resizeImage(ByVal imgPath As String, ByVal picbox As PictureBox) Dim bm_source As Bitmap = New Bitmap(imgPath) Dim scale As Double = bm_source.Height / bm_source.Width Dim bm_dest As New Bitmap(CInt(picbox.Width), CInt(picbox.Width * scale)) Dim gr_dest As Graphics = Graphics.FromImage(bm_dest) gr_dest.DrawImage(bm_source, 0, 0, bm_dest.Width + 1, bm_dest.Height + 1) picbox.Image = bm_dest End Sub End Class
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbide/thread/69bae6d7-eb4e-49cd-b078-704a028e9318
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:29Moderatör
.NET uygulamalarında Form'un imlecini Form.Cursor özelliğini bir Cursor nesnesine atayarak değiştirebiliriz. Cursor nesnesi 4 kaynaktan oluşturulabilir : özelleştirilmiş bir Windows Handle, özelleştirilmiş bir Data Stream, özelleştirilmiş bir File Name veya özelleştirilmiş ResourceType ve CursorName.
Takip eden 4 kurucu fonksiyon bu kaynakların nasıl kullanılacağına dair örneklerdir :
- IntPtr
- Stream
- String
- Type, String
http://msdn.microsoft.com/en-us/library/kkw8k45d.aspx
Bazı sistem imleçleri dizin yolu ve dosya isminin kullanılmasıyla direk olarak yüklenemezler çünkü bu imleçler yazılan kodun tanıyamayacağı formattadırlar.
Bu durumda PInvoke kullanarak Windows API LoadCursorFromFile fonksiyonunu çağırmalıyız daha sonra ilk pattern'i kullanıp File Handler üzerinden Cursor objesini seçmeliyiz.
Bu işlem için VB.NET kodu aşağıdaki gibidir :
Private Declare Unicode Function LoadCursorFromFile Lib "user32.dll" Alias "LoadCursorFromFileW" (ByVal filename As String) As IntPtr Dim Iconfile As String = Application.StartupPath & "\kaycur1.ico" Dim curfile As String = Application.StartupPath & "\kaycursor.cur" Dim Anifile As String = Application.StartupPath & "\RedClockWiseCursor.ani" Public Sub animatedCur() If File.Exists(curfile) = True Then Dim hcur As IntPtr hcur = LoadCursorFromFile(curfile) Me.Cursor = New Cursor(hcur) Else Me.Cursor = System.Windows.Forms.Cursors.Default End If End Sub
İlişkili forum konusu :
http://social.msdn.microsoft.com/Forums/en-SG/vbgeneral/thread/40e42c91-0318-416e-bcbc-65668b6241ed
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:32Moderatör
VB.NET kullanarak sistem varsayılan sistem imleci nasıl değiştirilir?
Sistem imlecini modifiye edebilmek için takip eden kayıt defteri girdisi üzerinde değişiklik yapmamız gerekir.
HKEY_CURRENT_USER\Control Panel\Cursors\
Daha sonra, SystemParametersInfo adındaki Windows API yi SPI_SETCURSORS parametresiyle çağırır ve sistemi imleçleri yüklemeye zorlayabiliriz.
VB.NET kodu :
#Region "SystemParametersInfo" Declare Function SystemParametersInfo Lib "User32" Alias "SystemParametersInfoA" ( _ ByVal uAction As Integer, _ ByVal uparam As Integer, _ ByVal lpvParam As IntPtr, _ ByVal fuWinIni As Integer) As Integer Private Const SPI_SETCURSORS = &H57 Private Const NULL_PTR = 0 #End Region Private Sub ButtonSend_Click( ... ) Handles ButtonSend.Click SystemParametersInfo(SPI_SETCURSORS, 0, NULL_PTR, 0) End Sub
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/a0b5d97f-a9dd-448f-9a6a-fc2836f4f7df
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:34Moderatör
Pencerelerle ilgili işlemler nasıl yapılır?
Birçok Windows programlama senaryosu aşağıdaki durumları gerçekleştirmek için bir Windows Handle kullanmamızı gerektirir :
- Pencereye belirli mesajları göndermek
- Pencere üzerindeki metinlerin alınması/değiştirilmesi
- Pencereden alt sınıflar oluşturmak ve bu sayede pencere davranışlarını değiştirebilmek
Vb,
Eğer ilgilendiğiniz pencere .NET Windows Forms uygulamasındaysa bu pencereye direk olarak Control.Handle özelliğini kullanarak erişebiliriz.
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.handle(VS.80).aspx
Eğer pencere sıradan bir pencere ise bu pencere üzerinde işlem yapabilmek için FindWindow ve FindWindowEx adlarındaki Windows API'leri çağırmalıyız.
FindWindow fonksiyonu en üst seviye pencerelerin (sınıf ve pencere isimleri belirlenen stringlere uyan ve child window (çocuk pencere) olmayan) üzerinde işlem yapılmasına izin verir.
http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx
FindWindowEx fonksiyonuyla belirtilen bir ana pencere üzerinden bu pencereden türeyen çocuk pencerelere ulaşılabilir
http://msdn.microsoft.com/en-us/library/ms633500(VS.85).aspx
Aşağıdaki kod parçası VB.NET üzerinde P/Invoke kullanarak bu iki API'nın tanımlanmasını göstermektedir.
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function FindWindow( _ ByVal lpClassName As String, _ ByVal lpWindowName As String) As IntPtr End Function <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _ Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _ ByVal childAfter As IntPtr, _ ByVal lclassName As String, _ ByVal windowTitle As String) As IntPtr End Function Dim toplevelWindow as IntPtr = FindWindow(“classname”, ”windowcaption”) Dim childWindow as IntPtr = FindWindowEx(toplevelWindow, new IntPtr(0), “classname”, “windowcaption”)
İlişkili forum konuları :
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/1a4c6def-a24b-4a72-8ce5-eaa00c6182f0/
http://social.msdn.microsoft.com/Forums/en-US/vblanguage/thread/3ee8d5f9-b6d3-43c7-b486-dcb92b2edfea/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:41Moderatör
Platform Invoke Ortak Dil Çalışma platformu (CLR) tarafından sağlanan bir servistir. Bu servisi unmanaged DLL fonksiyonlarını managed kod üzerinden çağırmak için kullanırız (Win 32 fonksiyonunu çağırmak). P/Invoke hakkında daha detaylı bilgi için aşağıdaki makaleleri inceleyebilirsiniz.
Interoperating with Unmanaged Code
Marshaling between Managed and Unmanaged Code
the tool P/Invoke Interop Assistant
http://msdn.microsoft.com/en-us/library/aa288468(VS.71).aspx
İlişkili forum konuları :
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/4c486d10-fe8b-49da-a5f1-8054b82251ff/
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/cc5ada5d-2549-4035-884d-60f7282b11f1/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:44Moderatör
VB.NET kullanarak bir kısayol tuşu nasıl belirlenir?
Bu işlem için öncelikle sanal anahtar kodlarını bilmeniz gerekir.
http://msdn2.microsoft.com/en-us/library/ms927178.aspx
Daha sonra P/Invoke RegisterHotkey/UnregisterHotkey API'lerini kullanarak kısayol tuşu atayabilir atadığınız kısayol tuşlarını devre dışı bırakabilirsiniz.
Kod Örneği : Alt+D ,Alt+Cgibi kısayol tuşlarının atanması
Imports System.Runtime.InteropServices Public Class Form1 Public Const MOD_ALT As Integer = &H1 'Alt key Public Const WM_HOTKEY As Integer = &H312 <DllImport("User32.dll")> _ Public Shared Function RegisterHotKey(ByVal hwnd As IntPtr, _ ByVal id As Integer, ByVal fsModifiers As Integer, _ ByVal vk As Integer) As Integer End Function <DllImport("User32.dll")> _ Public Shared Function UnregisterHotKey(ByVal hwnd As IntPtr, _ ByVal id As Integer) As Integer End Function Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load RegisterHotKey(Me.Handle, 100, MOD_ALT, Keys.D) RegisterHotKey(Me.Handle, 200, MOD_ALT, Keys.C) End Sub Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message) If m.Msg = WM_HOTKEY Then Dim id As IntPtr = m.WParam Select Case (id.ToString) Case "100" MessageBox.Show("ALT+D ye bastınız") Case "200" MessageBox.Show("ALT+C ye bastınız") End Select End If MyBase.WndProc(m) End Sub Private Sub Form1_FormClosing(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles MyBase.FormClosing UnregisterHotKey(Me.Handle, 100) UnregisterHotKey(Me.Handle, 200) End Sub End Class
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/ced3b443-b295-4078-9632-afc3f0f44ac6/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:49Moderatör
Mouse veya klavye hareketleri nasıl yakalanır?
VB.NET kullanarak mouse ve klavye hareketlerini yakalamak için P/Invoke kullanarak SetWindowsHookEx,CallNextHookEx,UnhookWindowsHookEx ve GetModulehandle Windows API'leri çağrılmalıdır.
Bu hareket yakalama prosedürünü sonlandırmak için ise UnhookWindowsHookEx fonksiyonunu kullanabiliriz. Burada parametre olarak SetWindowsHookEx fonksiyonundan alabileceğimiz Hook ID kullanılır.
Bu konu hakkında Paul Kimmel'ın hazırladığı bir makale :
http://www.developer.com/net/net/article.php/11087_2193301_1
İlişkili forum konuları :
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/dc85ffc5-90e0-484d-8031-ffb82188feb4/
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/98c8e36f-c0ba-4eac-a679-8b1d32e73ce7/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 13:55Moderatör
COM (Component Object Model) Interop nedir?
COM Interop Ortak Dil Çalışma platformu (CLR) tarafından sağlanan bir başka servistir. .NET kodu ile COM bileşenlerinin kullanılmasına olanak sağlar. Bir COM bileşeni .NET Framework'ten önce bileşenin de içerildiği uygulamayı yaratır. Bu servis yönetimsel uygulamalarla (managed applications) yönetimsel olmayan COM bileşenlerinin (unmanaged COM components) aralarındaki etkileşmeyi de sağlar.Ayrıca kullanmış olduğumuz COM bileşenlerine ait olayları .NET uygulamasında yakalayıp gerekli işlemleri yapabiliriz.
COM Interop hakkında MSDN makalesi :
İlişkili forum konusu :
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:03Moderatör
VB.NET ile VB6 dll dosyası nasıl çağrılır ve kullanılır?
Adım 1 : Visual Basic 6 kullanarak bir ActiveX DLL uygulaması yaratın. Bu uygulamada bir public sınıf ve public metodlar tanımlayın. Bu sayede oluşacak olan DLL Visual Basic.NET içerisinden çağrılabilecektir. Projeyi derleyip DLL dosyasını oluşturun.
Aşağıdaki makalede bu işlem bir demo uygulama ile beraber gösterilmiştir.
http://www.vb-helper.com/howto_net_use_vb6_dll.html
Bu örnekte VB6Project adında bir proje derlenmektedir. Projede MyVB6Class adında public bir sınıf ve yine public olarak tanımlanmış VB6SayHi adında bir alt program ve VB6ReturnHi adında bir fonksiyon tanımlanmıştır.
Adım 2 : Hedef bilgisayarda oluşturduğunuz DLL dosyasını kayıt edin.
Start -> Run Dialog -> regsvr32 VB6Project.dll
Adım 3 : VB.NET projenizde bu VB6 dll dosyasını referans olarak gösterin.
VB.NET Projesinde -> Project -> AddReference -> Com -> Bu aşamada ya dosyayı listeden bulacaksınız ya da browse deyip dizinden göstereceksiniz.
Adım 4 : Bu aşamaya geldiğinizde artık VB.NET projesinden referens ettiğiniz DLL'nin public sınıflarına erişebilirsiniz.
Dim vb6_class As New VB6Project.MyVB6Class vb6_class.VB6SayHi()
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:06Moderatör
Office Word otomasyonu VB.NET'te nasıl gerçekleştirilir?
Projenizde Add Reference diyerek "Microsoft Word Object Library" COM bileşenini referans olarak gösterin.
Kod Örneği : Yeni bir Word dokümanı oluşturun, içerisine 3x5 lik bir tablo yerleştirin ve bu tabloya veri girin,ardından kaydedin.
Imports Word = Microsoft.Office.Interop.Word Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oWord As Word.Application = CreateObject("Word.Application") Dim oDoc As Word.Document = oWord.Documents.Add() oWord.Visible = True Dim r As Integer, c As Integer Dim oTable As Word.Table = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 3, 5) oTable.Range.ParagraphFormat.SpaceAfter = 6 For r = 1 To 3 For c = 1 To 5 oTable.Cell(r, c).Range.Text = "Row" & r & "Col" & c Next Next oTable.Rows.Item(1).Range.Font.Bold = True oTable.Rows.Item(1).Range.Font.Italic = True oDoc.SaveAs("C:\myfile.doc", True) oDoc.Close() oWord.Application.Quit() End Sub End Class
C:\myfile.doc dosyasının içeriği aşağıdaki gibi olacaktır :
Row1Col1
Row1Col2
Row1Col3
Row1Col4
Row1Col5
Row2Col1
Row2Col2
Row2Col3
Row2Col4
Row2Col5
Row3Col1
Row3Col2
Row3Col3
Row3Col4
Row3Col5
İlişkili forum konusu :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/6b9bdf3e-aea7-4eb3-a518-56e5108fa202/
Detaylı bilgi : Yeni bir belge oluşturmak için Visual Basic .NET Word'den otomatikleştirme
http://support.microsoft.com/kb/316383/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:09Moderatör
Office Excel otomasyonu VB.NET'te nasıl gerçekleştirilir?
Projenizde Add Reference diyerek "Microsoft Excel Object Library" COM bileşenini referans olarak gösterin.
Kod Örneği : Excel dokümanında hücre değerini alma/değiştirme.
Imports Microsoft.Office.Interop.Excel Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oExcel As Object = CreateObject("Excel.Application") Dim oBook As Object = oExcel.Workbooks.Open("C:\Book1.xls") Dim oSheet As Object = oBook.Worksheets(1) 'e.g. Read value in A2 cell Dim cellValue As String = oSheet.Range("A2").Value 'e.g. Change value in A2 cell oSheet.Range("A2").Value = "" 'Save this Excel document oBook.SaveAs("C:\Book1.xls", True) oExcel.Quit() End Sub End Class
Ayrıca Excel otomasyonu için aşağıdaki bağlantılardan da yararlanabilirsiniz.
- Her dizi değerini Excel'de ardışık hücrelerde saklamak
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/1a41f104-73ff-4de4-9002-687b5243ba94/
- Yatay veya dikey ardışık hücrelerin toplamını almak
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/6cbe0a15-4e21-4bd1-aad9-ea364443d3f4/
- Excel dosyasındaki tüm çalışma sayfalarının isimlerini alma ve belirli çalışma sayfalarını DataGridView'e bağlamak
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/ce4bbe9c-7d13-44c5-a26c-4b84912a51f3/
- Belirli bir alan içindeki hücreleri DataGridView'e bağlamak
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/91f1f3a7-05e6-4b75-934f-b49e6f0f4f54/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - Her dizi değerini Excel'de ardışık hücrelerde saklamak
-
04 Ekim 2010 Pazartesi 14:18Moderatör
1. En temel olarak bir WebBrowser nesnesini kullanarak web sayfasını yükleyebiliriz. Daha sonra GetElementsByTagName veya GetElementsByID fonksiyonlarını kullanarak WebBrowser.Document içindeki sayfa elemanlarına ulaşıp düzenleme işlemlerini (Sayfadaki metni alma,üye girişi,arama,link verme vb.) yapabiliriz.
Ancak daha önce bu sayfa elemanlarının bilgileri için web sayfasının kaynağını görüntülemeliyiz (Sağ Tık -Sayfa kaynağını göster)
Örneğin : Bir web sitesine otomatik olarak üye giriş işlemini nasıl yaparım?
http://www.website.com/login.aspx sayfasının aşağıdaki elemanlara sahip olduğunu farzedelim.
<input name="UserNameTextBox" type="text" value="myUser" id="UserNameTextBox"> <input name="PasswordTextBox" type="text" value="myUser" id="PasswordTextBox"> <INPUT type=submit value="Login" name="LoginButton">
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Adım 1: WebBrowser Kontrolü yardımıyla sayfanın yüklenmesi WebBrowser1.Navigate("http://www.website.com/login.aspx") System.Threading.Thread.Sleep(2000) ' Login sayfasının görüntülenmesi için 2 saniye gecikme ' Adım 2: Otomatik olarak kullanıcı adı şifrenin girilmesi Dim theElementCollection As HtmlElementCollection theElementCollection = WebBrowser1.Document.GetElementsByTagName("input") For Each curElement As HtmlElement In theElementCollection Dim controlName As String = curElement.GetAttribute("name").ToString If controlName = "UserNameTextBox" Then curElement.SetAttribute("Value", "Username text here") ElseIf controlName = "PasswordTextBox" Then curElement.SetAttribute("Value", "Password text here") 'Aşağıdaki gibi de elemanın değerini alabilirsiniz 'MessageBox.Show(curElement.GetAttribute("Value")) End If Next ' Adım 3: Otomatik olarak Login butonunun tıklanması theElementCollection = WebBrowser1.Document.GetElementsByTagName("input") For Each curElement As HtmlElement In theElementCollection If curElement.GetAttribute("value").Equals("Login") Then curElement.InvokeMember("click") ' Javascript sayesinde tıklama işlemi gerçekleştirilir End If Next End Sub End Class
2.WebBrowser Otomasyonu ile ilgili kod örnekleri :
- Yahoo web sitesine otomatik kullanıcı girişi
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/0b77ca8c-48ce-4fa8-9367-c7491aa359b0/
- Otomatik olarak Windows Live veya Google üzerinden arama gerçekleştirme
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/f06fcdca-ed9b-464b-ba08-edd26b0dc801/
- HTML elemanlarıne erişim : DropDownList/RadioButton/RichTextBox
http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/4ec55500-56a7-4656-b4dd-1e5871fc9806/
- Hyperlink elemanlarına erişim ve "href" özelliklerinden URL değerlerini alma,ardından My.Computer.Network.DownloadFile metodunu kullanarak dosyayı indirmek :
http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/6cd60d72-0695-4408-bf40-d858aefc8945/
3.Web sayfası üzerindeki tablo verisi için Regular Expression kullanmanız gerekebilir. (System.Text.RegularExpressions isim alanı)
İlişkili forum konusu :
Regular Expressions Forumu :
http://social.msdn.microsoft.com/forums/en-US/regexp/threads/
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - Yahoo web sitesine otomatik kullanıcı girişi
-
04 Ekim 2010 Pazartesi 14:23Moderatör
Kendi internet tarayıcınızı nasıl oluşturursunuz?
Çoğunlukla kendi tarayıcımızı var olan WebBrowser kontrolünü kullanarak oluştururuz. WebBrowser kontrolü basit navigason işlemlerini yapabilir.
Örnek olarak : Basit bir internet tarayıcısı oluşturmak
Bir TextBox kontrolünü adres barı olarak,bir Toolstrip kontrolü ve ToolStripButton larını da geri,ileri,durdur,git vb amaçlar için kullanacağız.
Public Class Form1 ' Git butonu Private Sub btnGo_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnGo.Click WebBrowser1.Navigate(txtURL.Text) End Sub ' Adres barında Enter tuşuna basıldığında git işemi Private Sub txtURL_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtURL.KeyDown If e.KeyData = Keys.Enter Then btnGo.PerformClick() e.SuppressKeyPress = True End If End Sub ' Geri butonu Private Sub tsBtnBack_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsBtnBack.Click If WebBrowser1.CanGoBack Then WebBrowser1.GoBack() End If End Sub ' İleri butonu Private Sub tsBtnForward_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsBtnForward.Click If WebBrowser1.CanGoForward Then WebBrowser1.GoForward() End If End Sub ' Dur butonu Private Sub tsBtnStop_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsBtnStop.Click WebBrowser1.Stop() End Sub ' Yenile butonu Private Sub tsRefreshNormal_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsRefreshNormal.Click WebBrowser1.Refresh() End Sub ' Home butonu Private Sub tsBtnHome_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsBtnHome.Click WebBrowser1.GoHome() End Sub ' Arama butonu Private Sub tsBtnSearch_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles tsBtnSearch.Click WebBrowser1.GoSearch() End Sub End Class
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:28Moderatör
1.Kendi tarayıcınız için favorilere/yer imlerine ekleme özelliğini aşağıdaki gibi oluşturabilirsiniz :
Öncelikle yeni bir Settings değişkeni tanımlayın :
Project -> Properties -> Settings adımlarını izledikten sonra aşağıdaki yapılandırmayı kullanıyoruz,
Name favList
Type System.Collections.Specialized.StringColleciton
Scope User
Value (Birkaç ilk değer belirleyin.)
Ön Gereksinimler : Form 1 üzerinde MenuStrip1 (ToolStripMenuItem1 ve ToolStripMenuItem2 ile birlikte) ve WebBrowser1
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ToolStripMenuItem1.Text = "Favorites" ToolStripMenuItem2.Text = "Add" WebBrowser1.Navigate("http://www.microsoft.com") ' Form açıldığında ayarların favorilere yüklenmesi For Each item As String In My.Settings.favList Dim menuItem1 As New ToolStripMenuItem menuItem1.Text = item.ToString ToolStripMenuItem1.DropDownItems.Add(menuItem1) Next 'Favorilerdeki her ToolStripMenuItem bağlantısı için click olayının tanımlanması For Each C As ToolStripItem In ToolStripMenuItem1.DropDownItems If TypeOf (C) Is ToolStripMenuItem Then AddHandler C.Click, AddressOf ToolStripMenuItem_Click End If Next End Sub 'Nesnenin favorilere ve favori liste ayarlarına eklenmesi Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _Handles ToolStripMenuItem2.Click Dim menuItem1 As New ToolStripMenuItem menuItem1.Text = WebBrowser1.Url.ToString ToolStripMenuItem1.DropDownItems.Add(menuItem1) My.Settings.favList.Add(WebBrowser1.Url.ToString) End Sub 'Favoriler menusünden seçim yapıldığında yapılan seçime navigasyonun sağlanması Private Sub ToolStripMenuItem_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) WebBrowser1.Navigate(sender.ToString) End Sub 'Form kapandığında ayarların kaydedilmesi Private Sub Form1_FormClosed(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.FormClosedEventArgs) _ Handles MyBase.FormClosed My.Settings.Save() End Sub End Class
2.Sekmeli yapıyı internet tarayıcınıza kazandırmak için yapılacaklar;
Oluşturacağınız yeni TabPage nesnesine WebBrowser'ınızı ekleyin daha sonra ise TabPage nesnesini TabControl nesnesine ekleyin.
Dim wb As New WebBrowser wb.Navigate("URL") Dim tab As New TabPage("Title") tab.Controls.Add(wb) TabControl.TabPages.Add(tab) TabControl.SelectedTab = tab
Sekme fonksiyonuna sahip tarayıcılar ile ilgili detaylı bilgi için takip eden bağlantıları inceleyebilirsiniz :
http://social.msdn.microsoft.com/Forums/en/vbgeneral/thread/827d96b1-2868-4624-ad32-10917d87a9ed
http://www.codeproject.com/KB/vb/TabPages.aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:32Moderatör
Veritabanı da içeren bir Windows Forms uygulaması ClickOnce kullanarak nasıl yayınlanır/dağıtılır?
Adım 1 : Yeni bir Windows Forms uygulaması yaratın.
Adım 2 : Projenize bir Data Source ekleyin (SqlDatabase.mdf gibi bir database dosyası seçin.)
Adım 3 : Form1 üzerinde DataGridView1 kontrolünü tanımlayın ve veritabanı bağlantı katarını ( connection string ) |DataDirectory| kullanarak işaret edin.
Imports System.Data.SqlClient Public Class Form1 'Binding database table to DataGridView Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim con As SqlConnection = New SqlConnection( _ "Data Source=.;Integrated Security=True;AttachDbFilename=|DataDirectory|\SqlDatabase.mdf") Dim cmd As SqlCommand = _ New SqlCommand("SELECT * FROM Table1", con) con.Open() Dim myDA As SqlDataAdapter = New SqlDataAdapter(cmd) Dim myDataSet As DataSet = New DataSet() myDA.Fill(myDataSet, "MyTable") DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView con.Close() con = Nothing End Sub End ClassAdım 4 : SqlDatabase.mdf dosyasını Solution Explorer'dan seçin ve özelliklerine bir göz atın :
"Build Action" özelliğinin "Content" olarak ayarlandığından emin olun.
"Copy to Output Directory" özelliği ise "Copy if newer" olarak seçilmiş olmalıdır.
Adım 5 : Project -> Properties -> Publish adımlarını izledikten sonra "Application Files" butonuna tıklayarak veritabanı dosyasının listede olup olmadığını kontrol edin, ayrıca veritabanı dosyasının "Publish Status" özelliği "Data File (Auto)" olmalı, "Download Group" özelliği ise "(Required)" olmalıdır.
Adım 6 : Project -> Properties -> Publish adımlarından sonra "Publish Now" diyerek projenizi yayınlayabilirsiniz/dağıtabilirsiniz.
Database dosyası "Data" klasörünün içerisinde projenizle beraber dağıtılacaktır. Uygulamanın kurulum klasörünün içerisinde ayrıca bir exe.config dosyası da gelecektir.
-
04 Ekim 2010 Pazartesi 14:38Moderatör
ClickOnce uygulaması her kullanıcı için Application Cache'e (Uygulama önbelleği) kurulur ( X:\Program Files\folder değil ) ve ClickOnce servisi tarafından yürütülür. ClickOnce kullanarak başa bir klasöre direk kurulum yapmanız mümkün değildir. Bu ClickOnce kurulum dizinini değiştiremeyeceğiniz anlamına gelir.
ClickOnce kullanarak geliştirme yapmak çok kullanışlıdır ancak her durum için en iyi yol değildir. Aşağıda bazı kısıtlamalardan bahsedilecektir :
- ClickOnce uygulamaları sadece bir kullanıcı için kurulur. Eğer birkaç kullanıcı aynı bilgisayara farklı kullanıcı adlarıyla giriş yaparsa
hepsi için ayrı ayrı kurulum gerekecektir. Her kullanıcının yararlanacağı bir kurulum yapamazsınız.
- ClickOnce kullanarak yapılan kurulumun kısayolun dizinini değiştiremezsiniz. Bunu manuel olarak kendiniz yapabilmenize karşın ClickOnce size bu imkanı
sunmaz.
- ClickOnce kullanarak paylaşılan bileşenleri GAC (Global Assembly Cache) içerisine kuramazsınız. İşin aslı olağan olarak yaptığınız veritabanı oluşturma,dosya tiplerinin kayıt defterine kaydı,kayıt defteri ayarlarını konfigüre etmek haricinde hiçbirşey yapamazsınız.
ClickOnce bir Program grubu menüsü kısayolu oluşturacaktır :
Başlat -> TümProgramlar altında "Publisher Name -> "Product Name"
Burada "Publisher Name" ve "Product Name" özelliklerini
Project -> Properties -> Publish -> "Options" butonuna tıklayarak değiştirebilirsiniz.
ClickOnce'tan daha esnek ve güçlü konfigürasyonlara ve otomasyon gereksinimlerine izin verebilmek için Windows Installer baz alınarak hazırlanmış "Setup Project" aracını kullanabilirsiniz.
Aşağıda detaylı bilgi alabileceğiniz makaleler mevcuttur :
ClickOnce ve Windows Installer karşılaştırma tablosu :
http://msdn.microsoft.com/en-us/library/142dbbz4.aspx
Dağıtım stratejisi seçimi :
http://msdn.microsoft.com/en-us/library/e2444w33.aspx
Ne zaman COPY yerine Windows Installer kullanacağına karar verme :
http://msdn.microsoft.com/en-us/library/aa302347.aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - ClickOnce uygulamaları sadece bir kullanıcı için kurulur. Eğer birkaç kullanıcı aynı bilgisayara farklı kullanıcı adlarıyla giriş yaparsa
hepsi için ayrı ayrı kurulum gerekecektir. Her kullanıcının yararlanacağı bir kurulum yapamazsınız.
-
04 Ekim 2010 Pazartesi 14:42Moderatör
Başlangıç klasöründe veya masaüstündeki uygulama kısayolları nasıl eklenir/kaldırılır?
ClickOnce uygulama kısayollarını beklediğiniz şekilde oluşturmaz.
Ancak projeniz .NET Framework 3.5 kullanıyorsa ve .NET Framework 3.5 SP1 güncellemesi yapılmışsa ClickOnce kullanarak uygulamanız için bir masaüstü kısayolu oluşturabilirsiniz.
Project -> Properties -> Publish -> Options -> Manifests -> "Create desktop shortcut" seçeneğini tiklediğinizde bu özelliği kullanmaya başlayabilirsiniz.
Eğer projeniz .NET Framework 3.5'tan önceki versiyonları kullanıyorsa ya da istediğiniz herhangi bir yerde kısayol oluşturmak istiyorsanız Windows Scripting Host (WSH) çalışma zamanı kütüphanesini (IWshRuntimeLibrary) kullanabilir ve programatik olarak kısayollar oluşturabilirsiniz.
İlk olarak AddReference -> COM sekmesi -> " Windows Script Host Object Model" seçip projenize referans olarak ekleyin.
Kod Örneği : Başlangıç klasöründe uygulama kısayolu yaratmak
Ön Gereksinimler : Form1 üzerinde Button1 ve Button2
Imports IWshRuntimeLibrary Public Class Form1 Dim StartupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.Startup) Dim shortcutFilePath As String = StartupFolder & "\MyShortcut.lnk" ' Başlangıç klasörüne kısayol ekleme/kısayol oluşturma Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim WshShell As WshShellClass = New WshShellClass Dim MyShortcut As IWshRuntimeLibrary.IWshShortcut ' Kısayolun başlangıç klasöründe oluşturulacağını belirtiyoruz MyShortcut = CType(WshShell.CreateShortcut(shortcutFilePath), IWshRuntimeLibrary.IWshShortcut) 'Hedef dosyanın yolunu gösteriyoruz MyShortcut.TargetPath = Application.StartupPath & "\YourAppName.exe" ' mesela MyShortcut.TargetPath = "C:\WINDOWS\system32\calc.exe" MyShortcut.Save() End Sub 'Kısayolun silinmesi işlemi Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If IO.File.Exists(shortcutFilePath) Then IO.File.Delete(shortcutFilePath) End If End Sub End Class
Dilerseniz masaüstünde de kısayolu oluşturabilirsiniz :
Dim DesktopFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) Dim StartMenuFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.StartMenu)
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:45Moderatör
Adım 1 : Örneğin MS Access Database dosyası myDB.mdb aşağıdaki alanlara sahip bir Users tablosu içersin :
Username Text
Password TextAdım 2 : Yeni bir Windows Forms uygulaması oluşturun ve bir "Login Form" şablonu ekleyin :
Project -> Add Windows Form -> "Login Form"
Adım 3 : Kod Örneği
Ön Gereksinimler : Login Form üzerinde txtUserName TextBox,txtPassword TextBox,OK Button ve Cancel Button.
Imports System.Data.OleDb Public Class LoginForm1 ' OK butonu Private Sub OK_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles OK.Click Dim con As New OleDbConnection("Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb") Dim cmd As OleDbCommand = New OleDbCommand( _ "SELECT * FROM Users WHERE Username = '" & _ txtUsername.Text & "' AND [Password] = '" & txtPassword.Text & "' ", con) con.Open() Dim sdr As OleDbDataReader = cmd.ExecuteReader() 'Eğer kayıt sorgulanabiliyorsa bu doğrulamadan geçtiği anlamına gelir,daha sonra başka bir form açılır. If (sdr.Read() = True) Then MessageBox.Show("The user is valid!") Dim mainForm As New MainForm mainForm.Show() Me.Hide() Else MessageBox.Show("Invalid username or password!") End If End Sub ' Cancel butonu Private Sub Cancel_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Cancel.Click Me.Close() End Sub End Class
Not : Yukarıdaki txtPassword içerisindeki şifre kontrolü büyük küçük harf duyarlı değildir.
Şifrenin büyük-küçük harf duyarlı olmasını sağlamak için önce veritabanından DataReader nesnesi ile gelen şifreyi alın ve txtPassword kontrolü içerisindeki veriyle karşılaştırın. Örnek olarak :
Imports System.Data.OleDb Public Class LoginForm1 Private Sub OK_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles OK.Click Dim con As OleDbConnection = New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\myDB.mdb;") Dim cmd As OleDbCommand = New OleDbCommand( _ "SELECT * FROM Users WHERE Username='" & _ txtUsername.Text & "' and [Password]='" & txtPassword.Text & "'", con) con.Open() Dim sdr As OleDbDataReader = cmd.ExecuteReader() ' Bu alanda yapılan kontrol ile büyük küçük harf duyarlılığı sağlanmış olur. If sdr("Password") <> txtPassword.Text.ToString() Then MessageBox.Show("Invalid password!") End If sdr.Close() con.Close() End Sub End Class
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 14:49Moderatör
Veritabanına BLOB (Binary Large Object) tipinde veri (resim-doküman) nasıl kaydedilir?
- BLOB verinin ( resim,doküman vb.) saklanması noktasındaki görüş dosyanın veritabanına kaydedilmeden önce bir byte dizisi haline
getirilmesi ve dizi veritabanından alındıktan sonra tekrar dosya haline getirilmesidir.
T-SQL Veri Tipi
Üye Adı
Açıklama
Binary
Byte tipinde dizi . 1 ile 8000 byte arasında değişen ikili veri.
Image
Byte tipinde dizi. 0 ile (2 üzeri 31) -1 ( ya da 2,147,483,647) byte arasında değişen ikili veri.
Kod Örneği :
http://social.msdn.microsoft.com/forums/en-US/vbgeneral/thread/0fb5fd05-3eb5-4568-9e2a-fd9ba5ed5a3e
- İkili verilerin veritabanında saklanması süreci bu verinin veritabanından alınmasına geldiğinde biraz hantallaşabilir. Bu nedenle en geniş kabul görmüş olan fikir dosya yolunun veritabanında saklanması dosyanın kendisinin ise dosya sisteminde kalmasıdır.
- Bunlara ek olarak
SQL Server 2008 içerisinde
FileStream veri tipi adında yeni
bir veri tipi tanımlanmıştır. Bu veri tipi sayesinde BLOB verilerin SQL Server 2008 ve
NTFS dosya sistemi kombinasyonu
kullanıldığında daha rahat saklanabildiği ve erişimin kolaylaştığı görülür.Aşağıdaki makalede BLOB cinsinden verilerin SQL Server üzerinde saklanması ve alınmasıyla ilgili bilgi verilmektedir :
http://www.codeproject.com/KB/database/Store_and_manipulat_BLOBs.aspx
FileStream SQL Server Database Engine ile NTFS dosya sistemini entegre eder. Transact-SQL kullanarak FileStream verileri insert-update-search-back up- query işlemlerine tabi tutabiliriz. Win32 dosya sistemi arayüzleri veriye erişimi olanaklı kılar.
Bu konuda detaylı bilgi alınabilecek bağlantılar :
http://msdn.microsoft.com/en-us/library/bb933993.aspx
http://msdn.microsoft.com/en-us/library/cc949109(SQL.100).aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - BLOB verinin ( resim,doküman vb.) saklanması noktasındaki görüş dosyanın veritabanına kaydedilmeden önce bir byte dizisi haline
getirilmesi ve dizi veritabanından alındıktan sonra tekrar dosya haline getirilmesidir.
-
04 Ekim 2010 Pazartesi 14:52Moderatör
Basit bir veri erişim uygulaması nasıl yapılır? (Ekleme-silme-değiştirme-sayfalama vb.)
Bu soru için 4 farklı yaklaşım incelenecektir :
- DataGridView kullanarak
Kod Örneği :
Imports System.Data.OleDb Public Class Form1 Dim myDA As OleDbDataAdapter Dim myDataSet As DataSet Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim con As OleDbConnection = New OleDbConnection( _ "Provider=Microsoft.jet.oledb.4.0;data source=|DataDirectory|\myDB.mdb") Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1", con) con.Open() myDA = New OleDbDataAdapter(cmd) ' Burada bir CommandBuilder nesnesi gereklidir. 'Bu nesne otomatik olarak InsertCommand 'UpdateCommand ve DeleteCommand nesnelerini DataAdapter nesnesi için oluşturacaktır. Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(myDA) myDataSet = New DataSet() myDA.Fill(myDataSet, "MyTable") DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView con.Close() con = Nothing End Sub ' Verinin veritabanına tekrar kaydedilmesi işlemi Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Me.Validate() Me.myDA.Update(Me.myDataSet.Tables("MyTable")) Me.myDataSet.AcceptChanges() End Sub End Class
Ayrıca veritabanı dosyasını Solution Explorer dan seçip Properties'ine gittiğinizde "copy to output directory" özelliğini "copy if newer" olarak ayarlamalısınız.
- Select/Insert/Delete/Update
cümlelerini kod içerisinden çağırabilirsiniz:
MS Access veritabanı için kod örneği :
http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/87913f28-992d-4705-963b-cb0ffa53d8dd/
SQL Server veritabanı için kod örneği :
http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/89e1067d-16e7-44e8-b12d-d78845bf255f/
- BindingNavigator kontrolü ile birlikte Data Wizard kullanabilirsiniz.
Detaylı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz:
Ayrıca veritabanı dosyasını Solution Explorer dan seçip Properties'ine gittiğinizde "copy to output directory" özelliğini "copy if newer" olarak ayarlamalısınız.
4. DataSet/DataTable nesneleriyle kod içerisinde çalışabilirsiniz.
Detaylı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz:
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. - DataGridView kullanarak
-
04 Ekim 2010 Pazartesi 14:55Moderatör
Veritabanındaki veriler üzerinde nasıl arama ve filtreleme yapılır?
Veritabanındaki kayıtlar üzerinde arama veya filtreleme yapmak için aşağıda 2 yaklaşım incelenmiştir :
1. T-SQL Select komutu ile kayıtların filtrelenmesi
Ön Gereksinimler : Form1 üzerinde DataGridView1 ve TextBox1
Imports System.Data.OleDb Public Class Form1 Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim keywords As String = TextBox1.Text Dim con As OleDbConnection = New OleDbConnection( _ "Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb") Dim cmd As OleDbCommand = New OleDbCommand( _ "SELECT * FROM Table1 WHERE Filed1 Like '%" & keywords & "%' ", con) con.Open() Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd) Dim myDataSet As DataSet = New DataSet() myDA.Fill(myDataSet, "MyTable") DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView End Sub End Class2. DataView.RowFilter özelliğinin kullanımı ile kayıtların filtrelenmesi
Ön Gereksinimler : Form1 üzerinde DataGridView1 ve TextBox
Imports System.Data.OleDb Public Class Form1 Dim ds As DataSet Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim con As OleDbConnection = New OleDbConnection( _ "Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb") Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Table1", con) con.Open() Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd) ds = New DataSet() myDA.Fill(ds, "MyTable") con.Close() DataGridView1.DataSource = ds.Tables("MyTable").DefaultView End Sub Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles TextBox1.TextChanged Dim keywords As String = TextBox1.Text ds.Tables("MyTable").DefaultView.RowFilter = "Field1 =" & keywords End Sub End Class
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 15:01Moderatör
Çoğunlukla projeye Data Source olarak bir veritabanı dosyası (.mdb,.mdf,.sdf vb.) eklenir ve uygulamada veriye erişim sağlanmış olur. Daha sonra veri girildikten ya da değiştirildikten sonra uygulama yeniden başlatıldığında veritabanı güncellenmemiş olarak görünür.
Neden:
Data Source eklediğinizde, Visual Studio .NET veritabanının 2 kopyasını oluşturur biri proje klasöründe biri de bin klasöründe olmak üzere. Uygulama her yeniden başlatıldığında eski olan ikincisi kopyalanır sonuç olarak temiz bir kopya elde edersiniz.
Çözüm:
Veritabanı dosyasını Solution Explorer dan seçip Properties'ine gittiğinizde "copy to output directory" özelliğini "copy if newer" olarak ayarlamalısınız.
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 15:04Moderatör
VB.NET kullanarak veritabanında parametreli sorgu işlemleri nasıl yapılır?
Kod Örneği : Parametreli sorgunun SQL Server veritabanı kullanılarak işletilmesi
Imports System.Data.SqlClient Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim con As SqlConnection = New SqlConnection( _ "Data Source=.;Integrated Security=True;AttachDbFilename=D:\myDB.mdf") con.Open() Dim cmdText As String = _ "INSERT INTO Customer(UserName, [Password]) VALUES (@UserName,@Password)" Dim cmd As SqlCommand = New SqlCommand(cmdText, con) With cmd.Parameters .Add(New SqlParameter("@UserName", txtUserName.Text)) .Add(New SqlParameter("@Password", txtPassword.Text)) End With cmd.ExecuteNonQuery() con.Close() con = Nothing End Sub End Class
Kod Örneği : Parametreli sorgunun MS Access veritabanı kullanılarak işletilmesi
Imports System.Data.OleDb Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim con As OleDbConnection = New OleDbConnection( _ "Provider=Microsoft.jet.oledb.4.0;data source=D:\myDB.mdb") con.Open() Dim cmdText As String = "INSERT INTO Customer(UserName, [Password]) VALUES (?,?)" Dim cmd As OleDbCommand = New OleDbCommand(cmdText, con) cmd.CommandType = CommandType.Text ‘ The default is CommandType.Text With cmd.Parameters .Add("@p1", OleDbType.VarChar).Value = txtUserName.Text .Add("@p2", OleDbType.VarChar).Value = txtPassword.Text End With cmd.ExecuteNonQuery() con.Close() con = Nothing End Sub End Class
Ayrıntılı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz :
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
04 Ekim 2010 Pazartesi 15:05Moderatör
IDE menüsünü kullanarak varolan bir proje farklı yerel lokasyona kaydedilebilir mi?
Şu anda Visual Studio IDE'sinin "Tüm projeji farklı kaydet" gibi bir fonksiyonu mevcut değildir. Visual Studio IDE sinin kullandığı tüm "Kaydet" komutları belirlenmiş tek bir dosya içindir. Varolan bir projenin kaydedilmesi için önerilen yaklaşımlar aşağıdadır :
- Tüm proje klasörünü hedef lokasyona kopyala-yapıştır kullanarak taşımak
- VSS veya Team Foundation Server gibi kaynak kod yönetim araçları kullanarak amaca ulaşmak
İlişkili forum konuları :
http://social.msdn.microsoft.com/forums/en-US/vbide/thread/4356ddc4-3626-4049-87b5-e95e7ba264ab/
http://social.msdn.microsoft.com/forums/en-US/csharpide/thread/440934e5-1ba8-4eac-a9b5-e24d12a2709b/
http://social.msdn.microsoft.com/Forums/en/Vsexpressvb/thread/ae30f04f-4f43-40f4-8bb4-386896aa72bf
Emre Günertürk, MSFT
Microsoft bu servisi kullanıcılarına teknik destek verme,Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi gibi bir sorumluluk üstlenildiği anlamına gelmez. -
10 Mayıs 2011 Salı 20:57
sayın emre günertürk,
çok güzel olduğuna inandığım (bilgi yetersizliğimden tam göremediğimi düşünüyorum) bilgiler vermişsiniz. ben bu çalışmanın bir kısmını (loginform hazırlayıp ad ve şifre doğrulayarak programa giriş) msde 2000 yüklü olmasına rağmen kullanmadım. ama itiraf edeyim sihirbazları kullandım. sihirbazlar msde 2000 ı gizli bir şekilde kullanmış olabilir. benzer kodlarla hazırladım. vt güncellenmesi gibi sorunlarla karşılaştım.
sorum: ben msde2000 kullanmadım diyerek, kendimi kandırmış mı oldum? yok eğer .net teknolojisinin altyapısı bunu gerektiriyor diyorsanız, yine msde2000 kullanmadan bahsettiğiniz "Veritabanı dosyasını Solution Explorer dan seçip Properties'ine gittiğinizde "copy to output directory" özelliğini "copy if newer" olarak ayarlamalısınız" yapabilir miyiz?
deneyeceğim. ama yine de vereceğiniz cevaplar benim ne kadar doğru anladığımı anlamam için faydalı olacaktır. tabi ki eğer kabul ederseniz...
-
09 Nisan 2012 Pazartesi 08:10
Sevgili Emre,
VS2010 da Oluşrurulan VB-ASP.NET Web Application örneğinden hareketle,Site.master içinde
<asp:MenuItem NavigateUrl="~/MainPage.aspx" Text="Main"/>
oluşturulan 'MainPage.aspx' sayfasının
Kullanıcının LogIn olması halinde
-- Menüde görünmesini
-- Kullanıcının LogIn durumunda bu sayfayı ziyaret edebilmesini
-- Bu sayfaya girilince de 'ChangePassword.aspx' sayfasını ziyaret edebilmesiniBenim gibi Amatör birine anlatabilirmisin..?
Tşk.
-
09 Nisan 2012 Pazartesi 08:18Moderatör
Merhaba,
Sanıyorum belli bir menu item'in kullanıcı sadece login olduğunda menü içerisinde görünmesini istiyorsun. Eğer değilse direk ChangePassword sayfasına gidecek soru bu?
İstersen ASP.NET forumunda yeni bir konu oluştur, dil olarak VB.NET kullandığından da bahset yine,böylece kullanıcıların daha çok ilgisini çekip yanıt alabilirsin.
Microsoft bu servisi kullanıcılarına yardım etme, Microsoft ürünleri ve teknolojileriyle ilgili bilgi bankasını genişletme amacıyla ücretsiz sunmaktadır.
Bu içerik olduğu gibi benim tarafımdan hazırlanmış olup Microsoft tarafından herhangi bir sorumluluk üstlenildiği anlamına gelmez.
Facebook Üzerinden Takip Et!
Twitter'da Takip Et!
-
07 Ocak 2013 Pazartesi 21:02
Ama Attik Bu Yakalama Taktikleri Deyisti sindi Anti VirusLer Sorun Cikartiyor :D