PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Отцентровка курсора


Отцентровка курсора

Сообщений 1 страница 17 из 17

1

Помогите пожалуйста написать программу. Она представляет из себя запущенный процесс, который запускается при включении компа. А при нажатии Alt + C курсор мыши появлялся по центру экрана.

Понятия даже не имею, как это делать.

0

2

Код:
y=GetSystemMetrics_(#SM_CYSCREEN)/2  ; находим центр
x=GetSystemMetrics_(#SM_CXSCREEN)/2

 SetMouseXY(x,y)   ;  устанавливаем курсор

Отредактировано mirashic (16.03.2011 20:38:11)

0

3

Регистрация Хуков

Procedure CreateSkrinWindow()

y=GetSystemMetrics_(#SM_CYSCREEN)/2
x=GetSystemMetrics_(#SM_CXSCREEN)/2

SetMouseXY(x,y)

   ;MessageRequester("", "Нажаты кнопки Alt + C")
EndProcedure

OpenWindow(0, -1000, 0, 0, 0, "Окно", #PB_Window_SystemMenu)
    HotKeysInit() ; Инициализация библиотеки HotKeys
    HotKeyAdd(WindowID(0), #VK_C, @CreateSkrinWindow(), "SkrinWin", 0,1,0)
Repeat
Event=HotkeyWaitWindowEvent()
Until Event=#PB_Event_CloseWindow

Отредактировано mirashic (16.03.2011 20:47:37)

0

4

Как-то так:

Код:
ExamineDesktops()
Repeat
  If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_C)<0
    SetCursorPos_(DesktopWidth(0)/2, DesktopHeight(0)/2)
  EndIf
  Delay(100)
ForEver
End

0

5

Да, лействительно. Работает, но можно ли узнать, что отвечает за клавиши

0

6

Сергей написал(а):

что отвечает за клавиши

есть таблица, ссылка выше.
GetAsyncKeyState_() или функция из друпии HotKeyAdd()

0

7

Да и если я например видоизменю код.

Как сделать, чтобы одного q было мало, а надо было нажимать alt + q для завершения процесса

Код:
ExamineDesktops()
Repeat
  If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_($43)<0
    SetCursorPos_(DesktopWidth(0)/2, DesktopHeight(0)/2)
  EndIf
  Delay(100)
Until KeyboardPushed(#PB_Key_Q)

насколько я понимаю надо вместо пушед писать GetAsyncKeyState

Отредактировано Сергей (16.03.2011 21:04:07)

0

8

В моем коде, опрес кнопок производится WinAPI функцией GetAsyncKeyState.
#VK_MENU это Alt.
#VK_C - кнопка C.

0

9

Сергей написал(а):

надо было нажимать alt + q для завершения процесса

Код:
ExamineDesktops()
Repeat
  If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_C)<0
    SetCursorPos_(DesktopWidth(0)/2, DesktopHeight(0)/2)
  EndIf
  Delay(100)
Until GetAsyncKeyState_(#VK_Q) And GetAsyncKeyState_(#VK_MENU)
End

0

10

Вот так правильно вроде бы, но ершил перестраховаться. проверьте пожалуйста.

Код:
ExamineDesktops()
Repeat
  If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_C)<0
    SetCursorPos_(DesktopWidth(0)/2, DesktopHeight(0)/2)
  ElseIf GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_Q)<0
    End
  EndIf
  Delay(100)
ForEver

0

11

Хотелось бы сделать отправку программы в трей для возможности выхода без нажатия кнопок, попап меню и приветствие при ее запуске. если меню я знаю, как сделать, то как сделать приветствие и трей, не знаю.

0

12

Сергей написал(а):

отправку программы в трей для возможности выхода без нажатия кнопок

Попробуй справку почитать - иногда быстрее получается, чем на форуме клянчить.
Раздел PureBasic - SysTray

И по ключевым словам трея поиск - увидишь море кода с меню!

0

13

Сергей написал(а):

как сделать, то как сделать приветствие и трей, не знаю

Примеры работы с треем есть здесь ftp://ftp.radio.ru/pub/2008/05/PureBasic.zip
Да и в справке в разделе SysTray есть описание функций и примеры.

Приветствие это обычное окно, которое отображается на экране в течение нескольких секунд, а затем, закрывается.

0

14

Пётр написал(а):

Приветствие это обычное окно, которое отображается на экране в течение нескольких секунд, а затем, закрывается

на а как его по оакончании этих нескольки минут закрывать?

0

15

Сергей написал(а):

а как его по оакончании этих нескольки минут закрывать?

Дарю идею:

Код:
If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  
 Delay(2000) 
 Quit=1

 Repeat
   If Quit=1
  ;AnimateWindow_(WindowID(0),500,#AW_BLEND|#AW_HIDE)
  AnimateWindow_(WindowID(0),500,#AW_CENTER|#AW_HIDE)
  ;AnimateWindow_(WindowID(0),500,#AW_HOR_NEGATIVE|#AW_HIDE)
  ;AnimateWindow_(WindowID(0),500,#AW_HOR_POSITIVE|#AW_HIDE)
  ;AnimateWindow_(WindowID(0),500,#AW_VER_NEGATIVE|#AW_HIDE)
  ;AnimateWindow_(WindowID(0),500,#AW_VER_POSITIVE|#AW_HIDE)
 
EndIf
Until Quit=1
EndIf

Раскомментируй любой эффект, который тебе понравится!

Отредактировано ВиниПур (17.03.2011 17:51:25)

0

16

При таком раскладе, цикл и условный оператор не нужен.

0

17

Пётр написал(а):

При таком раскладе, цикл и условный оператор не нужен.

Ну это я на перспективу. А так то конечно, 3 строчки вполне достаточно.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Отцентровка курсора