View Full Version : سوال: چندتا سئوال درمورد کنترل web Browser
alireza661
شنبه 05 فروردین 1391, 14:15 عصر
سلام عزیزان !
- چطور میشه فهمید که وب بروزر چند درصد از صفحه وب رو لود کرده (منظورم مقدار پیشرفت هست)
- چطور میشه کلیک راست و کلیک چپ رو روی این کنترل غیر فعال کرد؟
- آیا با وجود کامپوننت وب بروزر در کنار فایل اصلی برنامه اگر روی سیستم مقصد مرورگر اینترنت اکسپلورر نصب نباشه باز هم وب بروزر کار میکند؟
- چطور میشه متن وسط از صفحه وب نمایش داد بطوریکه هدر سایت و فریم های سمت چپ و راست اون نمایش داده نشن؟
- آیا کنترلی به غیر از وب بروزر وجود دارد که یک کنترل ساده و سبک باشد که کارش فقط نمایش صفحه وب باشد؟ (هیچ کدوم از امکانات وب بروزر رو نداشته باشه)
pnkermanshahan
شنبه 05 فروردین 1391, 15:06 عصر
سوالت واضح نیست به نظرم اگه امکانش هست سوالات رو یکی یکی و واضح تر بپرس
alireza661
شنبه 05 فروردین 1391, 15:21 عصر
کدومش واضح نیست شما بگو تا من توضیح بدم
محسن واژدی
شنبه 05 فروردین 1391, 15:45 عصر
- چطور میشه فهمید که وب بروزر چند درصد از صفحه وب رو لود کرده (منظورم مقدار پیشرفت هست)
سلام
از رویداد ProgressChange برای این منظور استفاده کنید، مانند نمونه زیر:
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
Caption = Int((Progress * 100) / ProgressMax) & "%"
End Sub
- آیا با وجود کامپوننت وب بروزر در کنار فایل اصلی برنامه اگر روی سیستم مقصد مرورگر اینترنت اکسپلورر نصب نباشه باز هم وب بروزر کار میکند؟
تا آنجایی که بنده اطلاع دارم این کامپوننت پیش فرض بر روی ویندوز وجود دارد و با حذف ie حذف نمیشود
- چطور میشه متن وسط از صفحه وب نمایش داد بطوریکه هدر سایت و فریم های سمت چپ و راست اون نمایش داده نشن؟
میبخشید این قسمت را زیاد متوجه نشدم
- آیا کنترلی به غیر از وب بروزر وجود دارد که یک کنترل ساده و سبک باشد که کارش فقط نمایش صفحه وب باشد؟ (هیچ کدوم از امکانات وب بروزر رو نداشته باشه)
کامپوننت دیگر کامپوننت مرورگر موزیلا است آنهم پرتجملات که لینک دانلودش را با جستجو در انجمن میتوانید بیابید، البته محیط و متدهایی تقریبا کاملا مشابه web-browser دارد. بنظر بنده از کامپوننت web-browser استفاده کنید به صرفه تر است
موفق باشید
alireza661
شنبه 05 فروردین 1391, 16:09 عصر
اینکه چطوری کلیک راست و چپ رو روی این کنترل غیر فعال کنم نگفتید
منظورم از سئوال 4 این عکسه :
http://www.img4up.com/up2/57857103345796797865.jpg
قسمت هایی که دورش خط نارنجی کشیدم رو نمیخوام و فقط قسمتی که دورش خط آبی کشیدم رو میخوام نمایش بده یعنی اینطور بگم که یک پست (ارسال) رو فقط میخوام نمایش بده
تا آنجایی که بنده اطلاع دارم این کامپوننت پیش فرض بر روی ویندوز وجود دارد و با حذف ie حذف نمیشود
یعنی اصلا لازم نیست فایل ocx این کنترل رو در کنار فایل exe برنامه قرار بدم؟
محسن واژدی
شنبه 05 فروردین 1391, 16:55 عصر
- چطور میشه کلیک راست و کلیک چپ رو روی این کنترل غیر فعال کرد؟
نمونه پست زیر را بررسی کنید:
http://barnamenevis.org/showthread.php?292108-%D8%AC%D9%84%D9%88%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D8%B9%D9%85%D9%84-%D8%B1%D8%A7%D8%B3%D8%AA-%DA%A9%D9%84%DB%8C%DA%A9-%D8%B1%D9%88%DB%8C-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-WebBrowser&p=1284314&viewfull=1#post1284314
alireza661
شنبه 05 فروردین 1391, 17:20 عصر
صحیح و اما اگر بخوام کاربر روی لینک ها کلیک چپ نکند؟
rezankh
شنبه 05 فروردین 1391, 17:49 عصر
سلام
حالا كه صحبت از وب بروازر هست من هم بعنوان كسي كه با اين كامپوننت كار نكردم و مبتدي هستم يك سوال دارم:
با يك سايت اينترنتي كه داراي چند فرم مختلف هست مشغول وارد نمودن اطلاعات آماري هستم. از اونجايي كه به اطلاعات وارد شده دسترسي ندارم، ميخوام برنامهاي با وي بي بنويسم كه همزمان با وارد شدن به سايت مذكور برنامه من هم فراخواني بشه. بطوريكه فرمهاي اون نظير آدرس صفحات وب باشه و همزمان با وارد كردن اطلاعات در وب اطلاعات در فرم من و يا در بانك اطلاعاتي من ذخيره بشه تا بعداً قابل دسترسي باشه و بشه عملياتي مثل گزارشگيري و ... رو در اون انجام داد. تا جائيكه تونستم تو سايت گشتم و تنها چيزي كه دستگيرم شد استفاده از WebBrowser بود كه حالا آيا ميشه عبارت داخل آبجكتهاي وي بي رو به آبجكتهاي وب و بالعكس سند كرد يا اينكه خير؟ اگه ممكن هست لطفا راهنمايي كنيد و حدالمقدور يك مثال كوچيك بزاريد.
باتشكر از راهنمايي هاي شما دوستان.
محسن واژدی
شنبه 05 فروردین 1391, 18:52 عصر
آيا ميشه عبارت داخل آبجكتهاي وي بي رو به آبجكتهاي وب و بالعكس سند كرد يا اينكه خير؟
سلام
بله، میشه
ارسال مقدار به یک فیلد
Private Sub Command1_Click()
WebBrowser1.Document.getElementById("FieldName").Value = 123
End Sub
خواندن مقدار
Private Sub Command2_Click()
MsgBox WebBrowser1.Document.getElementById("FieldName").Value
End Sub
و کلیک بر روی command-button
Private Sub Command3_Click()
WebBrowser1.Document.getElementById("BtnName").Click
End Sub
بجای FieldName و BtnName نام فیلدها و دکمه مورد نظر را وارد میکنیم
البته در این موضوع قبلا هم زیاد بحث شده که اطلاعات بیشتر را میتوانید در انجمن بیابید
موفق باشید
alireza661
شنبه 05 فروردین 1391, 19:45 عصر
آقای واژدی جواب مارو ندادی که چجوری یک پست خاص رو به نمایش در بیارم و چجوری به کاربر اجازه ندم تا روی لینک ها کلیک کنه (کلیک چپ)
محسن واژدی
شنبه 05 فروردین 1391, 22:03 عصر
تنها راهی که به نظر بنده میرسد استفاده از دستور جاوا اسکریپت removeChild برای حذف بلاک های است که متاسفانه زیاد هم بررسی نکرده ام
و برای جلوگیری از کلیک چپ موس متاسفانه راه خاصی به نظرم نمیرسد
موفق باشید
rezankh
سه شنبه 08 فروردین 1391, 12:01 عصر
سلام
بله، میشه
ارسال مقدار به یک فیلد
Private Sub Command1_Click()
WebBrowser1.Document.getElementById("FieldName").Value = 123
End Sub
خواندن مقدار
Private Sub Command2_Click()
MsgBox WebBrowser1.Document.getElementById("FieldName").Value
End Sub
و کلیک بر روی command-button
Private Sub Command3_Click()
WebBrowser1.Document.getElementById("BtnName").Click
End Sub
بجای FieldName و BtnName نام فیلدها و دکمه مورد نظر را وارد میکنیم
البته در این موضوع قبلا هم زیاد بحث شده که اطلاعات بیشتر را میتوانید در انجمن بیابید
موفق باشید
با تشكر از آقاي واژدي، اگه بخوام برعكسش رو انجام بدم يعني مقداري از يك تكس باكس و يا يك متن رو با كليك دكمه مثلا تأييد در وب به وي بي بدم، بايد تو چه رويدادي از وب براوزر كد بدم و چه طور؟ ممنون
محسن واژدی
سه شنبه 08 فروردین 1391, 16:27 عصر
اگه بخوام برعكسش رو انجام بدم يعني مقداري از يك تكس باكس و يا يك متن رو با كليك دكمه مثلا تأييد در وب به وي بي بدم، بايد تو چه رويدادي از وب براوزر كد بدم و چه طور؟
سلام
نمونه زیر را بررسی کنید
موفق باشید
rezankh
سه شنبه 08 فروردین 1391, 20:50 عصر
با تشكر از شما آقاي واژدي اين دومين باره كه با راهنماييتون كار منو داريد راه مياندازيد.
اگه امكان داره روي اين برنامه اي كه ميذارم به من كمك كنيد. در ضمن از اينكه در اين برنامه از سايت برنامه نويس بعنوان مثال استفاده ميكنم از تمام دوستان عذرخواهي مي كنم.
rezankh
پنج شنبه 10 فروردین 1391, 10:16 صبح
سلام
هر چي تو سايت گشتم نتونستم راهي پيدا كنم كه از webbrowser به وي بي مقدار بفرستم. اصلا اين كار شدني هست يا نه؟ كارم گيره. لطفا اگه شدني هست روي فايل پيوست كدش رو بذاريد. با تشكر.
محسن واژدی
پنج شنبه 10 فروردین 1391, 19:01 عصر
سلام
از آنجایی که در برخی از وبسایت ها (مانند برنامه نویس) همزمان با submit شدن فرم فیلد رمز خالی میشود نمیتوانیم پس از فشرده شدن کلید submit اقدام به دریافت user/pass کنیم، مگر آنکه کد دریافت را در تایمر قرار داده باشیم:
اگر بخواهیم مقادیر پس از submit شدن فرم دریافت کنیم از کدی مشابه زیر میتوانیم استفاده کنیم:
Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers As Variant, Cancel As Boolean)
Text1 = WebBrowser1.Document.getElementById("navbar_username").Value
Text2 = WebBrowser1.Document.getElementById("navbar_password").Value
End Sub
و یا همین کد را در تایمر قرار دهیم
هر چي تو سايت گشتم نتونستم راهي پيدا كنم كه از webbrowser به وي بي مقدار بفرستم. اصلا اين كار شدني هست يا نه؟
webbrowser نمیتواند مستقیما مقادیر وی بی را تحت تاثیر قرار دهد مگر آنکه خودمان دستورالعمل هایی را برای این مورد در برنامه تعریف کرده باشیم (شبیه موردی که در پست 13 عرض کردم)
موفق باشید
rezankh
پنج شنبه 10 فروردین 1391, 22:29 عصر
سلام.
اگه ممكنه روي همون مثال با يك سايت ديگه مثل ياهو ميل يا گوگل و يا سايتي كه مشكل نداشته باشيد، توضيحاتتون رو تكميل كنيد. ممنون ميشم. چون كدهاي شمارو امتحان كردم بازهم موفق نشدم.
با تشكر از توجه شما.
محسن واژدی
جمعه 11 فروردین 1391, 10:59 صبح
سلام
نمونه زیر را بررسی کنید
موفق باشید
alireza661
جمعه 11 فروردین 1391, 12:39 عصر
آقای rezankh بحث تاپیک من را به بیراهه کشیدید و این به دور از ادبه
شما جواب سئوال هات رو باید در همون تاپیکی که قبلا با این موضوع ایجاد کردید میگرفتید دلیلی نداره که شما بحث تاپیک من رو به خاکی ببرید در صورتیکه هنوز خودم جواب سئوال هامو نگرفتم
بگذریم
ما بالاخره نفهمیدیم فایل dll یا ocx وب بروزر را باید در کنار برنامه قرار دهیم یا خیر؟
محسن واژدی
جمعه 11 فروردین 1391, 16:52 عصر
ما بالاخره نفهمیدیم فایل dll یا ocx وب بروزر را باید در کنار برنامه قرار دهیم یا خیر؟
سلام
لزومی ندارد چرا که در همه ویندوز ها کامپوننت ie وجود دارد
موفق باشید
alireza661
شنبه 12 فروردین 1391, 14:35 عصر
میشه کاری کرد که وب بروزر ظاهر flat به خودش بگیره؟
الان حالت 3d داره یعنی دورش فرورفتگی داره که ظاهرش رو زیاد جالب نمیکنه میخوام flat کنمش تا فرورفتگی قاب دورش معلوم نشه راهی هست؟
just4froum
شنبه 12 فروردین 1391, 15:06 عصر
فکر نکنم خود webbrowser این قابلیت رو داشته باشه ولی میتونی 4 تا picturebox بگذاری 4 طرف webbrowser که میتونه این قابیلیت رو بهش بده.
alireza661
شنبه 12 فروردین 1391, 18:11 عصر
WebBrowser1.Document.getElementById("FieldName").Value = 123
من با این کد میخوام مقدار یک تکس باکس رو در یک فیلد صفحه اینترنتی وارد کنم و بجای fielname هم اسم فیلد مورد نظر رو نوشتم اما فقط روی بعضی ها جواب میده و روی اکثرا این پیغام خطا رو میده :
object variable or with block variable not set
مشکل از کجاست؟
rezankh
شنبه 12 فروردین 1391, 19:24 عصر
من با این کد میخوام مقدار یک تکس باکس رو در یک فیلد صفحه اینترنتی وارد کنم و بجای fielname هم اسم فیلد مورد نظر رو نوشتم اما فقط روی بعضی ها جواب میده و روی اکثرا این پیغام خطا رو میده :
object variable or with block variable not set
مشکل از کجاست؟
سلام
من هم اين مشكل رو داشتم :
با اين كد امتحان كن درست ميشه.
WebBrowser1.Document.Forms(0).elements("j_username").Value = T1.Text
در ضمن بابت به خاكي رفتن تاپيكتون هم پوزش ميطلبم.
سال خوبي داشته باشيد.
alireza661
شنبه 12 فروردین 1391, 19:47 عصر
با اين كد امتحان كن درست ميشه.
با این هم همون پیغام خطارو میده
just4froum
شنبه 12 فروردین 1391, 21:14 عصر
ببین عزیزم شما برای این که بتونی یه تکست باکس رو مقدار دهی کنی باید id تکست باکس رو داشته باشی نه اسمشو.
اونایی رو که میگی شما میره احتمالا اسمشون با id شون یکی بوده.
حالا اگر تکست باکس id داشت که هیچی ولی اگر نداشت یک کد هست که میشه مقدار دهیش کرد. من هم مدت های زیادی دنبالش بودم.
جای targetinputname اسم تکستباکس رو بنویس
Dim targetinputname As String
targetinputname = "txtwriter"
For n = 0 To WebBrowser1.Document.All.length - 1
If WebBrowser1.Document.All(n).tagName = "INPUT" Then
If WebBrowser1.Document.All(n).Name = targetinputname Then
WebBrowser1.Document.All(n).Value = Text1.Text
Exit Sub
End If
End If
Next
موفق باشید/
alireza661
شنبه 12 فروردین 1391, 21:49 عصر
حالا اگر تکست باکس id داشت که هیچی
حالا اگر سورس صفحه دست خودم باشه نمیشه به تگ فیلد خودم دستی id اضافه کنم؟
just4froum
شنبه 12 فروردین 1391, 22:16 عصر
چرا نمیشه مثلا :
<input type="text" id="Txt" name="Txt"
farshid_king_r
دوشنبه 14 فروردین 1391, 13:04 عصر
با سلام
چه طور بايد وقتي كه يه صفحه لود ميشه بعد مقدار text هر چي بود تو وي بي هم همون مقدار رو بگيره :
Label7.Caption = WebBrowser1.Document.getElementById("text_result") ~~~~~ az in estefade kardam Be Jaye Caption >> {object} ___ Moshkel Kojast
ممنون ميشم سريع راهنماييم كنيد
div id="text_result"
بعد هم texte تغير ميكنه . يعني بعد از كليك روي يه command ميگه اين وجود داره يا نداره
farshid_king_r
دوشنبه 14 فروردین 1391, 17:57 عصر
اقا ما هنوز منتظريم __
just4froum
دوشنبه 14 فروردین 1391, 19:12 عصر
با سلام
یک Value به آخرش اضافه کنید اینجوری :
Label7.Caption = WebBrowser1.Document.getElementById("text_result").value
البته فاصله نداره سایت برنامه نویس این فاصله رو ایجاد میکنه.
farshid_king_r
دوشنبه 14 فروردین 1391, 19:33 عصر
با سلام
یک Value به آخرش اضافه کنید اینجوری :
Label7.Caption = WebBrowser1.Document.getElementById("text_result").value
البته فاصله نداره سایت برنامه نویس این فاصله رو ایجاد میکنه.
امتحان كردم نشد . كد ديگه اي وجود نداره؟
just4froum
دوشنبه 14 فروردین 1391, 22:23 عصر
بفرمایید این هم نمونه :
85103
farshid_king_r
جمعه 18 فروردین 1391, 09:55 صبح
ممنون
در رابطه با label چي ؟
چگونه بايد عمل كنيم ؟
just4froum
جمعه 18 فروردین 1391, 14:11 عصر
ببخشید منظورتونو نفهمیدم ؟
خوب این برنامه ای که من گذاشتم شما هر متنی رو توی تکست باکس webbrowser تایپ کنید در label می نویسه.
farshid_king_r
شنبه 19 فروردین 1391, 08:54 صبح
ببخشید منظورتونو نفهمیدم ؟
خوب این برنامه ای که من گذاشتم شما هر متنی رو توی تکست باکس webbrowser تایپ کنید در label می نویسه.
ميخوام label رو از webbrowser كپي بگيره يا بنويسه
rezankh
شنبه 19 فروردین 1391, 19:40 عصر
سلام
اگه منظورتون دريافت ليبلهاي روي وب هست، من سورس Html وب رو به يك تكست باكس دادم و بعد مقدار ليبل رو با توابع رشته اي استخراج كردم. نحوه استخراج سورس هم به شكل زير هست كه البته تو سايت با كمي جستجو ميشه پيداش كرد.
Private Sub WebBrowser1_DownloadComplete()
Text1.Text = WebBrowser1.Document.documentElement.OuterHTMl
End Sub
rezankh
شنبه 19 فروردین 1391, 20:03 عصر
سلام
با توجه به اينكه عنونا تاپيك "چندتا سئوال درمورد کنترل web Browser" هست، لذا از ايجاد تاپيك ديگه خودداري ميكنم و در همين تاپيك سوال جديدم رو ميپرسم. اميدوارم كه دوستان جواب دادن به سوالات ديگران را فراموش نكنند.
با سايتي كار ميكنم كه داراي تعداد كمبوباكس هست كه آيتم هاي كمبو دوم به انتخاب آيتم كمبو اول بستگي داره و به همين شكل تا 6 كمبو تكرار ميشه. كه سورس دو كمبوي اول به شرح ذيل هست:
<td>زیر بخش :</td><td>
<select name="sectionId" onchange='document.forms[0].action="item.do?method=selectSubSection";document.forms[0].submit();'>
<option value="s" >انتخاب زیربخش</option>
<option value="10000000" style="color: #CCCCCC">محصولات زراعي</option>
<option value="20000000">آبزيان پرورشي</option>
<option value="30000000">انواع دام</option>
<option value="40000000" style="color: #CCCCCC">محصولات باغي</option>
<option value="50000000" style="color: #CCCCCC">انواع طيور</option>
<option value="60000000">منابع طبيعي</option>
</select>
</td>
<td>گروه :</td>
<td>
<select name="groupId" disabled="disabled">
<option value="s" > انتخاب گروه </option>
</select>
</select>
</td> </tr>
<tr>
حال ميخوام با انتخاب آيتم كمبوباكس شماره1 در وي بي مقدار كمبوي نظير نيز تغيير پيدا كنه از كد زير هم استفاده كردم كه نشد.
Private Sub Combo1_Change()
If Combo1.Text = "محصولات زراعي" Then
WebBrowser1.Document.All.Item("sectionId").Item(1).Selected = True
WebBrowser1.Navigate "http://www.sabka.ir:3030/AgriInsurance/item.do?method=selectSubSection"
End If
End Sub
كه هيچ عملي انجام نميشه. لطفا راهنمايي كنيد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.