İExplorere buton ekleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

İExplorere buton ekleme

Mesaj gönderen sako »

Aşağıdaki kod isle İnternet Explorer komut çubuğuna buton ekliyorum. Ancak en sona ekliyor ve butonlar çok olunca benim butonum görünmüyor. Acaba butonlarda bir sıralama yapılabilir mi ?

var
Reg: TRegistry;
Path: string;
Path1: string;
Merge: string;
begin
Path := 'C:\Users\sako\Desktop\program.exe;
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
Path1 := 'Software\Microsoft\Internet Explorer\Extensions';
Merge := Path1 + Tagit;
OpenKey(Merge, True);
WriteString('ButtonText', 'Programı Aç');
WriteString('MenuText', 'Resim');
WriteString('MenuStatusBar', 'Run Script');
WriteString('ClSid', '{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}');
WriteString('Default Visible', 'Yes');
WriteString('Exec', Path);
WriteString('HotIcon', 'C:\Users\sako\Desktop\resim.ico');
WriteString('Icon', 'C:\Users\sako\Desktop\resim.ico');
end
finally
Reg.CloseKey;
Reg.Free;
end;
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen SimaWB »

Yanlış yorumlamadıysam Software\Microsoft\Internet Explorer\Extensions altındaki KEY'lerin isimlerine göre sıralıyor. Mesela bendeki isimler

{2670000A-7350-4f3c-8081-5663EE0C6C49}
{789FE86F-6FC4-46A1-9849-EDE0DB0C95CA}
{9324B3A3-DDFB-4F35-A60E-353F11E237D6}


şeklinde.

Menü'de "{9"la başlayan ilk sırada çıkıyor. Sonra "{7" ile başlayan ve en sonda "{2" ile başlayan çıkıyor.
"{9"la başlayanın adını {4324B3A3-DDFB-4F35-A60E-353F11E237D6} şeklinde değiştirdiğimde diğer iki seçeneğin ortasında çıkıyor.
There's no place like 127.0.0.1
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Teşekkürler...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

Merhaba.

- İlginç bir soru, bunu sevdim. :o
- Daha önce hiç aklıma gelmeyen sorular görünce memnuniyetim artıyor. :lol:

- Normalde Explorer kullanmam ama kodları sizin için dinamik bir yapıya dönüştürdüm. Aşağıda iki fonksiyon hazırladım.

Önce kullanımı şöyle, önce onu paylaşayım (kendi denediğim proje isimleriyle yolluyorum, siz kendinize göre güncelleyin):

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  strGUID,
  strProgDosya,
  strIconDosya,
  strBtnProgBaslik,
  strMnuProgBaslik : String;
begin
  strGUID          := IE_GUID_Uret_OnSiradaOlsun();
  if strGUID <> '' then
  begin
    strProgDosya     := 'd:\Programcilik\Delphi\DelphiDunyasiNET\Chat_TServerSocket_TClientSocket\Client.exe';
    strIconDosya     := 'd:\Programcilik\Images\ARMAN\h-icon-64265-green-green.ico';
    strBtnProgBaslik := 'TCP Client Mesaj Ekranı';
    strMnuProgBaslik := 'TCP Client';
    IEButonEkle( strGUID, strProgDosya, strIconDosya, strBtnProgBaslik, strMnuProgBaslik );
  end else
  begin
    MessageDlg('Daha öndeki bir sırada GUID üretilemediğinden ToolButton eklenemedi...', mtError, [mbOk], 0 );
  end;
end;
(1) size Torpilli bir sıradan GUID üretiyor.

Kod: Tümünü seç

function IE_GUID_Uret_OnSiradaOlsun():String;
  function YeniGUID() : String;
  var
    guid   : TGuid;
  begin
    Result := '';
    if CoCreateGuid(guid) = S_OK
      then Result := GuidToString(guid);
  end;
Var
  strAnahtar,
  strTepeGUID,
  strYeniGUID : String;
  guYeniGUID  : TGuid;
  slListe     : TStringList;
  iSayac      : Integer;
