Selamlar.
aspx uzantılı bir adreste verileri uygulamadan kodla girerek (webbrowser nesnesinin document kütüphanesini kullanarak..) post işlemi yapıyoruz. Ancak kaydetme işlemini butona değil imageye bağlamışlar. Biz de tuttuk scripti execute ettik fakat stabil çalışmıyor kimi zaman access violation hatası veriyor kimi zaman da kısır döngüye giriyor. Öncelikle image nesnesine tıklama imkanımız varsa nasıl yapabiliriz?Yoksa script nasıl sorunsuz çalıştırılır?Şimdiden teşekkürler..
Web sayfasındaki VB scriptini execute etme üzerine..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
kodu yapıştırma imkanınız varmı
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Merhaba..
- Sayfa tamamen navigate edilmedenscript çalıştırırsanız hata ile karşılaşabilirsiniz. Bu normaldir.
- Image halindeki butonlara dilersen ekrandan mouse pozisyonu vererek click yaptırabilirsin ama bunu önermiyorum. Çünkü yapılan işlemlerin ekrandan görüntülenmesi hoş durmuyor.
- Javascript çalıştırmak en makulu ki bununla ilgili forumda defaten örnek verdik. bkz. viewtopic.php?t=19058#109375 dediğim gibi navigate işlemi bitmeden bu şekilde çalıştırdığınızda sorun çıkabilir. Bunu bu şekilde değerlendirin.
- Sayfa tamamen navigate edilmedenscript çalıştırırsanız hata ile karşılaşabilirsiniz. Bu normaldir.
- Image halindeki butonlara dilersen ekrandan mouse pozisyonu vererek click yaptırabilirsin ama bunu önermiyorum. Çünkü yapılan işlemlerin ekrandan görüntülenmesi hoş durmuyor.
- Javascript çalıştırmak en makulu ki bununla ilgili forumda defaten örnek verdik. bkz. viewtopic.php?t=19058#109375 dediğim gibi navigate işlemi bitmeden bu şekilde çalıştırdığınızda sorun çıkabilir. Bunu bu şekilde değerlendirin.
TWebbrowser yerine normal "internet explorer" oleobject yaratıp denediniz mi?
TWebbrowser veya indy kullanmadan da yukarıdaki şekilde post yapabilirsiniz. Yukarıdaki örnek divxplanette altyazı aramak için, isterseniz kodu biraz optimize edip deneyebilirsiniz.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
IExplore: variant;
IEHandle: HWnd;
ExitThr: boolean;
function QuickIESearch(pUrl: string; pFormname, pObjectname: string; pObjectValue: string): boolean;
end;
var
Form1: TForm1;
implementation
uses ComObj;
{$R *.dfm}
{-------------------------------------------------------------------------------
***** ReadyState *****
0=Loading
1=Uninitialized
2=Loaded
3=Interactive
4=Complete
**********************
-------------------------------------------------------------------------------}
function TForm1.QuickIESearch(pUrl: string; pFormname, pObjectname: string; pObjectValue: string): boolean;
var
ovElements: olevariant;
i, j: Integer;
lResult: boolean;
begin
lResult := False;
ExitThr := False;
try
if (VarIsEmpty(IExplore)) or (FindWIndow('IEFrame', nil) = 0) then
begin
IExplore := CreateOleObject('InternetExplorer.Application');
IExplore.Visible := True;
end
else
begin
IEHandle := FindWIndow('IEFrame', nil);
SetForegroundWindow(IEHandle);
end;
IExplore.Navigate(pUrl);
while (Cardinal(IExplore.ReadyState) <> 4) and (ExitThr = False) do
begin
Application.ProcessMessages;
Sleep(100);
end;
for i := 0 to IExplore.Document.Forms.Length - 1 do
if IExplore.Document.Forms.Item(i).Name = pFormname then
begin
ovElements := IExplore.Document.Forms.Item(i).Elements;
for j := 0 to ovElements.Length - 1 do
if (CompareText(ovElements.Item(j).Name, pObjectname) = 0) then
ovElements.item(j).Value := pObjectValue;
IExplore.Document.Forms.Item(0).Submit;
while (Cardinal(IExplore.ReadyState) <> 4) and (ExitThr = False) do
begin
Application.ProcessMessages;
Sleep(100);
end;
end;
lResult := True;
except
lResult := False;
end;
Result := lResult;
end;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
procedure TForm1.Button1Click(Sender: TObject);
begin
QuickIESearch('http://divxplanet.com/sub/src/',
'Arama', 'ad', Edit1.Text);
end;
{-------------------------------------------------------------------------------
-------------------------------------------------------------------------------}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ExitThr := True;
end;
end.
-
- Kıdemli Üye
- Mesajlar: 1223
- Kayıt: 26 Nis 2005 04:08
Öncelikle ilginiz için teşekkürler.Image nesnesine tıklama yöntemiyle çözdüm fırsat bulunca derleyip buraya atarım kodu.
@mrmarman;
Sorunun navigate işleminden kaynaklandığını anlamıştım ama asıl konu webbrowser nesnesinin navigate durumunu tam olarak verebildiği bir property yok, readystate tutarsız çalışıyor keza ondocumentcmoplete yordamı da.
@Z.D.
Bu örneği en kısa zamanda deneyip sonucu değerlendireceğim. Stabil olarak çalışırsa projeye bunu monte edebiliriz ilerde şu an aciliyetten ötürü pek mümkün olmadı
Tekrar teşekkür ediyorum, iyi çalışmalar..
@mrmarman;
Sorunun navigate işleminden kaynaklandığını anlamıştım ama asıl konu webbrowser nesnesinin navigate durumunu tam olarak verebildiği bir property yok, readystate tutarsız çalışıyor keza ondocumentcmoplete yordamı da.
@Z.D.
Bu örneği en kısa zamanda deneyip sonucu değerlendireceğim. Stabil olarak çalışırsa projeye bunu monte edebiliriz ilerde şu an aciliyetten ötürü pek mümkün olmadı

Tekrar teşekkür ediyorum, iyi çalışmalar..