coding @ the speed of thought RSS 2.0
 Tuesday, June 12, 2007


.NET ve MOBİL TEKNOLOJİLER SEMİNERİ

CETURK, Mayıs ayının konusuna uygun olarak .NET ve MOBİL TEKNOLOJİLER konulu bir seminer gerçekleştiriyor. Katılımın ücretsiz olduğu seminer, 16 Haziran Cumartesi günü 13:00-15:00 saatleri arasında Microsoft Türkiye İstanbul ofisinde gerçekleştirilecektir.

Konuşmacı :Mobile Device MVP ERALP ERALT
Seminer Yeri :

Microsoft İstanbul Ofisi
Barbaros Plaza 145-C, Dikilitaş
34349 İstanbul

Kayıt olmak için :
http://www.ceturk.com/etkinlikkayit.asp?id=26


Tuesday, June 12, 2007 4:28:49 PM (GTB Standard Time, UTC+02:00)  #    Comments [0] -
Genel | Software
 Sunday, June 10, 2007

Sunday, June 10, 2007 6:56:49 PM (GTB Standard Time, UTC+02:00)  #    Comments [1] -
Software
 Saturday, June 02, 2007

Herkese matrix yaklaşıyor, matrix gerçek olacak dediğimde, ha ha ha diyorlardı bana...
Matrix 2'de, Nebuchadnezzar'ın Zion'a ilk girişinde, kapı kontrolörleri local bir matrix'e bağlıydı, bilgisayar kullanıyorlardı ve klavyeleri yoktu...



bana çok benzer geldi...

Saturday, June 02, 2007 9:21:12 PM (GTB Standard Time, UTC+02:00)  #    Comments [0] -
Genel | Software
 Friday, June 01, 2007

Artık 30 dan gün alıyorum.Yolu yarıladım...
Bu ana kadar yanımda olan herkese çok teşekkür ediyorum...

Friday, June 01, 2007 9:32:41 PM (GTB Standard Time, UTC+02:00)  #    Comments [2] -
Genel
 Wednesday, May 30, 2007

http://www.csharpnedir.com/netvideo.asp linkinde bulunan Derinlemesine GridView & DetailsView görsel dersim hakkında Fatih arkadaşımızın sorusu:
Benim anlamadığım bir nokta var: SP içinde id değerini kullanıyoruz oysaki en başta DataBind işlemini gerçekleştirirken bu kolonu remove etmiştik.

Evet Id kolonunu gridview üzerinde remove ettik ve id boundfield'larda gözükmüyor, fakat Gridview'un DataKeyNames özelliğine id kolonu atanmıştır.Dolayısı ile id alanı değeri gridview tarafından halen tutulmaktadır.Bu alana , (virgül) ayracı ile birden fazla kolon ismi atayabilirsiniz...

Umarım açıklayıcı olmuştur.

Wednesday, May 30, 2007 7:13:56 AM (GTB Standard Time, UTC+02:00)  #    Comments [0] -
Software
 Monday, May 28, 2007

BHO nedir ilk önce bunu açıklayalım.Browser Helper Object, işletim sisteminde Browser görevini üstlenmiş bileşenler üzerinde çalışmak için tasarlanmış eklentilerdir.Internet Explorer 'a yazılan eklentiler iyi bir BHO örneği olacaktır.

BHO objemiz IObjectWithSite arayüzünden türemelidir.Bu arayüzün SetSite ve GetSite isminde iki metodu mevcuttur.İlk önce bu arayüzü gözden geçirelim.

using System;
using System.Runtime.InteropServices;