begin
  Result := '';
  slListe := TStringList.Create;
  Try
    With TRegistry.Create do
    begin
      RootKey    := HKEY_LOCAL_MACHINE;
      strAnahtar := 'Software\Microsoft\Internet Explorer\Extensions\';
      if OpenKey( strAnahtar, False ) then
      begin
        slListe    := TStringList.Create;
        GetKeyNames( slListe );
        CloseKey;
      end;
      Free;
    end;
    for iSayac := 0 to slListe.Count - 1
      do slListe[iSayac] := Copy( slListe[iSayac], 1, 8 );
    slListe.Sort;
    strTepeGUID := slListe[0];
    strYeniGUID := YeniGUID();
    While strTepeGUID < Copy( strYeniGUID, 1, 8 )
      do strYeniGUID := YeniGUID();
  Finally
    Result := strYeniGUID;
  End;
  slListe.Free;
end;
(2) Bu GUID kullanarak size istediğiniz programı Toolbar'a yerleştiriyor.

Kod: Tümünü seç

Procedure IEButonEkle( strGUID, strProgDosya, strIconDosya, strBtnProgBaslik, strMnuProgBaslik  : String );
var
  Reg  : TRegistry;
  strAnahtar : string;
begin
  Reg := TRegistry.Create;
  try
  with Reg do
  begin
    RootKey    := HKEY_LOCAL_MACHINE;
    strAnahtar := 'Software\Microsoft\Internet Explorer\Extensions\'+strGUID;
    if OpenKey( strAnahtar, True ) then
    begin
      WriteString('ButtonText'       , strBtnProgBaslik);
      WriteString('MenuText'         , strMnuProgBaslik);
      WriteString('MenuStatusBar'    , 'Run Script');
      WriteString('ClSid'            , '{1FBA04EE-3024-11d2-8F1F-0000F87ABD16}'); // CLSID_Shell_ToolbarExtExec Class
      WriteString('Default Visible'  , 'Yes');
      WriteString('Exec'             , strProgDosya );
      WriteString('HotIcon'          , strIconDosya);
      WriteString('Icon'             , strIconDosya);
    end else
    begin
      ShowMessage('Olmadı...');
    end;
  end
  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;
Resim
Resim ....Resim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

mrmarman yazdı: - İlginç bir soru, bunu sevdim. :o
- Daha önce hiç aklıma gelmeyen sorular görünce memnuniyetim artıyor. :lol:
Hocam yeniden başlık atamadan ilginç bir soru daha soriyim :) Az önce kodunu verdiğim program içinde kullandığım veritabanı içerisinde basit bir sorgu gerçekleştiriyorum. Aşağıdaki kod oldukça basit ve çalışıyor lakin içerisinde türkçe karakter olan kelimeleri ya da kayıtları bulmuyor. Bu konuda hiçbir çözüm bulamadım. Hem bu forumda hem de google de. Kodum şöyle :


ADOQuery1.close;
ADOQuery1.sql.clear;
ADOQuery1.SQL.Add('select * from dosyalar where icerik like ' + QuotedStr('%' + edit2.Text + '%'));
ADOQuery1.open;

içerik alanı access veri tabannında not olarak yanımlı.
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

Bir yanlışınız olmasın. Ya da soruyu sorarken yanlış ifade ettiniz.

- Türkçe konusunda büyük / küçük harf arama yaparken sorun olur, yani kayıtlarda "Bunun İçin yapamıyorum." (büyük (İ) harfi) geçiyorken "%için%" şeklinde (küçük (i) harfi) ararsanız bulamazsınız.

- Ben ne yapıyorum : (doğrudur veya yanlıştır lazım olduğunda günü kurtardı bugüne kadar) İmzamdaki ilüzyon mantığıdır, -arama yapılacak alanım belli ve sayısı bir veya iki olduğundan- tabloda yedek bir alan daha tanımlayıp kayıt girişi sırasında tümüyle aynı text'in ancak ingilizce harfler ile olan halini oraya kaydediyorum.

