PDA

View Full Version : سوال: مشکل با webbrowser



morteza1376
شنبه 15 تیر 1392, 22:17 عصر
سلام دوستان
من چند تا سوال درباره ی webbrowser داشتم.
1-چه کدی رو باید توی documentcompleted وب بروزر بذارم تا پروگرس بار حرکت کنه و لود صفحه رو نشون بده؟
من از این کد استفاده کردم که باعث میشه یه دفعه پر بشه:
prgressbar1.value = progressbar1.value + 100
و اگه از خیلی از کد بالا استفاده کنم همش یه دفعه پر میشه مثل این:
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
بعدش می خوام وقتی که پر شد پس از 2 ثانیه دوباره خالی بشه ولی نمی دونم چه جوری انجام بدم؟؟؟
من از کد زیر استفاده کردم که اصلا باعث میشه پر نشه:ناراحت:

if progressbar1.value = 100 then
progressbar1.value = 0
end if

خب سوال بعد:لبخند:
من می خواستم که وقتی صفحه لود بشه یه متن جشمک زن برای 5 ثانیه ظاهر بشه و این رو بنویسه:
loading completed
برای همین از دو تا تایمر استفاده کردم و توی قسمت if سوال قبل یه کدی نوشتم:
timer1.enabled = true
و توی تایمر ها این کد ها رو نوشتم:
timer1

Label1.Show()
Label1.ForeColor = Color.Green
Label1.Text = "Loading completed"
Timer2.Enabled = True
Timer1.Enabled = False



و تایمر 2 :

Label1.Hide()
Timer1.Enabled = True
Timer2.Enabled = False

خب تا اینجاش درست پیش میره اما من چه جوری بعد از 5 ثانیه متوقفش کنم؟؟؟؟؟


سوال بعد:لبخند:
من توی فرمم چند تا تکست باکس ایجاد کردم که متن ورودی رو توی وب بروزر میریزن اما...
توی قسمت متن برای ارسال پیام متن رو توی text area نمی نویسه و بالای اون مینویسه مشکلش چی میتونه باشه لطفا کمکم کنید.
در ضمن توی صفحه یه کد کپچا قرار داره که من می خوام اون رو توی یه پیکچر باکس توی فرم بریزم اما نمیشه؟
یعنی آیدیش همش عوض میشه؟
این هم آدرس صفحه:http://iranfars.mihanblog.com/message
لطفا کمکم کنید
ممنون

مهرداد صفا
یک شنبه 16 تیر 1392, 10:53 صبح
با سلام.

سلام دوستان
1-چه کدی رو باید توی documentcompleted وب بروزر بذارم تا پروگرس بار حرکت کنه و لود صفحه رو نشون بده؟

کد رو باید در رویداد ProgressChanged قرار دهید:

Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEven tArgs) Handles WebBrowser1.ProgressChanged
Me.Text = e.CurrentProgress.ToString
End Sub




من از این کد استفاده کردم که باعث میشه یه دفعه پر بشه:
prgressbar1.value = progressbar1.value + 100


برای اینکه شما یک دفعه مقدار رو برابر صد قرار دادی.


و اگه از خیلی از کد بالا استفاده کنم همش یه دفعه پر میشه مثل این:
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20
prgressbar1.value = progressbar1.value + 20

این هم مثل کد بالاست و فرق زیادی ندارد چون رویداد DocumentCompleted بعد از کامل شدن یک صفحه (و معمولا یک بار) اتفاق می افتد و این دستورات با سرعت بسیار زیادی اجرا می شوند که باعث می شود پر شدن Progress محسوس نباشد.


بعدش می خوام وقتی که پر شد پس از 2 ثانیه دوباره خالی بشه ولی نمی دونم چه جوری انجام بدم؟

کدی رو که بالا قرار دادم همین کار را انجام می دهد.




من از کد زیر استفاده کردم که اصلا باعث میشه پر نشه:ناراحت:

if progressbar1.value = 100 then
progressbar1.value = 0
end if


در هر صورت همونطور که گفتم دستورات سریع اجرا می شوند و تغییرات محسوس نیست. برای این کار نیاز به تاخیر دارید که با استفاده از:

if progress.Value=100 then
System.Threading.Thread.Sleep(2000)
Progress.Value=0
end if


برای روشهای دیگر در مورد ایجاد تاخیر یا Delay جستجو کنید.


من می خواستم که وقتی صفحه لود بشه یه متن جشمک زن برای 5 ثانیه ظاهر بشه و این رو بنویسه:
loading completed
برای همین از دو تا تایمر استفاده کردم و توی قسمت if سوال قبل یه کدی نوشتم:
timer1.enabled = true
و توی تایمر ها این کد ها رو نوشتم:
timer1

Label1.Show()
Label1.ForeColor = Color.Green
Label1.Text = "Loading completed"
Timer2.Enabled = True
Timer1.Enabled = False



و تایمر 2 :

Label1.Hide()
Timer1.Enabled = True
Timer2.Enabled = False

خب تا اینجاش درست پیش میره اما من چه جوری بعد از 5 ثانیه متوقفش کنم؟؟؟؟؟

شما فقط اشتباهی که انجام دادید Timer1 رو دوباره در Timer2 فعال کردید که نیازی به این کار نیست. بعد از DocumentCompleted باید Timer1 فعال شده و در آخر Timer1_Tick باید Timer2 فعال و Timer1 غیر فعال شود.
پیشنهاد میکنم روی Threading و چند رشته ای هم کار کنید.