namespace MyBHO
{
[ComVisible(true),
Guid("FC4801A3-2BA9-11CF-A229-00AA003D7352"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IObjectWithSite
{
[PreserveSig]
int SetSite([MarshalAs(UnmanagedType.IUnknown)]object site);
[PreserveSig]
int GetSite(ref Guid guid, out IntPtr ppvSite);
}
}

IE herhangi bir browser kontrolü oluşturduğunda SetSite çalışacak ve biz de gerekli nesneleri burada atayacağız.
Şimdi IObjectWithSite arayüzünden türeyen MyBHO sınıfımızı inceleyelim.

using System;
using System.Collections.Generic;
using System.Text;

using System.Runtime.InteropServices;
using Microsoft.Win32;
using SHDocVw;

namespace MyBHO
{
[ComVisible(true),
ClassInterface(ClassInterfaceType.None)]
public class MyBHO : IObjectWithSite
{
WebBrowser webBrowser;

public MyBHO()
{
}

public static string BHOKEYNAME = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";

[ComRegisterFunction]
public static void RegisterBHO(Type t)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true);

if (key == null)
key = Registry.LocalMachine.CreateSubKey(BHOKEYNAME);

string guidString = t.GUID.ToString("B");
RegistryKey bhoKey = key.OpenSubKey(guidString);

if (bhoKey == null)
bhoKey = key.CreateSubKey(guidString);

key.Close();
bhoKey.Close();
}

[ComUnregisterFunction]
public static void UnregisterBHO(Type t)
{
RegistryKey key = Registry.LocalMachine.OpenSubKey(BHOKEYNAME, true);
string guidString = t.GUID.ToString("B");

if (key != null)
key.DeleteSubKey(guidString, false);
}

public void webBrowser_BeforeNavigate2(object pDisp, ref object Url,
ref object Flags, ref object TargetFrameName, ref object PostData,
ref object Headers, ref bool Cancel)
{
string _Url = (string)Url;
Uri _uri = new Uri(_Url);
if (_uri.Host == "www.leventyildiz.net")
{
Cancel = true;
System.Windows.Forms.MessageBox.Show("Bu siteye çıkamazsınız");
}
}

#region IObjectWithSite Members
public int SetSite(object site)
{
if (site != null)
{
webBrowser = (WebBrowser)site;
if (webBrowser != null)
{
webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
}
}
else
{
if (webBrowser != null)
{
webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
webBrowser = null;
}
}
return 0;
}

public int GetSite(ref Guid guid, out IntPtr ppvSite)
{
IntPtr punk = Marshal.GetIUnknownForObject(webBrowser);
int hr = Marshal.QueryInterface(punk, ref guid, out ppvSite);
Marshal.Release(punk);

return hr;
}
#endregion
}
}

Açıklamalar
SHDOCVW
using SHDocVw;
SetSite metodu ile gelen object türünden site nesnesi "Microsoft Internet Controls" com'unda (ShDocVw.dll) bulunan WebBrowser nesnesine dönüştürülerek kullanılacağından dolayı bu com'u projemize register etmemiz gerekmektedir.

BHOKEYNAME
public static string BHOKEYNAME = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects";
Bu string, IE nin eklentilerinin kaydedildiği registry key'i dir.Assembly mizi register ettiğimizde ComRegisterFunction niteliği ile işaretlenmiş public static void RegisterBHO(Type t) metodu çalışacak ve gerekli işlemler yapılacaktır.Unregister da ise tahmin edeceğiniz gibi ComUnregisterFunction niteliği ile işaretlenmiş public static void UnregisterBHO(Type t) metodu çalışacak ve eklentinin IE kaydından çıkartılması için gerekli işlemler yapılacaktır.

SetSite
public int SetSite(object site)
{
if (site != null)
{
webBrowser = (WebBrowser)site;
if (webBrowser != null)
{
webBrowser.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
}
}
else
{
if (webBrowser != null)
{
webBrowser.BeforeNavigate2 -= new DWebBrowserEvents2_BeforeNavigate2EventHandler(webBrowser_BeforeNavigate2);
webBrowser = null;
}
}
return 0;
}