- Böylece aramalarımı tek bir ortak paydada toplamış oluyorum, siz de deneyin. :idea:
Resim
Resim ....Resim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Hocam ama benim arama yaptığım alan access te not olarak tanımlı. Yani bu alana 500 kelimelik bir kayıt bile giriyorum. O dediğiniz yöntemi uygulamam çok zor...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

Merhaba.

- Öncelikle sorunun bu söylediğim olup olmadığını teyid ettiniz mi ?!

- O zaman alternatif ÖN aramaları yapacaksınız. Mesela bir cümledeki hangi türkçe harfler olduğunu bulup, sonra onları büyük/küçük kombinasyonlarda arayıp çıkan sonuçlar sayısı farklı ise o sonuçları aldıklarınızı UNION edeceksiniz vs. İş uzun yani .

- Eğer UNICODE olsaydı iş daha kolaydı ama dediğim gibi mevcut MSAccess için daha doğru bir metodu vardır ama ben malesef araştırmadım.Bilen varsa yazarsa ben de öğrenmiş olurum. :bravo:
Resim
Resim ....Resim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Hocam şöyle söyliyim bir çeşit mevzuat sistemi bu. Madde1-2.. diye gidiyor ve her maddenin içeriği kayıtlı. BAzı meddeler tek satır bazı maddeler 40 satır. Arama yaparken mesela memur diye aratınca çıkıyor ama tükiye diye aratınca sonuç vermiyor. Hata da vermiyor. Yani dediğiniz gibi türkçe karakter sorunundan ibaret durum ...
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Ben çok araştırdım hiçbir somut bulguya rastlamadım :)
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

Biraz vaktim vardı sakin kafayla test ettim...
Sonuç ilginç hemen paylaşayım. Bu senin işini çok ama çok kolaylaştıracak... :idea:

Her harf için %harf% ile arama yaptım. Özellikler ortadaki harflarde denedim ki daha zorlayıcı olsun... Aşağıdaki tablodaki gibi sonuç elde ettim.

Kod: Tümünü seç

ğ doğru buldu
ü doğru buldu
ı sorun oldu
i sorun oldu
ç doğru buldu
ö doğru buldu
ş doğru buldu
Göreceğin gibi cümle içerisinde ğ,ü,ö,ç,ş büyük de olsa küçük de olsa tersi kayıt varsa bulabiliyor sorun yok. Tek sorun "ı" ve "i" harflerinin büyük harf karşılığının ASCII olarak çaprazlanmış olmasından kaynaklı...

küçük ( ı ) harfinin Türkçe karşılığındaki büyük ( I ) harfi aslında İngilizcedeki ( i ) harfinin büyük harf karşılığına eşit.

Yapacağınız aramalarda test ediniz. Diğerlerinin doğru çalıştığını siz de teyid eder misiniz ... Örneğin :

Türkiye deyince buluyor, TÜrkiye deyince de buluyor.
Çelik deyince de buluyor, çelik deyince de buluyor.
Ateş Böceği deyince de buluyor, Ateş BÖceĞi deyince de buluyor.

örnekleri çoğaltabiliriz.
Siz de kendi örneklerinizi oluşturun, eğer sizde de sorun sadece ı,I ve i,İ harflerinde ise çözüm üretelim... :idea:

EKLEME : Kusursuz değil (biraz yavaş) ama üzerinde çalışılabilir bir procedure hazırladım... Veritabanı içeriğini kendine göre düzenleyip bir dene istersen... :idea:
Tek sorunu var... Kağıt üzerinde TRACE ederken buldum; "İyi" kelimesini ararken ben "iyi" yazarsam -> önce yazdığımın aynısını "iyi" sonra da ardından şunları arıyor strA="iyi", strB="İyİ" gerçekte aradığım "İyi"'yi bulamıyor... Bunun için farklı bir çözüm üreticem ama şimdi biraz meşulüm...

Kod: Tümünü seç

