タイトル | : ブラウザへの文字列の書き込みできました |
記事No | : 15503 |
投稿日 | : 2012/06/07(Thu) 16:52 |
投稿者 | : @chie |
ブラウザへの文字列の書き込みできました クリップボード貼り付けは カコのサンプルからつぎはぎしながらやってみました
ただしFireFoxは結局入力を受け付けなかったので ブラウザはGoogle Chromeを使用しました
魔界の仮面弁士さん 花ちゃんさん ありがとうございました
-------------------------------------------------------------------
'マウスカーソルの位置を設定する(P389) Private Declare Function SetCursorPos Lib "user32" _ (ByVal x As Long, ByVal y As Long) As Long
'キーストロークをシミュレートする(P1065) Private Declare Sub keybd_event Lib "user32.dll" _ (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const KEYEVENTF_KEYUP = &H2 'キーアップ Private Const KEYEVENTF_EXTENDEDKEY = &H1 'スキャンコードは拡張コード '仮想キーコード・ASCII値・スキャンコード間でコードを変換する(P1067) Private Declare Function MapVirtualKey Lib "user32" _ Alias "MapVirtualKeyA" (ByVal wCode As Long, _ ByVal wMapType As Long) As Long
Private Sub AutoNyuryoku() dim x1 As Long dim y1 As Long x1 =100 y1= 200 '文字入力欄にマウスをもってくる SetCursorPos x1, y1 mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'入力貼り付け Call sSetSendKeys(strAddress, vbKeyControl, vbKeyV) 'Tab移動 Call TabPush Call sSetSendKeys(strPssword, vbKeyControl, vbKeyV) '貼り付け
End Sub
’文字列をクリップボードに入れて何かに書き出す Public Sub sSetSendKeys(Inputstr As String, bVk1 As Long, _ Optional bVk2 As Long = 0, Optional bVk3 As Long = 0) Clipboard.Clear Clipboard.SetText Inputstr 'SendKeys と同様にアクティブウィンドウにキーストロークを送る '以下のパターンは必要により追加して下さい。 If bVk2 = 0& And bVk3 = 0& Then 'キーを1個だけ送る Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) ElseIf bVk3 = 0& Then 'キーの複合操作 [Alt] + [E] 等 Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) ElseIf (bVk1 <> 0&) And (bVk2 <> 0&) And (bVk3 <> 0&) Then 'SendKeys "%(EA)" と同様の操作 Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk2), MapVirtualKey(CByte(bVk2), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk3), MapVirtualKey(CByte(bVk3), 0), _ KEYEVENTF_EXTENDEDKEY Or 0, 0) Call keybd_event(CByte(bVk3), MapVirtualKey(CByte(bVk3), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) Call keybd_event(CByte(bVk1), MapVirtualKey(CByte(bVk1), 0), _ KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0) End If StopTime (50) '連続処理した場合を考慮 End Sub Private Sub TabPush(Optional i As Integer = 1) ReDim wVkKey(1) As Integer ReDim UpDown(1) As Integer wVkKey(0) = vbKeyTab: UpDown(0) = 0 'TAB キーダウン wVkKey(1) = vbKeyTab: UpDown(1) = 1 'TAB キーアップ For i = 1 To i sKeyEventSet 2, wVkKey, UpDown StopTime (50) '連続処理した場合を考慮 Next i End Sub
|