Остановить таимер

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Остановить таимер

Сообщение Emzari » 05.06.2003 (Чт) 10:18

Есть проект который длжен двигать курсор миши. координаты миши записаны в фаиле а воспроизведение происходить по таимеру. нужно щтоб при нажатии наклавише например Esc таимер прекрашал работу.
Я исползовал собитие KeyDown формы но не работает.
привожу код:

Код: Выделить всё
Option Explicit

' SetCursorPos
Private Declare Function SetCursorPos Lib "user32.dll" (ByVal x As Long, ByVal y As Long) As Long

' Tipi Cursoris poziciis shesanaxad
Private Type CURPOS
    x As Long
    y As Long
End Type

' Zemot agtserili tipis masivi
Private cp(4000) As CURPOS
Private idx As Long
Private last_idx As Long
Private Fname As String

Private Sub Command1_Click()
    Fname = App.Path & "\Cur.Dat"
    Open Fname For Binary As #1
       Get #1, , cp
    Close #1
   
    idx = 0
    last_idx = 1452
    'Cursoris modzraoba
    Timer1.Enabled = True

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
    ' masivis mixedvit kursoris pozisiis shetsvla
    idx = idx + 1
    Call SetCursorPos(cp(idx).x, cp(idx).y)
    ' Tu masivis bolo elementia mashin
    ' tavidan vitskebt
    If idx = last_idx Then idx = 0
    DoEvents
End Sub


заранее спасибо :D :D :D

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 05.06.2003 (Чт) 10:21

Для начала убедись что Form.keypreview = true

ToT
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 10.06.2002 (Пн) 11:56
Откуда: Russia, Taganrog

Сообщение ToT » 05.06.2003 (Чт) 10:58

Может у тебя фокус стоит не там, где надо? Проверь.
Keyboard not found. Press any key.

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Сообщение Emzari » 05.06.2003 (Чт) 19:43

спасибо все дела в KeyPreview поставил в True все работает.

Ещё вопрос если своиства формы Vizible поставить в True тогда не деиствует а надо чтоб форма била невидимим чтоб не закривала остальные. короче как отлавить нажатие на определенную комбинацию клавиш если моя прога не видна или не активна может у ково нибудь примерчик есть.
:D :D :D

Alfa
Бывалый
Бывалый
 
Сообщения: 249
Зарегистрирован: 12.01.2003 (Вс) 20:15
Откуда: Россия, Красноярск

Ответ

Сообщение Alfa » 05.06.2003 (Чт) 20:34

Конечно есть, постоянно пользуюсь.
Смотри:
1.Прописываешь API(в General)
(Private(если надо)) Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
2.Используешь(в таймере с интервалом 50 милисекунд):
If GetAsyncKeyState("&H1B") Then ' &H1B = код клавиши Escape(Esc) в Api
Timer1.Enabled = True
MsgBox "Что-то ESC нажата...."
End If

ToT
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 10.06.2002 (Пн) 11:56
Откуда: Russia, Taganrog

Сообщение ToT » 06.06.2003 (Пт) 11:17

Еще можешь хук на клавиатуру поставить. Посмотри пример в
API-Guide (поищи "Hook"), а если еще нет APi-Guide, то быстрее качай.
Keyboard not found. Press any key.

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Сообщение Emzari » 06.06.2003 (Пт) 19:00

:D :D :D
спасибо всем кто постарался вопрос решился с помощю функции GetAsyncKeyState
:D :D :D


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 125

    TopList