Procedure TurkceMetinAra( strAra : String; AdoQuery:TAdoQuery );
Var
  strA, strB, strC, strD : String;
begin
  strA := '';
  strB := '';
  strC := '';
  strD := '';
  if Pos('ı', strAra) > 0 then strA := StringReplace( strAra, 'ı', 'I', [rfReplaceAll] );
  if Pos('i', strAra) > 0 then strB := StringReplace( strAra, 'i', 'İ', [rfReplaceAll] );
  if Pos('I', strAra) > 0 then strA := StringReplace( strAra, 'I', 'ı', [rfReplaceAll] );
  if Pos('İ', strAra) > 0 then strB := StringReplace( strAra, 'İ', 'i', [rfReplaceAll] );

  With AdoQuery do
  begin
    Active := False;
    SQL.Clear;
    SQL.Add('SELECT TOP 10 M_Name FROM DivXTurk');
    SQL.Add('WHERE 1=1');
    SQL.Add('AND M_Name like '+QuotedStr( '%' + strAra+'%') + ' ORDER BY M_Name' );
    if strA <> '' then
    begin
      SQL.Add('UNION');
      SQL.Add('SELECT TOP 10 M_Name FROM DivXTurk');
      SQL.Add('WHERE 1=1');
      SQL.Add('AND M_Name like '+QuotedStr( '%' + strA+'%') + ' ORDER BY M_Name' );
    end;
    if strB <> '' then
    begin
      SQL.Add('UNION');
      SQL.Add('SELECT TOP 10 M_Name FROM DivXTurk');
      SQL.Add('WHERE 1=1');
      SQL.Add('AND M_Name like '+QuotedStr( '%' + strB+'%') + ' ORDER BY M_Name' );
    end;
    if strC <> '' then
    begin
      SQL.Add('UNION');
      SQL.Add('SELECT TOP 10 M_Name FROM DivXTurk');
      SQL.Add('WHERE 1=1');
      SQL.Add('AND M_Name like '+QuotedStr( '%' + strC+'%') + ' ORDER BY M_Name' );
    end;
    if strD <> '' then
    begin
      SQL.Add('UNION');
      SQL.Add('SELECT TOP 10 M_Name FROM DivXTurk');
      SQL.Add('WHERE 1=1');
      SQL.Add('AND M_Name like '+QuotedStr( '%' + strD+'%') + ' ORDER BY M_Name' );
    end;
    Active := True;
  end;
end;
Resim
Resim ....Resim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Hocam olayın kodla hiçbir alakası yok bence. Veritabanında not olarak ayarlıydı. Bi düzenleme yaparken yanlışlıkla veri tipini ole nesnesi yaptım. Programı açtığımda aşağıdaki gibi kayıtlar çıktı karşıma. türkçe karakterleri abuk subuk şeylere çevirmiş. Ama arama yaparken türkçe karakterler yerine gelen karakterler ile arama yapınca bulduu. Örnek

e\u287 ?itim ara\u231 ? ve gere\u231 ?leri // eğitim araç gereçleri
eğitim yerine e\u287 ?itim diye aratınca sonuç verdi. Ama benim kafa durdu çıkamıycam bu işin içinden galiba :)

