PDA

View Full Version : کمک برای نوشتن برنامه ی با WebBrowser یا Socket



1009645
جمعه 29 دی 1391, 18:21 عصر
سلام دوستان

من می خوام برنامه ای بنویسم { با یروزر یا ساکت ها ، هر جور که خودتون صلاح میدونید } که وقتی چندین آدرس بهش داده میشه تک تک اونها رو چک کنه و اگر اون نوشته ای که میخوام در اون صفحه بود به من همون آدرس رو نشون بده

کسی می تونه کمکم کنه دوستان ؟

saber67
جمعه 29 دی 1391, 19:07 عصر
به تاپیک زیر مراجعه کنید احتمالا مشکلتون حل بشه:
کار با HTML (http://barnamenevis.org/showthread.php?378920-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-HTML&p=1676510&viewfull=1#post1676510)

1009645
جمعه 29 دی 1391, 21:47 عصر
سلام دوستان

من برنامه ای با این نوع کد نویسی نوشتم :


Private Sub Command1_Click()
On Error Resume Next
Dim strfindword As String
strfindword = "Find" ' what word to find?
If WebPageContains(strfindword) = True Then 'check if the word is in page
MsgBox "The webpage contains the text" 'string is in page
Else
MsgBox "The webpage doesn't contains the text" 'string is not in page
End If
End Sub
Private Function WebPageContains(ByVal s As String) As Boolean
On Error Resume Next
Dim i As Long, EHTML
For i = 1 To WebBrowser1.Document.All.length
Set EHTML = _
WebBrowser1.Document.All.Item(i)


If Not (EHTML Is Nothing) Then
If InStr(1, EHTML.innerHTML, _
s, vbTextCompare) > 0 Then
WebPageContains = True
Exit Function
End If
End If
Next i
End Function
Private Sub Form_Load()
On Error Resume Next
WebBrowser1.Navigate2 "http://site.com/x-1-x.php"
End Sub





حالا می خوام به جای اون x-1-x.php که چک میکنه ، به عدد 1 هر ثانیه 1 واحد اضافه بشه { x-1-x.php بشه x-2-x.php بعدش x-3-x.php و ... به همین صورت } و برنامه مجدد تست کنه و بگه که هست یا نه !

لطفا کمک کنید

saber67
جمعه 29 دی 1391, 22:17 عصر
فکر کنم مشکلت اینه که بدونی کی شرط رو چک کنی؟ البته به طور خودکار، آره؟
خب ببین این کد کارت رو راه میندازه؟


Do Until Webbrowser1.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

تا وقتی که صفحه Webbrowser کامل لود نشه این حلقه تموم نمیشه بعد از این می تونی شرط رو چک کنی.
اگه شرط درست بود خب دیگه کار تمومه، اگه نبود آدرس جدید رو می سازی و همین کارو تکرار می کنی!

1009645
جمعه 29 دی 1391, 23:26 عصر
نه ، منظور من این بود که برنامه بیاد تک تک یک واحد به اون عددی که بین X ها هستش اضافه کنه و هر وقت که اون نوشته ی مورد نظر من پیدا شد بهم یک پیغام بده ؛ همین

پیشاپیش ممنونم

Hashemvp
شنبه 30 دی 1391, 09:04 صبح
سلام دوست عزیز اول ی تایمر ب فرمت اضافه کن
Interval تایمر هم 100 بذار
Enabled تایمر هم False کن
بعد توی قسمت جنرال این متغیر رو تعریف کن
Dim HvP As Long

حالا این کد رو بجای کد خودت بذار


Private Sub Command1_Click()
On Error Resume Next
Dim strfindword As String
strfindword = "Find" ' what word to find?
If WebPageContains(strfindword) = True Then 'check if the word is in page
MsgBox "The webpage contains the text" 'string is in page
Else
MsgBox "The webpage doesn't contains the text" 'string is not in page
End If
End Sub
Private Function WebPageContains(ByVal s As String) As Boolean
On Error Resume Next
Dim i As Long, EHTML
For i = 1 To WebBrowser1.Document.All.length
Set EHTML = _
WebBrowser1.Document.All.Item(i)


If Not (EHTML Is Nothing) Then
If InStr(1, EHTML.innerHTML, _
s, vbTextCompare) > 0 Then
WebPageContains = True
Exit Function
End If
End If
Next i
End Function
Private Sub Form_Load()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
HvP = HvP + Val(1)
On Error Resume Next
WebBrowser1.Navigate2 "http://site.com/x-" & CStr(HvP) & "-x.php"
End Sub


موفق باشی

saber67
شنبه 30 دی 1391, 10:20 صبح
نه ، منظور من این بود که برنامه بیاد تک تک یک واحد به اون عددی که بین X ها هستش اضافه کنه و هر وقت که اون نوشته ی مورد نظر من پیدا شد بهم یک پیغام بده ؛ همین

پیشاپیش ممنونم

خب منم همینو گفتم دیگه! منتها دیدم خودت بیشترش رو نوشتی فقط چک کردن به موقع شرط مونده بود گفتم نیام دوباره واست کد اضافه بزارم

ولی خب Hasehmvp زحمت کد نویسی همه ش رو کشیده فقط یه چیزو جا انداخته، این کد خودکار نیست یعنی هر بار باید روی دکمه کلیک کنی تا بفهمی متن مورد نظر توی اون صفحه هست یا نه

بهتره این جوری بنویسی که همه چی خودکار باشه:


Private Hvp As Long

Private Sub Form_Load()
Hvp = 0
Call SearchForWebPage
End Sub

Private Sub SearchForWebPage()

On Error Resume Next

lbBeginSearch:

Hvp = Hvp + Val(1)
Webbrowser1.Navigate2 "http://site.com/x-" & CStr(Hvp) & "-x.php"

Do Until Webbrowser1.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop

Dim StrFindWord As String
StrFindWord = "Find" ' what word to find?
If WebPageContains(StrFindWord) = True Then 'check if the word is in page
MsgBox "The webpage contains the text" 'string is in page
Else
'MsgBox "The webpage doesn't contains the text" 'string is not in page
GoTo lbBeginSearch ' Repeat Search In New Page
End If
End Sub

Private Function WebPageContains(ByVal s As String) As Boolean

On Error Resume Next

Dim i As Long, EHTML

For i = 1 To Webbrowser1.Document.All.length
Set EHTML = Webbrowser1.Document.All.Item(i)
If Not (EHTML Is Nothing) Then
If InStr(1, EHTML.innerHTML, s, vbTextCompare) > 0 Then
WebPageContains = True
Exit Function
End If
End If
Next i

End Function

1009645
شنبه 30 دی 1391, 17:51 عصر
از همه ممنونم ، بعد وقتی که من بخوام آدرس جایی که اون نوشته پیدا شده رو برای توی MsgBox نشون بده باید این کد رو بزنم ؟
msgbox webbrowser1.navigate2
چون با این کد اررور میده ، من فقط می خوام آدرس رو نشون بده

پیشاپیش ممنون و متشکرم

Hashemvp
شنبه 30 دی 1391, 20:33 عصر
نه دوست عزیز چون متغیری ک اول گفتم توی بخش جنرال تعریف کنی سراسری هست تا زمانیکه برنامه در حال اجرا هست مقدار متغیر حفظ میشه
از کد زیر استفاده کن
حل میشه
MSGBOX "http://site.com/x-" & CStr(HvP) & "-x.php"

موفق باشی

saber67
شنبه 30 دی 1391, 22:22 عصر
برای بدست آوردن آدرس فعلی Webbrowser از کد زیر باید استفاده کنی:


Msgbox Webbrowser1.LocationURL