Помогите пожалуйста написать программу. Она представляет из себя запущенный процесс, который запускается при включении компа. А при нажатии Alt + C курсор мыши появлялся по центру экрана.
Понятия даже не имею, как это делать.
PureBasic - форум |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Отцентровка курсора
Помогите пожалуйста написать программу. Она представляет из себя запущенный процесс, который запускается при включении компа. А при нажатии Alt + C курсор мыши появлялся по центру экрана.
Понятия даже не имею, как это делать.
y=GetSystemMetrics_(#SM_CYSCREEN)/2 ; находим центр x=GetSystemMetrics_(#SM_CXSCREEN)/2 SetMouseXY(x,y) ; устанавливаем курсор
Отредактировано mirashic (16.03.2011 20:38:11)
Procedure CreateSkrinWindow()
y=GetSystemMetrics_(#SM_CYSCREEN)/2
x=GetSystemMetrics_(#SM_CXSCREEN)/2SetMouseXY(x,y)
;MessageRequester("", "Нажаты кнопки Alt + C")
EndProcedureOpenWindow(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)
Как-то так:
ExamineDesktops() Repeat If GetAsyncKeyState_(#VK_MENU) And GetAsyncKeyState_(#VK_C)<0 SetCursorPos_(DesktopWidth(0)/2, DesktopHeight(0)/2) EndIf Delay(100) ForEver End
Да, лействительно. Работает, но можно ли узнать, что отвечает за клавиши
что отвечает за клавиши
есть таблица, ссылка выше.
GetAsyncKeyState_() или функция из друпии HotKeyAdd()
Да и если я например видоизменю код.
Как сделать, чтобы одного 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)
В моем коде, опрес кнопок производится WinAPI функцией GetAsyncKeyState.
#VK_MENU это Alt.
#VK_C - кнопка C.
надо было нажимать 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
Вот так правильно вроде бы, но ершил перестраховаться. проверьте пожалуйста.
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
Хотелось бы сделать отправку программы в трей для возможности выхода без нажатия кнопок, попап меню и приветствие при ее запуске. если меню я знаю, как сделать, то как сделать приветствие и трей, не знаю.
отправку программы в трей для возможности выхода без нажатия кнопок
Попробуй справку почитать - иногда быстрее получается, чем на форуме клянчить.
Раздел PureBasic - SysTray
И по ключевым словам трея поиск - увидишь море кода с меню!
как сделать, то как сделать приветствие и трей, не знаю
Примеры работы с треем есть здесь ftp://ftp.radio.ru/pub/2008/05/PureBasic.zip
Да и в справке в разделе SysTray есть описание функций и примеры.
Приветствие это обычное окно, которое отображается на экране в течение нескольких секунд, а затем, закрывается.
Приветствие это обычное окно, которое отображается на экране в течение нескольких секунд, а затем, закрывается
на а как его по оакончании этих нескольки минут закрывать?
а как его по оакончании этих нескольки минут закрывать?
Дарю идею:
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)
При таком раскладе, цикл и условный оператор не нужен.
При таком раскладе, цикл и условный оператор не нужен.
Ну это я на перспективу. А так то конечно, 3 строчки вполне достаточно.
Вы здесь » PureBasic - форум » Вопросы по PureBasic » Отцентровка курсора