bu kod IE yeni bir webbrowser kontrolü oluşturduğunda çalışacak koddur.Biz bu metodda gönderilen object türünden site nesnesini sınıf bazında erişimi olan webbrowser nesnemize set ediyoruz.Bu işlem esnasında webBrowser_BeforeNavigate2 metodunu webbrowser nesnesinin BeforeNavigate2 olayına bağlıyoruz.Dolayısı ile yeni bir sayfa açılmak istendiğinde ilk önce bizim metodumuz çağıralacak ve gerekli kontrolleri yapabiliyor olacağız.

BeforeNavigate
public void webBrowser_BeforeNavigate2(object pDisp, ref object Url,
ref object Flags, ref object TargetFrameName, ref object PostData,
ref object Headers, ref bool Cancel)
{
string _Url = (string)Url;
Uri _uri = new Uri(_Url);
if (_uri.Host == "www.leventyildiz.net")
{
Cancel = true;
System.Windows.Forms.MessageBox.Show("Bu siteye çıkamazsınız");
}
}

En basit metod :) gitmek istenilen Url bize metod tarafından bildiriliyor, bizde bunu kontrol edip izin veriyoruz veya işlemi iptal ediyoruz.Tabi bu metodda istediğimiz gibi kontroller gerçekleştirebilir, windows formlarıyla bilgi alabiliriz...

Yapılacak son işlem projemizi derledikten sonra regasm tool'u ile assembly mizi register etmek olacaktır.

vs 2005 command prompt ta

regasm /codebase MyBHO.dll
komutu IE add-on'umuzu register eder...
regasm /unregister MyBHO.dll
komutu IE add-on'umuzu unregister eder...

Sonuç olarak add-onumuzu IE özellikleri penceresinde görebiliriz.

Monday, May 28, 2007 2:47:16 PM (GTB Standard Time, UTC+02:00)  #    Comments [1] -
Software
 Sunday, May 27, 2007

Tüm İSTEK'lilere...
Yahu öldük mü biz?

Pazar günü okulun pilav günü vardı...Emre ile birlikte bir heyecanla okula gittik...
aaa hiçkimseyi tanımıyoruz.Hocalar değişmiş...Bir bilemedin iki hocayı tanıyoruz.
İlk önce fazla önemsemedik, gelir bizimkiler dedik, aldık basketbol topunu Emre ile eski günleri
andık.Kısa bir anma töreni oldu çünkü maç 2-2 iken ikimizde öldük...

Pilav gününün sonlarına doğru gidip listeye baktığımızda mezunların tarihleri 2000 den
başlıyordu, ve 95 mezunu 3 kişiydik...

Nerde İSTEK ruhu, nerde Tarabya Tatil Köyü ruhu arkadaşlar...

Sunday, May 27, 2007 11:04:15 AM (GTB Standard Time, UTC+02:00)  #    Comments [0] -
Genel
 Wednesday, May 23, 2007

Bırakın veritabanına kullanıcılar kendi formüllerini girsinler, uğraşılmaz bu kullanıcılarla canım...

declare
@v1        int,
        @v2        int,
        @v3        int

declare @formula    nvarchar(50)

set @v1=2
set @v2=4
set @v3=5
set @formula='SELECT (@v1+@v3)*@v2'

set @formula=replace(@formula,'@v1',convert(varchar,@v1))
set @formula=replace(@formula,'@v2',convert(varchar,@v2))
set @formula=replace(@formula,'@v3',convert(varchar,@v3))

print @formula
EXEC sp_executesql @formula

Wednesday, May 23, 2007 9:27:05 PM (GTB Standard Time, UTC+02:00)  #    Comments [0] -
Post-It | T-Sql
Archive
<June 2007>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Levent YILDIZ
Sign In
Statistics
Total Posts: 99
This Year: 31
This Month: 10
This Week: 2
Comments: 28
Themes
Pick a theme:
All Content © 2008, Levent YILDIZ
DasBlog theme 'Business' created by Christoph De Baene (delarou)