PDA

View Full Version : سوال: کپی عکس فعلی در کنترل وب بروزر



_4rm4n_
پنج شنبه 03 مهر 1393, 20:11 عصر
سلام خدمت همه ی اساتید و دوستان .
بنده یک سوالی برام پیش اومده در رابطه با کنترل وب بروزر و عکسی که درون اون هست !
ابتدا بگم که عکس با هر بار لود شدن داره تغییر میکنه ( همون کپچا ) و نمیشه با image location بهش آدرس داد !
من این کد رو در Vb.net داشتم :

Dim elem As HtmlElement = WebBrowser1.Document.GetElementById("im_sec")
Dim cap As Object = WebBrowser1.Document.DomDocument.bOdy.createContro lRange()
cap.Add(elem.DomElement)
cap.execCommand("Copy")
PictureBox1.Image = My.Computer.Clipboard.GetImage

ولی متاسفانه کلاس DomDocument در C# وجود نداره ...
حالا در صورت امکان توضیحی در رابطه با این کار بدید ...
ممنون :)

danialafshari
پنج شنبه 03 مهر 1393, 20:25 عصر
با سلام
در دات نت 4.5 که وجود داره
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.domdocument(v=vs .110).aspx
http://stackoverflow.com/questions/3640236/converting-htmldocument-domdocument-to-string

برای تبدیل هم می تونید از لینک زیر استفاده کنید
http://www.carlosag.net/tools/codetranslator/
موفق باشید

lvlaziar
پنج شنبه 03 مهر 1393, 20:27 عصر
با سلام...
با استفاده از متد GetElementsByTagName وب بروزه و ایجاد یه HtmlElementCollection و یه حلقه تمامی تگ های img سورس صفحه رو بررسی کنید و تمامی لینک های عکس ها داخل صفحه رو با استفاده از GetAttribute بگیرید...
بعد با استفاده از یه شرط مشخص کنید که اون عکس، عکس کپچا هست یا نه ( شرط رو با استفاده از متد contaions و کنترل یه مقدار خاص از لینک کپچا میتونید اعمال کنید... )
کلا 3 خط بیشتر نمیشه، یکم بهش فکر کنید و حرفای بنده رو با دقت بخونید خودتون از پسش برمیاید...
موفق باشید...

_4rm4n_
پنج شنبه 03 مهر 1393, 20:33 عصر
با سلام...
با استفاده از متد GetElementsByTagName وب بروزه و ایجاد یه HtmlElementCollection و یه حلقه تمامی تگ های img سورس صفحه رو بررسی کنید و تمامی لینک های عکس ها داخل صفحه رو با استفاده از GetAttribute بگیرید...
بعد با استفاده از یه شرط مشخص کنید که اون عکس، عکس کپچا هست یا نه ( شرط رو با استفاده از متد contaions و کنترل یه مقدار خاص از لینک کپچا میتونید اعمال کنید... )
کلا 3 خط بیشتر نمیشه، یکم بهش فکر کنید و حرفای بنده رو با دقت بخونید خودتون از پسش برمیاید...
موفق باشید...
سلام مازیار جان.
فقط کنم منظور این بوده که بیام src رو از تگ جدا کنم و توی لینک قرار بدم .
خب همیشه لینک ثابت نیست !
یعنی مثلا این لینک رو در نظر بگیرید :
http://www.hashkiller.co.uk/capt.ashx?d=0.225175915390801
ریلود کنید منظورمو متوجه میشید !

_4rm4n_
پنج شنبه 03 مهر 1393, 20:34 عصر
با سلام
در دات نت 4.5 که وجود داره
http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.domdocument(v=vs .110).aspx
http://stackoverflow.com/questions/3640236/converting-htmldocument-domdocument-to-string

برای تبدیل هم می تونید از لینک زیر استفاده کنید
http://www.carlosag.net/tools/codetranslator/
موفق باشید
DomDocument هست اما ادامه کد خیر !

lvlaziar
پنج شنبه 03 مهر 1393, 20:50 عصر
سلام مازیار جان.
فقط کنم منظور این بوده که بیام src رو از تگ جدا کنم و توی لینک قرار بدم .
خب همیشه لینک ثابت نیست !
یعنی مثلا این لینک رو در نظر بگیرید :
http://www.hashkiller.co.uk/capt.ashx?d=0.225175915390801
ریلود کنید منظورمو متوجه میشید !

اصلا نیاز نیست ثابت باشه...
اگه ثابت باشه که نیاز به این دردسر کشیدن ها نیست که...
همونطور که گفتم بایستی به وسیله آنالیز سورس صفحه ( حالا به هر صورت که راحتید ) منبع تصویر رو بگیرید...
اگه به توضیحات بنده دقت میکردید نوشتنش کاری نداشت...
HtmlElementCollection maziar=wB.Document.GetElementsByTagName("img");
for (int i=0;i<maziar.Count;i++)
{
if(maziar[i].GetAttribute("src").Contains("capt.ashx?d="))
pB.ImageLocation=maziar[i].GetAttribute("src");
}
این کد دقیقا از سایتی که معرفی کردید با ImageLocation عکس رو تو پیکچرباکس نمایش میده...
یه راه دیگه هم اسکرین گرفتن به وسیله bitmap از مختصات عکس و نمایش اون bitmap گرفته شده تو پیکچرباکس هستش...
موفق باشید....

_4rm4n_
پنج شنبه 03 مهر 1393, 20:58 عصر
اصلا نیاز نیست ثابت باشه...
اگه ثابت باشه که نیاز به این دردسر کشیدن ها نیست که...
همونطور که گفتم بایستی به وسیله آنالیز سورس صفحه ( حالا به هر صورت که راحتید ) منبع تصویر رو بگیرید...
اگه به توضیحات بنده دقت میکردید نوشتنش کاری نداشت...
HtmlElementCollection maziar=wB.Document.GetElementsByTagName("img");
for (int i=0;i<maziar.Count;i++)
{
if(maziar[i].GetAttribute("src").Contains("capt.ashx?d="))
pB.ImageLocation=maziar[i].GetAttribute("src");
}
این کد دقیقا از سایتی که معرفی کردید با ImageLocation عکس رو تو پیکچرباکس نمایش میده...
یه راه دیگه هم اسکرین گرفتن به وسیله bitmap از مختصات عکس و نمایش اون bitmap گرفته شده تو پیکچرباکس هستش...
موفق باشید....
منظور منو متوجه نشدید ...
منم با نوشتنش مشکل نداشتم ...
اگه کامپایلر دارید یه تست بکنید ممنون میشم ....

_4rm4n_
جمعه 04 مهر 1393, 09:55 صبح
اصلا یه مورد دیگه !
چه کد شما چه کد من چه هر کد دیگه ای که با image location نوشته بشه آخرش به این خط میرسه :

pictureBox1.ImageLocation = "http://www.hashkiller.co.uk/capt.ashx?d=0.837051189428685"

که اینجا : 837051189428685 عددش همیشه متغیر هست .
حالا من منظور شما رو از همون اول گرفتم که دارید خصوصیت src عکس رو میگیرید . ولی همون src عکس که همیشه ثابت نیست ! داره لینک تغییر میکنه .
اصلا همین لینک بالا رو دوباره ریلود کنید قشنگ ملموس هست .