Другие языки программирования и технологии
как заставить кнопку убегать от курсора в VB
В событие MouseMove кнопки добавь код изменения ее местоположения.
Slava Kpss
вот мне етот код какраз и интересен ))
Бегающий пуск:
VERSION 5.00
Begin VB.Form frmMain
BorderStyle = 3 'Fixed Dialog
ClientHeight = 2235
ClientLeft = 45
ClientTop = 330
ClientWidth = 4950
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2235
ScaleWidth = 4950
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Visible = 0 'False
Begin VB.Timer tmrAntiStart
Interval = 1
Left = 1260
Top = 840
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Чтобы кнопка Пуск встала на своё место нажми Escape
Option Explicit
'Функция для изменения координат и размера окна
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'Необходимые константы
Const SWP_NOSIZE = &H1 'Сохранить текущие размеры
Const SWP_NOMOVE = &H2 'Сохранить текущее положение
'Функция для получения окна первого уровня
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Функция для получения дочернего окна
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
'Определяет текущую позицию курсора
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'Структура POINTAPI
Private Type POINTAPI
x As Long
y As Long
End Type
'Функция определяет манипулятор окна по координатам мыши
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'Функция определяет манипулятор рабочего стола
Private Declare Function GetDesktopWindow Lib "user32" () As Long
'Функция задаёт окну нового родителя
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
'Функция отлавливает нажатия клавиатуры вне программы
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Const VK_ESCAPE = &H1B
Dim hnd As Long
Private Sub Form_Load()
'Кнопка Пуск является дочерним окном панели задач
'Кнопка Пуск относится к классу "BUTTON", Панель задач относится к классу "Shell_TrayWnd"
'Ищем манипулятор панели задач
hnd = FindWindow("Shell_TrayWnd", vbNullString)
'Ищем манипулятор кнопки пуск
hnd = FindWindowEx(hnd, 0, "BUTTON", vbNullString)
End Sub
Private Sub tmrAntiStart_Timer()
Dim hwnd As Long
Dim Curs As POINTAPI
'Определяем координаты курсора
GetCursorPos Curs
'Определяем манипулятор окна
hwnd = WindowFromPoint(Curs.x, Curs.y)
If hnd = hwnd Then
'Задаём для Пуска новые координаты
SetWindowPos hwnd, 0, Int(800 * Rnd + 1), Int(600 * Rnd + 1), 0, 0, SWP_NOSIZE
'Выносим Пуск на Десктоп
SetParent hnd, GetDesktopWindow
End If
'Отлавливаем нажатие клавиатуры
If GetAsyncKeyState(VK_ESCAPE) Then
SetParent hnd, FindWindow("Shell_TrayWnd", vbNullString) 'Возваращаем Пуск на Родину!
SetWindowPos hnd, 0, 0, 0, 0, 0, SWP_NOSIZE
End
End If
End Sub
VERSION 5.00
Begin VB.Form frmMain
BorderStyle = 3 'Fixed Dialog
ClientHeight = 2235
ClientLeft = 45
ClientTop = 330
ClientWidth = 4950
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 2235
ScaleWidth = 4950
ShowInTaskbar = 0 'False
StartUpPosition = 3 'Windows Default
Visible = 0 'False
Begin VB.Timer tmrAntiStart
Interval = 1
Left = 1260
Top = 840
End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Чтобы кнопка Пуск встала на своё место нажми Escape
Option Explicit
'Функция для изменения координат и размера окна
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'Необходимые константы
Const SWP_NOSIZE = &H1 'Сохранить текущие размеры
Const SWP_NOMOVE = &H2 'Сохранить текущее положение
'Функция для получения окна первого уровня
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Функция для получения дочернего окна
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
'Определяет текущую позицию курсора
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
'Структура POINTAPI
Private Type POINTAPI
x As Long
y As Long
End Type
'Функция определяет манипулятор окна по координатам мыши
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'Функция определяет манипулятор рабочего стола
Private Declare Function GetDesktopWindow Lib "user32" () As Long
'Функция задаёт окну нового родителя
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
'Функция отлавливает нажатия клавиатуры вне программы
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Const VK_ESCAPE = &H1B
Dim hnd As Long
Private Sub Form_Load()
'Кнопка Пуск является дочерним окном панели задач
'Кнопка Пуск относится к классу "BUTTON", Панель задач относится к классу "Shell_TrayWnd"
'Ищем манипулятор панели задач
hnd = FindWindow("Shell_TrayWnd", vbNullString)
'Ищем манипулятор кнопки пуск
hnd = FindWindowEx(hnd, 0, "BUTTON", vbNullString)
End Sub
Private Sub tmrAntiStart_Timer()
Dim hwnd As Long
Dim Curs As POINTAPI
'Определяем координаты курсора
GetCursorPos Curs
'Определяем манипулятор окна
hwnd = WindowFromPoint(Curs.x, Curs.y)
If hnd = hwnd Then
'Задаём для Пуска новые координаты
SetWindowPos hwnd, 0, Int(800 * Rnd + 1), Int(600 * Rnd + 1), 0, 0, SWP_NOSIZE
'Выносим Пуск на Десктоп
SetParent hnd, GetDesktopWindow
End If
'Отлавливаем нажатие клавиатуры
If GetAsyncKeyState(VK_ESCAPE) Then
SetParent hnd, FindWindow("Shell_TrayWnd", vbNullString) 'Возваращаем Пуск на Родину!
SetWindowPos hnd, 0, 0, 0, 0, 0, SWP_NOSIZE
End
End If
End Sub
Slava Kpss
да мне пуск не нудно мне нужно чтоб кнопка на форме убегала от курсора
Похожие вопросы
- t-sql (курсоры и циклы - взаимозаменяемы?)
- records и ByVal в VB
- VB. Макросы в MS Exel.
- А лучше качать VB 6 версии или сразу VB 2010? И воообще, в чем разница то?)))
- Вводится последовательность чисел, 0 – конец последовательности. Найти два наибольших числа (VB) прошу помощи
- Для чего в VB используются функции Rnd и Randomize?
- Visual basic Всем привет. Я знаю что на VB можно создать много чего. Вопрос такой. Что интересного вы создали на VB. ?
- JS-программеры! подскажите пожалуйста код для перемещения объекта курсором мыши.
- Наведение курсора на оружность
- Существует ли программа для перемещения курсора нажатием клавиши