morteza1376
یک شنبه 16 تیر 1392, 14:01 عصر
دو تا سوال دیگم مونده لطفا جواب بدین.
یه سوال دیگه هم دارم چه جور می تونم روی یه دکمه در وب بروزر کلیک کنم من کد های زیادی رو امتحان کردم اما نشد لطفا کمکم کنید.
ممنون

mansourii
یک شنبه 16 تیر 1392, 15:09 عصر
سلام شما میتونید از این دستور استفاده کنید

WebBrowser1.Document.All("btnSend").InvokeMember("click")

مهرداد صفا
یک شنبه 16 تیر 1392, 15:19 عصر
من توی فرمم چند تا تکست باکس ایجاد کردم که متن ورودی رو توی وب بروزر میریزن اما...
توی قسمت متن برای ارسال پیام متن رو توی text area نمی نویسه و بالای اون مینویسه مشکلش چی میتونه باشه لطفا کمکم کنید.


لطفا کد رو قرار دهید.

من توی فرمم چند تا تکست باکس ایجاد کردم که متن ورودی رو توی وب بروزر میریزن اما...
در ضمن توی صفحه یه کد کپچا قرار داره که من می خوام اون رو توی یه پیکچر باکس توی فرم بریزم اما نمیشه؟
یعنی آیدیش همش عوض میشه؟


سعی کنید با استفاده از اندیس تصویر در صحفه آدرسش رو پیدا کنید. مثلا ببینید این تصویر چندیمن تصویر در صفحه است و با


WebBrowser.Document.Images[n]
عنصر مربوطه را بگیرید.

من توی فرمم چند تا تکست باکس ایجاد کردم که متن ورودی رو توی وب بروزر میریزن اما...
یه سوال دیگه هم دارم چه جور می تونم روی یه دکمه در وب بروزر کلیک کنم من کد های زیادی رو امتحان کردم اما نشد لطفا کمکم کنید.


لطفا نمونه کدهایی رو که امتحان کردید قرار دهید.

morteza1376
یک شنبه 16 تیر 1392, 17:25 عصر
لطفا کد رو قرار دهید.
نه درست شد آی دی رو اشتباه وارد کرده بودم اما یه مشکل دیگه ای پیش اومده وقتی که متن رو توی تکست باکس می نویسم توی وب نشون میده و بعدش پاک میشه
توی قسمت چنج تکست باکس گذاشتم:
WebBrowser1.Document.GetElementById("body").InnerText = TextBox5.Text

<textarea name="data[body]" id="body" class="" rows="8" cols="40"></textarea>
سعی کنید با استفاده از اندیس تصویر در صحفه آدرسش رو پیدا کنید. مثلا ببینید این تصویر چندیمن تصویر در صفحه است و با


WebBrowser.Document.Images[n]
عنصر مربوطه را بگیرید.
میشه یه مثال بزنید من اینجوری استفاده کردم اما انگار باید چیز دیگه ای داشته باشه ارور میده
PictureBox1.Image = WebBrowser1.Document.Images[1]

لطفا نمونه کدهایی رو که امتحان کردید قرار دهید.
خیلی ممنون پیدا کردم
Dim btlogin As HtmlElement
btlogin = Form2.WebBrowser1.Document.GetElementById("btnSubmit")
btlogin.Focus()
SendKeys.Send("{ENTER}")
اما ببخشید یه سوال دیگه ای برام پیش اومد چجور میتونیم برای وب بروزر از دستور ایف استفاده کنیم:
من می خوام پس از کامل شدن صفحه اگر آدرس سایت برابر اونی که من می خوام باشه یه کاری رو انجام بده لطفا کمکم کنید
در ضمن اگه دکمه ای آی دی نداشته باشه چکار کنم فقط تایپ و کلس داره ممنون

مهرداد صفا
یک شنبه 16 تیر 1392, 20:02 عصر
وقتی که متن رو توی تکست باکس می نویسم توی وب نشون میده و بعدش پاک میشه
توی قسمت چنج تکست باکس گذاشتم:
1
WebBrowser1.Document.GetElementById("body").InnerT ext = TextBox5.Text

1
<textarea name="data[body]" id="body" class="" rows="8" cols="40"></textarea>


برای اینکه متن داخل TextArea قرار داشته باشد باید مقدار خصوصیت Value آن را تغییر دهید:

WebBrowser.GetElementById("body").SetAttribute("Value",textbox.Text)




میشه یه مثال بزنید من اینجوری استفاده کردم اما انگار باید چیز دیگه ای داشته باشه ارور میده
1
PictureBox1.Image = WebBrowser1.Document.Images[1]


شما باید اول آدرس تصویر را به دست بیاورید:

dim url as string=browser.Document.Images(n).GetAttribute("src")
بعد تصویر را دانلود کنید و در PictureBox نمایش دهید.



اما ببخشید یه سوال دیگه ای برام پیش اومد چجور میتونیم برای وب بروزر از دستور ایف استفاده کنیم:
من می خوام پس از کامل شدن صفحه اگر آدرس سایت برابر اونی که من می خوام باشه یه کاری رو انجام بده

آرگومنت رویداد DocumentCompleted یک خصوصیت به نام URLدارد که آدرس صفحه است که می توانید از آن استفاده کنید.


در ضمن اگه دکمه ای آی دی نداشته باشه چکار کنم فقط تایپ و کلس داره ممنون


باید از همون اندیس استفاده کنید.

morteza1376
یک شنبه 16 تیر 1392, 21:11 عصر
دوباره نشد اول از کد شما استفاده کردم:
WebBrowser.GetElementById("body").SetAttribute("Value",textbox.Text)


اما ارور داد و از کد زیر استفاده کردم اما نشد:
WebBrowser.document.GetElementById("body").SetAttribute("Value",textbox5.Text)


دوباره پاک میشه