میخواستم بدانم آیا می توان از طریق وبی بی دات نت تکتست باکس های موجود در یک سایت( باز شده در آیتم ابنترنت بروزر خود وبی بی )پر کرد مثلا از طریق نوشتن یک برنامه بتوانیم در تکست باکس سرچ گوگل نوشته دخواه خود را بنویسیم
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
شدنش که میشه، اما بهتره که اینکار رو نکنید، مخصوصا که طبق اصول امنیتی قرار بر اینه که سایر نرم افزار ها
مجاز به تغییر مقادیر داخل صفحات وب نباشند. یکی از خاصیت های کنترل های browser در اینه که به شما
اجازه خواندن متن داخل اجزاء صفحه رو بدهند ولی مجاز به تغییر دادن محتویات شان نباشید.
البته شما می توانید اینکار رو با ترفند هایی انجام دهید اما نه انجام اینکار اصولی است و نه روش انجام اش.
یک دکمه با نام button1 و یک browser با نام webbrowser1 روی فرم قرار دهید و کد زیر رو به فرم اضافه کنید.
زمانی که صفحه گوگل بصورت کامل باز شد روی دکمه button1 کلیک کنید.کد: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
متن majidonline رو داخل حافظه clipboard کپی می کنه و بعد با ارسال کردن ترکیب کلیدی ctrl + v
به بافر صغحه کلید این متن رو به زور داخل textbox جستجوی گوگل درج می کنه.
آقا چطور میشه از این توی ویژوال بیسیک 6 استفاده کرد ؟
Private Const INPUT_KEYBOARD As Long = 1
Private Const KEYEVENTF_KEYUP As Long = &H2
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
Private Declare Function SendInput Lib "user32.dll" (ByVal cInputs As Long, ByRef pInputs As Any, ByVal cbSize As Long) As Long
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