مشکل در پر کردن تکست باکس در vb.net

sicret

Member
میخواستم بدانم آیا می توان از طریق وبی بی دات نت تکتست باکس های موجود در یک سایت( باز شده در آیتم ابنترنت بروزر خود وبی بی )پر کرد مثلا از طریق نوشتن یک برنامه بتوانیم در تکست باکس سرچ گوگل نوشته دخواه خود را بنویسیم:rose:
 

the_king

مدیرکل انجمن
میخواستم بدانم آیا می توان از طریق وبی بی دات نت تکتست باکس های موجود در یک سایت( باز شده در آیتم ابنترنت بروزر خود وبی بی )پر کرد مثلا از طریق نوشتن یک برنامه بتوانیم در تکست باکس سرچ گوگل نوشته دخواه خود را بنویسیم:rose:

شدنش که میشه، اما بهتره که اینکار رو نکنید، مخصوصا که طبق اصول امنیتی قرار بر اینه که سایر نرم افزار ها
مجاز به تغییر مقادیر داخل صفحات وب نباشند. یکی از خاصیت های کنترل های Browser در اینه که به شما
اجازه خواندن متن داخل اجزاء صفحه رو بدهند ولی مجاز به تغییر دادن محتویات شان نباشید.
البته شما می توانید اینکار رو با ترفند هایی انجام دهید اما نه انجام اینکار اصولی است و نه روش انجام اش.

یک دکمه با نام Button1 و یک Browser با نام WebBrowser1 روی فرم قرار دهید و کد زیر رو به فرم اضافه کنید.

کد:
    Private Const INPUT_KEYBOARD As Int32 = 1
    Private Const KEYEVENTF_KEYUP As Int32 = &H2

    Private Structure INPUT_KEYBDINPUT
        Public dwtype As Int32
        Public wVk As Int16
        Public wScan As Int16
        Public dwFlags As Int32
        Public time As Int32
        Public dwExtraInfo As Int32
        Public Reserved1 As Int32
        Public Reserved2 As Int32
    End Structure

    Private Declare Function SendInput Lib "user32.dll" (ByVal cInputs As Int32, ByRef pInputs As INPUT_KEYBDINPUT, ByVal cbSize As Int32) As Int32

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Url = New Uri("http://www.google.com/")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        With WebBrowser1
            If .IsBusy = False And .IsOffline = False Then
                Clipboard.Clear()
                Clipboard.SetText("majidonline", TextDataFormat.Text)
                WebBrowser1.Focus()
                Application.DoEvents()
                Dim keys(0 To 3) As INPUT_KEYBDINPUT
                With keys(0)
                    .dwtype = INPUT_KEYBOARD
                    .wVk = 17
                    .wScan = 29
                    .dwFlags = 0
                    .time = 0
                    .dwExtraInfo = 0
                End With
                With keys(1)
                    .dwtype = INPUT_KEYBOARD
                    .wVk = 86
                    .wScan = 47
                    .dwFlags = 0
                    .time = 0
                    .dwExtraInfo = 0
                End With
                With keys(2)
                    .dwtype = INPUT_KEYBOARD
                    .wVk = 86
                    .wScan = 47
                    .dwFlags = KEYEVENTF_KEYUP
                    .time = 0
                    .dwExtraInfo = 0
                End With
                With keys(3)
                    .dwtype = INPUT_KEYBOARD
                    .wVk = 17
                    .wScan = 29
                    .dwFlags = KEYEVENTF_KEYUP
                    .time = 0
                    .dwExtraInfo = 0
                End With
                SendInput(4, keys(0), 28)
            End If
        End With
    End Sub

زمانی که صفحه گوگل بصورت کامل باز شد روی دکمه Button1 کلیک کنید.
متن majidonline رو داخل حافظه Clipboard کپی می کنه و بعد با ارسال کردن ترکیب کلیدی Ctrl + V
به بافر صغحه کلید این متن رو به زور داخل TextBox جستجوی گوگل درج می کنه.
 

margeGole

New Member
شدنش که میشه، اما بهتره که اینکار رو نکنید، مخصوصا که طبق اصول امنیتی قرار بر اینه که سایر نرم افزار ها
مجاز به تغییر مقادیر داخل صفحات وب نباشند. یکی از خاصیت های کنترل های browser در اینه که به شما
اجازه خواندن متن داخل اجزاء صفحه رو بدهند ولی مجاز به تغییر دادن محتویات شان نباشید.
البته شما می توانید اینکار رو با ترفند هایی انجام دهید اما نه انجام اینکار اصولی است و نه روش انجام اش.

یک دکمه با نام button1 و یک browser با نام webbrowser1 روی فرم قرار دهید و کد زیر رو به فرم اضافه کنید.

