Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Цикл


Автор: REVOLT 15.11.2004, 20:30
Люди добрые, подскажите как сделать так чтобы курсор переходил по 3 координатам, и потом начинал свой цикл заного... подскаите плиз

Автор: boevik 15.11.2004, 21:56
Где бы переходил? В каком объекте? О чем речь вообще?

Автор: REVOLT 15.11.2004, 22:06
Код

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Const MOUSEEVENTF_ABSOLUTE = &H8000
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MIDDLEDOWN = &H20
Private Const MOUSEEVENTF_MIDDLEUP = &H40
Private Const MOUSEEVENTF_MOVE = &H1
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Const TWIPS_PER_INCH = 1440
Private Const POINTS_PER_INCH = 72
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Const MOUSE_MICKEYS = 65535
Public Enum enReportStyle
rsPixels
rsTwips
rsInches
rsPoints
End Enum
Public Enum enButtonToClick
btcLeft
btcRight
btcMiddle
End Enum
Public Function MouseFullClick(ByVal MBClick As enButtonToClick) As Boolean
Dim cbuttons As Long
Dim dwExtraInfo As Long
Dim mevent As Long
Select Case MBClick
   Case btcLeft
       mevent = MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP
   Case btcRight
       mevent = MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP
   Case btcMiddle
       mevent = MOUSEEVENTF_MIDDLEDOWN Or MOUSEEVENTF_MIDDLEUP
   Case Else
       MouseFullClick = False
Exit Function
End Select
       mouse_event mevent, 0&, 0&, cbuttons, dwExtraInfo
       MouseFullClick = True
End Function

Private Sub Timer1_Timer()
For i = 0 To 9 Step 1
X& = 50
Y& = 645
a& = SetCursorPos(X&, Y&)
Call MouseFullClick(btcLeft)
Call MouseFullClick(btcLeft)
XX& = 200
YY& = 200
aa& = SetCursorPos(XX&, YY&)
Call MouseFullClick(btcLeft)
XXX& = 300
YYY& = 300
aaa& = SetCursorPos(XXX&, YYY&)
Call MouseFullClick(btcLeft)
Next i
End Sub

Private Sub Timer2_Timer()
If (GetAsyncKeyState(vbKeyF6) = -327680) Then
If MsgBox("fd", 1, "") = 1 Then
End
Sleep 25
Exit Sub
End If
End Sub


Проблемка немного изменилась, мне нужно остановить цикл, нажатием F6 как это сделать????

Автор: boevik 15.11.2004, 22:27
На KeyDown ловишь код клавиши 117.
Зажигаешь какую нибудь переменную (bBreak = True)
И останавливаешь цикл. (кстати где он у тебя?)

Автор: REVOLT 15.11.2004, 22:31
Код

For i = 0 To 9 Step 1
X& = 50
Y& = 645
a& = SetCursorPos(X&, Y&)
Call MouseFullClick(btcLeft)
Call MouseFullClick(btcLeft)
XX& = 200
YY& = 200
aa& = SetCursorPos(XX&, YY&)
Call MouseFullClick(btcLeft)
XXX& = 300
YYY& = 300
aaa& = SetCursorPos(XXX&, YYY&)
Call MouseFullClick(btcLeft)
Next i


Покажи примерчик выхода из цикла при нажатии на кнпку smile

Автор: boevik 15.11.2004, 22:42
For i = 0 To 9 Step 1
X& = 50
Y& = 645
a& = SetCursorPos(X&, Y&)
Call MouseFullClick(btcLeft)
DoEvents
if bBreak then exit for

Call MouseFullClick(btcLeft)
DoEvents
if bBreak then exit for

XX& = 200
YY& = 200
aa& = SetCursorPos(XX&, YY&)
Call MouseFullClick(btcLeft)
DoEvents
if bBreak then exit for

XXX& = 300
YYY& = 300
aaa& = SetCursorPos(XXX&, YYY&)
Call MouseFullClick(btcLeft)
DoEvents
if bBreak then exit for

Next i

Автор: REVOLT 16.11.2004, 19:51
А про bBreak расскажи?

Автор: cardinal 16.11.2004, 20:14
А он уже рассказал smile
Цитата(boevik @ 15.11.2004, 21:27)
На KeyDown ловишь код клавиши 117.
Зажигаешь какую нибудь переменную (bBreak = True)


Автор: REVOLT 18.11.2004, 19:58
bBreak так это служебное слово??? Или нет?

Автор: cardinal 18.11.2004, 20:34
Нет. Переменная это типа Boolean.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)