EDIT: ups, nie zauważyłem że daliście odpowiedzi(mam otwarty temat od wczoraj)
http://www.autohotkey.com/
Uruchom i sprawdź kod dla Fn http://www.autohotkey.com/board/topic/21105-crazy-scripting-scriptlet-to-find-scancode-of-a-key/
Dopasuj do wzoru http://www.autohotkey.com/board/topic/77201-how-to-replay-a-fn-key-event-solved/
Nie sprawdzałem, z Fn to może być niewykonalne, ale dlaczego temat jest “solved”?
Problem można by rozwiązać w JScript (.vs) lub JBScript(.vb) ale znowu bez Fn
VScript https://technet.microsoft.com/en-us/library/ff731008.aspx
http://www.codeproject.com/Questions/183840/How-can-I-press-both-function-key-fn-and-f-at-th
VBScript http://www.pctools.com/guides/scripting/detail/149/?act=reference
var WshShell = new ActiveXObject("WScript.Shell");
WshShell.AppActivate(this);
WshShell.SendKeys("{F9}");
Python https://pypi.python.org/pypi/SendKeys/0.3
Również nie Fn+F9
Wczoraj zasiadłem do pisania w WinAPI, mam już przerobiony fragment który odczyta kody(KeyboardHook). Troche to potrwa, jeśli nie wieczność bo nie mam weny.
Zostawiam kod, może ci ktoś przerobi a może uda sie sprawdzić czy Fn jest jakoś rejestrowany.
Jeśli tak to można by wysłać SendInput?
#include <windows.h>
#pragma hdrstop
#include "Klawiszek.h"
int main (void)
{
INPUT input;
//wstawić kod dla KeyDOWN Fn
//wstawić kod dla KeyDOWN F9
input.ki.time = 0;
input.ki.dwFlags = 0;
input.ki.vk = VK_F9;
SendInput(NULL, &input,sizeof(input)); //wyślij
//wstawić kod na podniesienie KeyUP F9
input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(NULL, &input,sizeof(input));
//wstawić kod na podniesienie Fn
return 0;
}
// Sprawdzanie kodów wymaga przerobienia:
//NISKOPOZIOMOWE PRZECHWYTYWANIE KLAWISZY
//
HHOOK llkbdhhook;
LRESULT LowLevelKeyboardProc(INT nCode, WPARAM wParam, LPARAM lParam) {
if (nCode!=HC_ACTION)
{return CallNextHookEx(llkbdhhook,nCode,wParam,lParam);
}
register BOOL fProcHandled;
register KBDLLHOOKSTRUCT *pkbdllhook = (KBDLLHOOKSTRUCT*)lParam;
//------------------------------------
if (wParam==WM_KEYDOWN) {
printf("KEYDOWN: %d\n",pkbdllhook->vkCode);
else {
// obsługa zwolnienia klawisza Ctrl, Alt lub Tab i przekazanie dalej
printf("KEYUP: %d\n",pkbdllhook->vkCode);}
return CallNextHookEx(llkbdhhook,nCode,wParam,lParam); }
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
llkbdhhook = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardProc, (HINSTANCE)HInstance, 0);
printf(“Naciśnij wybrany klawisz i zanotuj ich kody”);
/// niekończąca się pętla for (; ;) { Sleep(10); }
}