{\rtf1\ansi\deff0\uc1\ansicpg1254\deftab720{\fonttbl{\f0\fnil\fcharset1 Times New Roman TUR;}{\f1\fnil\fcharset162 Times New Roman TUR;}{\f2\fnil\fcharset162 MS Sans Serif;}{\f3\fnil\fcharset162 Times New Roman;}{\f4\fnil\fcharset2 Wingdings;}{\f5\fnil\fcharset2 Symbol;}{\f6\fnil\fcharset1 New York;}{\f7\fnil\fcharset162 Verdana;}}{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red255\green255\blue0;\red255\green0\blue255;\red128\green0\blue128;\red128\green0\blue0;\red0\green255\blue0;\red0\green255\blue255;\red0\green128\blue128;\red0\green0\blue128;\red255\green255\blue255;\red192\green192\blue192;\red128\green128\blue128;\red0\green0\blue0;\red128\green128\blue0;}\wpprheadfoot1\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\headery720\footery720\pgbrdrhead\pgbrdrfoot\pgbrdropt32\endnhere\sectdefaultcl{\*\generator WPTools_6.250;}{\stylesheet
{\s1\li0\fi0\ri0\sb0\sa0\slmult0\sl360\qj\vertalt\fs20 Normal;}
{\s2\li0\fi0\ri0\sb0\sa0\ql\vertalt\fs22 Default Paragraph Font;}
{\s3\li0\fi0\ri0\sb0\sa0\slmult0\sl360\qj\vertalt\f6\fs18\snext3 nor;}
{\s4\li0\fi0\ri0\sb113\sa0\slmult0\sl360\qj\vertalt\f6\fs18\i\snext4 maddebasl;}
{\s5\li0\fi0\ri0\sb0\sa160\slmult0\sl-240\ql\vertalt\f7\fs20 Char Char Char Char;}}
{\pard\plain\s4\li0\fi0\ri0\sb0\sa0\slmult0\sl240\qj\vertalt\wpparflg32\f3\fs18\i\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ? I \endash Kanunun kapsam\u305 ? :\par
\pard\plain\s3\li0\fi0\ri0\sb0\sa0\slmult0\sl240\qj\vertalt\wpparflg32\f3\fs18\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ?\u160 ? \f3\b Madde 1 \endash\f3\b0 Bu Kanun, T\u252 ?rk milli e\u287 ?itiminin d\u252 ?zenlenmesinde esas olan ama\u231 ? ve ilkeler, e\u287 ?itim sisteminin genel yap\u305 ?s\u305 ?, \u246 ?\u287 ?retmenlik mesle\u287 ?i, okul bina ve tesisleri, e\u287 ?itim ara\u231 ? ve gere\u231 ?leri ve Devletin e\u287 ?itim ve \u246 ?\u287 ?retim alan\u305 ?ndaki g\u246 ?rev ve sorumlulu\u287 ?u ile ilgili temel h\u252 ?k\u252 ?mleri bir sistem b\u252 ?t\u252 ?nl\u252 ?\u287 ?\u252 ? i\u231 ?inde kapsar.\par
\pard\plain\s3\li0\fi0\ri0\sb0\sa0\slmult0\sl240\qj\vertalt\f3\fs18\par
}}
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

@sako

- Bu yaptığın oldu mu ? Bunun bu şekilde olduğunu biliyor ama bizimle paylaşmamıştın öyle mi ? ! Pes yani... :shock:

- Formatlı olsun diye RichText formatında kayıt altına almışsın. Neyse sorunu çözdüğüne sevindim.. Başarılar. :bravo:
Resim
Resim ....Resim
sako
Üye
Mesajlar: 477
Kayıt: 11 Haz 2003 02:40
Konum: ERZURUM

Re: İExplorere buton ekleme

Mesaj gönderen sako »

Yok hocam bilmiyordum. Bilsem yormazdım sizi emin olun. Tamamen tevafuk eseri. Ama hala çözmüş değilim. Daha sonradan yine çeviriyim dedim tutturamadım. Rich edit formatı derken onu anlayamadım ama ?
DOĞUNUN SINIR TAŞI ERZURUM'UN DADAŞ'I
EFE'Sİ VAR İZMİR'İN EĞİLMEZ TÜRK' ÜN BAŞI
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: İExplorere buton ekleme

Mesaj gönderen mrmarman »

Bu metni copy/paste ile Windows Notepad 'a yapıştır.
farklı kaydet de, adını şöyle ver:
"dosya.rtf"

sonra bunu MSWord ile aç. Formatlı bir şekilde görürsün. Bu formata RichText Format deniyor. yani zengin metin biçimi. Yazı stili, Soldan girinti vs tutabiliyor. bunu kastettim.
Resim
Resim ....Resim
Cevapla