کد:
    private const input_keyboard as int32 = 1
    private const keyeventf_keyup as int32 = &h2

    private structure input_keybdinput
        public dwtype as int32
        public wvk as int16
        public wscan as int16
        public dwflags as int32
        public time as int32
        public dwextrainfo as int32
        public reserved1 as int32
        public reserved2 as int32
    end structure

    private declare function sendinput lib "user32.dll" (byval cinputs as int32, byref pinputs as input_keybdinput, byval cbsize as int32) as int32

    private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
        webbrowser1.url = new uri("http://www.google.com/")
    end sub

    private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
        with webbrowser1
            if .isbusy = false and .isoffline = false then
                clipboard.clear()
                clipboard.settext("majidonline", textdataformat.text)
                webbrowser1.focus()
                application.doevents()
                dim keys(0 to 3) as input_keybdinput
                with keys(0)
                    .dwtype = input_keyboard
                    .wvk = 17
                    .wscan = 29
                    .dwflags = 0
                    .time = 0
                    .dwextrainfo = 0
                end with
                with keys(1)
                    .dwtype = input_keyboard
                    .wvk = 86
                    .wscan = 47
                    .dwflags = 0
                    .time = 0
                    .dwextrainfo = 0
                end with
                with keys(2)
                    .dwtype = input_keyboard
                    .wvk = 86
                    .wscan = 47
                    .dwflags = keyeventf_keyup
                    .time = 0
                    .dwextrainfo = 0
                end with
                with keys(3)
                    .dwtype = input_keyboard
                    .wvk = 17
                    .wscan = 29
                    .dwflags = keyeventf_keyup
                    .time = 0
                    .dwextrainfo = 0
                end with
                sendinput(4, keys(0), 28)
            end if
        end with
    end sub
زمانی که صفحه گوگل بصورت کامل باز شد روی دکمه button1 کلیک کنید.
متن majidonline رو داخل حافظه clipboard کپی می کنه و بعد با ارسال کردن ترکیب کلیدی ctrl + v
به بافر صغحه کلید این متن رو به زور داخل textbox جستجوی گوگل درج می کنه.

آقا چطور میشه از این توی ویژوال بیسیک 6 استفاده کرد ؟
 

the_king

مدیرکل انجمن
آقا چطور میشه از این توی ویژوال بیسیک 6 استفاده کرد ؟

ابتدا در روی ویرایشگر فرم Visual Basic 6.0 ترکیب کلیدی Ctrl + T را فشار داده و کنترل Microsoft Internet Controls
را تیک بزنید و یک نمونه از کنترل اش را که به پنجره Toolbox اضافه می شود روی فرم قرار دهید.

نوع داده Int32 در کل کد کلا به Long تغییر پیدا می کنه، Int16 هم به Integer تبدیل میشه :

کد:
Private Const INPUT_KEYBOARD As Long = 1
Private Const KEYEVENTF_KEYUP As Long = &H2

بجای کلمه کلیدی Structure از Type استفاده میشه و در مشخصات فیلد های Type عبارت Public حذف میشه :
کد:
Private Type INPUT_KEYBDINPUT
    dwtype As Long
    wVk As Integer
    wScan As Integer
    dwFlags As Long
    time As Long
    dwExtraInfo As Long
    Reserved1 As Long
    Reserved2 As Long
End Type

تعریف Declare تغییر خاصی نمی کنه :
کد:
Private Declare Function SendInput Lib "user32.dll" (ByVal cInputs As Long, ByRef pInputs As Any, ByVal cbSize As Long) As Long

WebBrowser دیگه مشخصه ای به نام Url نداره، باید از Navigate استفاده کنید، ساختار رخداد Form_Load هم که کلا
عوض میشه :
کد:
Private Sub Form_Load()
    WebBrowser1.Navigate "http://www.google.com/"
End Sub

پارانتز های () حذف میشه و اسم یکسری توابع و پارامتر هاشون تغییر می کنه :
کد:
Private Sub Command1_Click()
    With WebBrowser1
        If .Busy = False And .Offline = False Then
            Clipboard.Clear
            Clipboard.SetText "majidonline", vbCFText
            WebBrowser1.SetFocus
            DoEvents
            Dim keys(0 To 3) As INPUT_KEYBDINPUT
            With keys(0)
                .dwtype = INPUT_KEYBOARD
                .wVk = 17
                .wScan = 29
                .dwFlags = 0
                .time = 0
                .dwExtraInfo = 0
            End With
            With keys(1)
                .dwtype = INPUT_KEYBOARD
                .wVk = 86
                .wScan = 47
                .dwFlags = 0
                .time = 0
                .dwExtraInfo = 0
            End With
            With keys(2)
                .dwtype = INPUT_KEYBOARD
                .wVk = 86
                .wScan = 47
                .dwFlags = KEYEVENTF_KEYUP
                .time = 0
                .dwExtraInfo = 0
            End With
            With keys(3)
                .dwtype = INPUT_KEYBOARD
                .wVk = 17
                .wScan = 29
                .dwFlags = KEYEVENTF_KEYUP
                .time = 0
                .dwExtraInfo = 0
            End With
            SendInput 4, keys(0), 28
        End If
    End With
End Sub

کد کامل پروژه ضمیمه این پست می باشد
 

پیوست ها

  • GoogleTextBox VB6.zip
    1.8 کیلوبایت · بازدیدها: 12

جدیدترین ارسال ها

بالا