ShellExecute ile browser açma...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

ShellExecute ile browser açma...

Mesaj gönderen brs »

Selam,

Seçmiş olduğum browser, arama motoru ve seçilen kelimeye göre arama yapmak istiyorum bu işlem kısmen gerçekleşiyor, tek bir kelimede sorun yok
ama "Ne Zaman Emekli Olurum" dediğimde her bir kelime için yeni sekme açılıyor bu durumu nasıl çözebilirim...

Kod: Tümünü seç

procedure TForm3.Button2Click(Sender: TObject);
begin
  ShellExecute(0, 'open', 'C:\Program Files\Google\Chrome\Application\chrome.exe',  PChar('https://www.yandex.com.tr/yandsearch?text=' + 'Ne Zaman Emekli Olurum'), nil, SW_SHOWMAXIMIZED);
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: ShellExecute ile browser açma...

Mesaj gönderen G.Arkas »

Kelimelerin arasına "+" (tırnaksız) koyarsan problem çözülür. Boşlukları StringReplace ile tespit edip + işareti ile değiştirebilirsin.
Resim
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: ShellExecute ile browser açma...

Mesaj gönderen SimaWB »

Şuanda deneme şansım yok ama tahminim IdURI.pas içindeki TIdURI.URLEncode fonksiyonu işinizi görebilir.

Kod: Tümünü seç

var
  link: string;
begin
  link := TIdURI.URLEncode('https://www.yandex.com.tr/yandsearch?text=' + 'Ne Zaman Emekli Olurum');
  ShellExecute(0, 'open', 'C:\Program Files\Google\Chrome\Application\chrome.exe',  PChar(link), nil, SW_SHOWMAXIMIZED);
Yada, XE5'te REST.Utils.pas içinde URIEncode fonksiyonunu deneyebilirsiniz.
There's no place like 127.0.0.1
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: ShellExecute ile browser açma...

Mesaj gönderen barisatalay »

Aşağıdaki kodları projenize ekleyip FixMetin proceduresini kullanarak aranacak kelimeyi yazarsanız internet standartlarına göre aratacağınız kelimeyinin özel karakterlerini kendisi değiştirir.

Kod: Tümünü seç

Örnek:

https://www.yandex.com.tr/yandsearch?text=' +FixMetin('Ne Zaman Emekli Olurum')


Uses IdURI;

function FixMetin(Metin:String):String;
begin
  Result := TIdURI.PathEncode(Metin);
end;
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: ShellExecute ile browser açma...

Mesaj gönderen brs »

Herkese teşekkür ederim elinize sağlık sorun çözülmüştür...
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: ShellExecute ile browser açma...

Mesaj gönderen SimaWB »

brs yazdı:Herkese teşekkür ederim elinize sağlık sorun çözülmüştür...
Keşke nasıl çözdüğünüzü de yazsaydınız.
Bundan sonra aynı sorunu yaşayanlara bir iyilik yapmış olurdunuz :!:
There's no place like 127.0.0.1
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: ShellExecute ile browser açma...

Mesaj gönderen brs »

:P Haklısınız atlamışım barisatalay vermiş olduğu kodları kullandım.

Bu arda başka bir sıkıntı oluştu daha önce Browser: PChar; olarak yapmıştım, şimdi Browser: OleVariant; değiştirdiğimde ShellExecute 'open' de hata alıyorum nedendir...

[dcc32 Error] Ayarlar.pas(1442): E2010 Incompatible types: 'PWideChar' and 'OleVariant'
[dcc32 Warning] Ayarlar.pas(1803): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
[dcc32 Fatal Error] F2063 Could not compile used unit 'Ayarlar.pas'

Kod: Tümünü seç

procedure TForm3.Button1Click(Sender: TObject);
var
  Browser: OleVariant;
  Motor, Anahtar: String;
begin
  with BrowserDatabase do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select * From Browser');
    Prepared := True;
    Open;
    Anahtar := FieldByName('ANAHTAR').AsString; // aranan Kelime
    Motor := PChar(FieldByName('MOTOR').AsString); // Arama Motoru
    Browser := FieldByName('BROWSER').AsString; // Browser

    ShellExecute(0, 'open', Browser, PChar(Motor + FixMetin(Anahtar)), nil,
      SW_SHOWMAXIMIZED);
  end;
end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Cevapla