2014-01-26 2 views
0

Из Linux я пытаюсь создать небольшой исполняемый файл для Windows 7/8 и Mac. с PureBasic language. Как я могу нажать клавишу клавиатуры F1 или F2, используя PureBasic? Я пробовал следовать, но получаю ошибку компоновщика.PureBasic - как я могу имитировать нажатие клавиши клавиатуры F1 или F2?

enter image description here

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 200, 200, "Shortcut test", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 

    AddKeyboardShortcut(0, #PB_Shortcut_Apps,101);  (=) - somewhere near the Space key 
    AddKeyboardShortcut(0, #PB_Shortcut_Clear,102) 
    AddKeyboardShortcut(0, #PB_Shortcut_Command,103) 
    AddKeyboardShortcut(0, #PB_Shortcut_Execute,104) 
    AddKeyboardShortcut(0, #PB_Shortcut_Help,105) 
    AddKeyboardShortcut(0, #PB_Shortcut_Menu,106) 
    ;AddKeyboardShortcut(0, #PB_Shortcut_Next,107) 
    AddKeyboardShortcut(0, #PB_Shortcut_Pause,108);  Pause - should be beside F12 or so 
    AddKeyboardShortcut(0, #PB_Shortcut_Print,109) 
    ;AddKeyboardShortcut(0, #PB_Shortcut_Prior,110) 
    AddKeyboardShortcut(0, #PB_Shortcut_Scroll,111);  ScrollLock 
    AddKeyboardShortcut(0, #PB_Shortcut_Select,112) 
    AddKeyboardShortcut(0, #PB_Shortcut_Separator,113) 
    AddKeyboardShortcut(0, #PB_Shortcut_Snapshot,114) 

    Repeat 
     Select WaitWindowEvent() 
     Case #PB_Event_Menu 
     z=EventMenu() 
     If z>99 And z<115 
      Debug "Found key for the event #"+Str(z) 
     EndIf 
     Case #PB_Event_CloseWindow 
     Break 
     EndSelect 
    ForEver 

EndIf 

ответ

1

В Windows вы можете оставить следующие сообщения:

PostMessage(hWnd, WM_KEYDOWN, VK_F1, 0); 
    PostMessage(hWnd, WM_KEYUP, VK_F1, 0); 

Таким образом, вы должны найти на вашем языке, способ PostMessage в окно. Есть и другие функции API Win как: keybd_event, SendInput смотрите здесь для получения дополнительной информации:

http://www.codeproject.com/Articles/2334/Toggling-the-Num-Lock-Caps-Lock-an-Scroll-Lock-ke

Я ничего не знаю о PureBasic, но после того, как быстро прибегая к помощи я смог найти форум, где что-то подобное делается:

http://www.purebasic.fr/english/viewtopic.php?f=13&t=47321