ورود

View Full Version : سوال: پیدا کردن لینک خاص در webbrowser و ورود به آن لینک به صورت خودکار



sajioo
دوشنبه 10 مرداد 1390, 10:29 صبح
سلام دوستان .
فرض کنید برنامه یک وب بروزر داره که میره به صفحه ی yahoo.com
حالا می خوام این برنامه بگرده و تو این صفحه لینک yahoo.com/mail رو پیدا کنه و در صورت وجود به اون صفحه بره.
توجه : می خوام از صفحه ی yahoo.com لینک داده بشه به yahoo.com/mail ، نه اینکه اون لینک رو پیدا کرد بعد با برنامه نویسی وارد اون سایت بشه بلکه می خوام مثل کلیک کردن باشه . اما خود برنامه اون کارو انجام بده.
امیدوارم منظورم رو خوب رسونده باشم:لبخندساده:
لطفا منو راهنمایی کنید.ممنون

sajioo
سه شنبه 11 مرداد 1390, 13:36 عصر
دوستان یک کمکی کنید.
خیلی جستجو کردم اما نتیجه نداده!

sajioo
پنج شنبه 13 مرداد 1390, 21:33 عصر
دوستان گرامی کسی می دونه آیا این کار عملی است یا نه؟
کمک لطفا

arkia
جمعه 14 مرداد 1390, 17:10 عصر
سلام دوستان .
فرض کنید برنامه یک وب بروزر داره که میره به صفحه ی yahoo.com
حالا می خوام این برنامه بگرده و تو این صفحه لینک yahoo.com/mail رو پیدا کنه و در صورت وجود به اون صفحه بره.
توجه : می خوام از صفحه ی yahoo.com لینک داده بشه به yahoo.com/mail ، نه اینکه اون لینک رو پیدا کرد بعد با برنامه نویسی وارد اون سایت بشه بلکه می خوام مثل کلیک کردن باشه . اما خود برنامه اون کارو انجام بده.
امیدوارم منظورم رو خوب رسونده باشم:لبخندساده:
لطفا منو راهنمایی کنید.ممنون



var
iall : IHTMLElement;

IDoc: IHTMLDocument2;
Strl: TStringList;
v: Variant;
ovLinks: OleVariant;
source:TStringList;
x:Integer;
begin


source:=TStringList.Create;

// Get page Source (HTML)
if Assigned(WebBrowser1.Document) then
begin
iall := (WebBrowser1.Document AS IHTMLDocument2).body;

while iall.parentElement <> nil do
begin
iall := iall.parentElement;
end;
source.Text:= iall.outerHTML;
end;




// Parse HTML tags
Strl := TStringList.Create;
try
Strl:=source;
Idoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
try
IDoc.designMode := 'on';
while IDoc.readyState <> 'complete' do
Application.ProcessMessages;
v := VarArrayCreate([0, 0], VarVariant);
v[0] := Strl.Text;
IDoc.Write(PSafeArray(System.TVarData(v).VArray));
IDoc.designMode := 'off';
while IDoc.readyState <> 'complete' do
Application.ProcessMessages;
ovLinks := IDoc.all.tags('A');
if ovLinks.Length > 0 then
begin
for x := 0 to ovLinks.Length-1 do
begin
Memo1.Lines.Add(#13+ '(' + IntToStr(x)+')'+ ovLinks.Item(x).innerText);
Memo1.Lines.Add(#13+ '(' + IntToStr(x)+')'+ ovLinks.Item(x).href);
end;
end;
finally
IDoc := nil;
end;
finally
Strl.Free;
end;

arkia
جمعه 14 مرداد 1390, 17:18 عصر
برا پیدا کردن لینک yahoo.com/mail هم با یه IF ساده زیر دستورات Memo1 میتونی همچین چیزی بنویسی:


if ovLinks.Item(x).href='yahoo.com/mail' then click(ovLinks.Item(x).href); // bara click kardan ham rahaye mokhtalefi hast

sajioo
شنبه 15 مرداد 1390, 05:43 صبح
سلام دوست گلم
ممنون از راهنمایت
اما من از دیشب تا الان دارم این کارو می کنم.
اروری که میده psafearray رو نمیشناسه.
سرچ کردم فارسی چیزی نبود انگلیسی هم کار کردم اما بازم مشکلم حل نشد.
میشه بگی اصلا این چیه و چطوری مشکلم حل میشه؟

arkia
شنبه 15 مرداد 1390, 17:40 عصر
uses
...,mshtml, ActiveX,ComObj,...

sajioo
سه شنبه 18 مرداد 1390, 05:01 صبح
دوست خوبم از راهنمایی هات بسیار ممنونم.
راستش یک موضوع خیلی ذهنم رو مشغول کرده .
من لینک را پیدا می کنم و کلیک هم می کنم اما می خوام طوری باشه که این کلیک از توی سایت مبدا باشه یعنی اون سایت لینک داده باشه.
این کار نشد.
چون بعد از کلیک لینک به صورت مستقل ارسال میشه به اون صفحه.
میشه این مشکل رو حل کرد؟:افسرده:

arkia
جمعه 21 مرداد 1390, 01:27 صبح
دوست خوبم از راهنمایی هات بسیار ممنونم.


سلام ، خواهش می کنم...
شکر خدا که مشکل تا اینجا حل شده.



راستش یک موضوع خیلی ذهنم رو مشغول کرده .
من لینک را پیدا می کنم و کلیک هم می کنم اما می خوام طوری باشه که این کلیک از توی سایت مبدا باشه یعنی اون سایت لینک داده باشه.
این کار نشد.
چون بعد از کلیک لینک به صورت مستقل ارسال میشه به اون صفحه.
میشه این مشکل رو حل کرد؟:افسرده:


راستش من زیاد رو این موضوع کار نکردم از اساتید بزرگوار انجمن هم سوال کن اما من یادمه یه جا دیدم میشه مختصات اون لینک تو Webbrowser رو پیدا کرد و با x و y روی اون کلیک کرد این روش هم نشد صد درصد راه های دیگه هم هست.

دو تا نکته رو بهت میگم همیشه در نظر داشته باش

جوینده یابندس
کار نشد نداره


امیدوارم مشکلت حل بشه:چشمک: