unit my_settingfile; interface uses Windows; const //仮想キーコード VK_0 = Ord('0'); VK_1 = Ord('1'); VK_2 = Ord('2'); VK_3 = Ord('3'); VK_4 = Ord('4'); VK_5 = Ord('5'); VK_6 = Ord('6'); VK_7 = Ord('7'); VK_8 = Ord('8'); VK_9 = Ord('9'); VK_A = Ord('A'); VK_B = Ord('B'); VK_C = Ord('C'); VK_D = Ord('D'); VK_E = Ord('E'); VK_F = Ord('F'); VK_G = Ord('G'); VK_H = Ord('H'); VK_I = Ord('I'); VK_J = Ord('J'); VK_K = Ord('K'); VK_L = Ord('L'); VK_M = Ord('M'); VK_N = Ord('N'); VK_O = Ord('O'); VK_P = Ord('P'); VK_Q = Ord('Q'); VK_R = Ord('R'); VK_S = Ord('S'); VK_T = Ord('T'); VK_U = Ord('U'); VK_V = Ord('V'); VK_W = Ord('W'); VK_X = Ord('X'); VK_Y = Ord('Y'); VK_Z = Ord('Z'); const //キー、表示用 G_csCustomShortCut_DispKeySpace = 'スペース'; G_csCustomShortCut_DispKeyEnter = 'Enter'; G_csCustomShortCut_DispKeyBkSp = 'BS(後退)'; G_csCustomShortCut_DispKeyDel = 'Del'; G_csCustomShortCut_DispKeyIns = 'Ins'; G_csCustomShortCut_DispKeyEsc = 'Esc'; G_csCustomShortCut_DispKeyPgUp = 'PgUp'; G_csCustomShortCut_DispKeyPgDn = 'PgDn'; G_csCustomShortCut_DispKeyHome = 'Home'; G_csCustomShortCut_DispKeyEnd = 'End'; G_csCustomShortCut_DispKeyUp = '↑'; G_csCustomShortCut_DispKeyDonw = '↓'; G_csCustomShortCut_DispKeyLeft = '←'; G_csCustomShortCut_DispKeyRight = '→'; //マウスジェスチャ、表示用 G_csCustomShortCut_DispGestureUp = 'ジェスチャ ↑'; G_csCustomShortCut_DispGestureDonw = 'ジェスチャ ↓'; G_csCustomShortCut_DispGestureLeft = 'ジェスチャ ←'; G_csCustomShortCut_DispGestureRight = 'ジェスチャ →'; const { コマンド(アクション)識別用のユニークな番号。 項目の増減はOKだが値の変更NG。 変更した場合は設定ファイルの互換性が無くなる。 項目を増やす場合はユニークな値をセットする。 項目を減らした場合割り当てられていた値の使い回しはNG。 } //[Zoom] 10 G_ciCMDZOOM_1 = 1001; G_ciCMDZOOM_2 = 1002; G_ciCMDZOOM_3 = 1003; G_ciCMDZOOM_4 = 1004; G_ciCMDZOOM_6 = 1006; G_ciCMDZOOM_8 = 1008; G_ciCMDZOOM_10 = 1010; G_ciCMDZOOM_12 = 1012; G_ciCMDZOOM_16 = 1016; G_ciCMDZOOM_20 = 1020; G_ciCMDZOOM_UP = 1090; G_ciCMDZOOM_DOWN = 1091; //[Grid] 20 G_ciCMDGRID_DISP = 2010; G_ciCMDGRID_GRAY = 2001; G_ciCMDGRID_BLACK = 2002; G_ciCMDGRID_WHITE = 2003; G_ciCMDGRID_INVERT = 2004; G_ciCMDGRID_TRANSPARENT = 2005; G_ciCMDGRID_SELCOLOR = 2006; G_ciCMDGRID_SUBNONE = 2011; G_ciCMDGRID_SUBBLUE = 2012; G_ciCMDGRID_SUBRED = 2013; G_ciCMDGRID_SELSUBCOLOR = 2014; G_ciCMDGRID_USESUBELSECOLOR = 2021; G_ciCMDGRID_SELSUBELSECOLOR = 2022; //[Color] 30 G_ciCMDCOLOR_RGB = 3001; G_ciCMDCOLOR_HTML = 3002; G_ciCMDCOLOR_COLORREF = 3003; G_ciCMDCOLOR_HSV = 3004; G_ciCMDCOLOR_HLS = 3005; G_ciCMDCOLOR_HLSWIN = 3006; G_ciCMDCOLOR_INFOONOFF = 3099; //[Position] 40 G_ciCMDPOS_SCREEN = 4001; G_ciCMDPOS_MONITOR = 4002; G_ciCMDPOS_CLIENT = 4003; G_ciCMDPOS_USER = 4004; G_ciCMDPOS_USERPOSSET = 4010; G_ciCMDPOS_INFOONOFF = 4099; //[WindowInfo] 50 G_ciCMDWININFO_HANDLE = 5001; G_ciCMDWININFO_CLASSNAME = 5002; G_ciCMDWININFO_TEXT = 5003; G_ciCMDWININFO_WINDOWSIZE = 5004; G_ciCMDWININFO_CLIENTSIZE = 5005; G_ciCMDWININFO_RECT = 5006; G_ciCMDWININFO_CONTROLID = 5007; G_ciCMDWININFO_STYLE = 5008; G_ciCMDWININFO_PARENTWINDOW = 5021; G_ciCMDWININFO_PID = 5022; G_ciCMDWININFO_EXENAME = 5023; G_ciCMDWININFO_FILEVERSION = 5024; G_ciCMDWININFO_STYLEVERBOSE = 5031; G_ciCMDWININFO_STYLEFOLLOWMAIN = 5032; G_ciCMDWININFO_INFOONOFF = 5099; //[Copy] 60 G_ciCMDCOPY_PICTURE = 6001; G_ciCMDCOPY_COLORRGB = 6002; G_ciCMDCOPY_COLORRGBRED = 6003; G_ciCMDCOPY_COLORRGBGREEN = 6004; G_ciCMDCOPY_COLORRGBBLUE = 6005; G_ciCMDCOPY_COLORHTML = 6006; G_ciCMDCOPY_COLORCOLORREF = 6007; G_ciCMDCOPY_COLORHSV = 6008; G_ciCMDCOPY_COLORHSVHUE = 6009; G_ciCMDCOPY_COLORHSVSATURATION = 6010; G_ciCMDCOPY_COLORHSVVALUE = 6011; G_ciCMDCOPY_COLORHLS = 6012; G_ciCMDCOPY_COLORHLSHUE = 6013; G_ciCMDCOPY_COLORHLSSATURATION = 6014; G_ciCMDCOPY_COLORHLSLIGHTNESS = 6015; G_ciCMDCOPY_COLORHLSWIN = 6016; G_ciCMDCOPY_COLORHLSWINHUE = 6017; G_ciCMDCOPY_COLORHLSWINSATURATION = 6018; G_ciCMDCOPY_COLORHLSWINLIGHTNESS = 6019; G_ciCMDCOPY_POSSCREEN = 6020; G_ciCMDCOPY_POSMONITOR = 6021; G_ciCMDCOPY_POSCLIENT = 6022; G_ciCMDCOPY_POSUSER = 6023; G_ciCMDCOPY_WININFOHANDLE = 6024; G_ciCMDCOPY_WININFOCLASSNAME = 6025; G_ciCMDCOPY_WININFOTEXT = 6026; G_ciCMDCOPY_WININFOWINDOWSIZE = 6027; G_ciCMDCOPY_WININFOCLIENTSIZE = 6028; G_ciCMDCOPY_WININFORECT = 6029; G_ciCMDCOPY_WININFOCONTROLID = 6030; G_ciCMDCOPY_WININFOSTYLE = 6031; G_ciCMDCOPY_WININFOSTYLEEX = 6032; G_ciCMDCOPY_WININFOSTYLEVERBOSE = 6033; G_ciCMDCOPY_WININFOPID = 6034; G_ciCMDCOPY_WININFOEXENAME = 6035; G_ciCMDCOPY_WININFOFILEVERSION = 6036; G_ciCMDCOPY_ALL = 6090; G_ciCMDCOPY_OPTUNICODE = 6099; //[Capture] 70 G_ciCMDCAPTURE_LUPE = 7001; G_ciCMDCAPTURE_FIXED = 7002; G_ciCMDCAPTURE_PAUSE = 7011; G_ciCMDCAPTURE_UPDATE = 7012; G_ciCMDCAPTURE_DISP_X1 = 7013; G_ciCMDCAPTURE_MOVECURSORTOPOINT = 7014; G_ciCMDCAPTURE_POINTFROMCURSOR = 7015; //[Option] 80 G_ciCMDOPT_STAYONTOP = 8001; G_ciCMDOPT_TITLEBAR = 8002; G_ciCMDOPT_TOOLBAR = 8004; G_ciCMDOPT_BIGFONT = 8005; G_ciCMDOPT_NOSELFCAPTURE = 8006; G_ciCMDOPT_SMOOTHCAPTURE = 8007; //[Custom] 90 G_ciCMDCUSTOM_SETTING = 9001; G_ciCMDCUSTOM_MENU = 9002; G_ciCMDCUSTOM_TOOLBAR = 9003; G_ciCMDCUSTOM_SHORTCUT = 9004; G_ciCMDCUSTOM_COPY = 9005; //[Menu] 100 G_ciCMDMENU_MAIN = 10001; G_ciCMDMENU_ZOOM = 10002; G_ciCMDMENU_GRID = 10003; G_ciCMDMENU_COLOR = 10004; G_ciCMDMENU_POS = 10005; G_ciCMDMENU_WININFO = 10006; G_ciCMDMENU_COPY = 10007; G_ciCMDMENU_SETTING = 10008; G_ciCMDMENU_CAPTURE = 10009; //[Move] 110 G_ciCMDMOVE_UP = 11001; G_ciCMDMOVE_DOWN = 11002; G_ciCMDMOVE_LEFT = 11003; G_ciCMDMOVE_RIGHT = 11004; G_ciCMDMOVE_MONITOR = 11005; //[File] 120 G_ciCMDFILE_MINIMIZE = 12001; G_ciCMDFILE_EXIT = 12002; //[Help] 130 G_ciCMDHELP = 13001; const //設定データ用フラグ G_ciFLGGRID_DISP = $01; G_ciFLGGRID_ELSECOLOR = $02; G_ciFLGCOLOR_RGB = $01; G_ciFLGCOLOR_HTML = $02; G_ciFLGCOLOR_REF = $04; G_ciFLGCOLOR_HSV = $08; G_ciFLGCOLOR_HLS = $10; G_ciFLGCOLOR_HLSWIN = $20; G_ciFLGPOS_SCREEN = $01; G_ciFLGPOS_MONITOR = $02; G_ciFLGPOS_CLIENT = $04; G_ciFLGPOS_USER = $08; G_ciFLGWINFO_HANDLE = $1; G_ciFLGWINFO_CNAME = $2; G_ciFLGWINFO_TEXT = $4; G_ciFLGWINFO_WSIZE = $8; G_ciFLGWINFO_CSIZE = $10; G_ciFLGWINFO_RECT = $20; G_ciFLGWINFO_CONTROLID = $40; G_ciFLGWINFO_STYLE = $80; G_ciFLGWINFO_PARENT = $100; G_ciFLGWINFO_PID = $200; G_ciFLGWINFO_EXENAME = $400; G_ciFLGWINFO_VERSION = $800; G_ciFLGWINFO_STYLEVERBOSE = $1000; G_ciFLGWINFO_FOLLOWMAIN = $2000; G_ciFLGOPT_STAYONTOP = $1; G_ciFLGOPT_TITLEBAR = $2; G_ciFLGOPT_TOOLBAR = $4; G_ciFLGOPT_BIGFONT = $8; G_ciFLGOPT_NOSELF = $10; G_ciFLGOPT_SMOOTH = $20; G_ciFLGCAPTURE_LUPE = $1; G_ciFLGCAPTURE_FIXED = $2; const { //マウスジェスチャ、上下左右 G_ciGESTUREUP = 0; G_ciGESTUREDOWN = 1; G_ciGESTURELEFT = 2; G_ciGESTURERIGHT = 3; G_ciGESTURECOUNT = 4; G_ciVGESTURE: array[0..G_ciGESTURECOUNT-1] of Byte = ( G_ciGESTUREUP, G_ciGESTUREDOWN, G_ciGESTURELEFT, G_ciGESTURERIGHT ); } { キーの増減はNG。 した場合はデータの互換性がなくなる。 } G_ciKEYCOUNT = 62; //ショートカットのキー数 (* G_ciVKEY: array[0..G_ciKEYCOUNT-1] of Word = ( VK_0, VK_1, VK_2, VK_3, VK_4, VK_5, VK_6, VK_7, VK_8, VK_9, VK_SPACE, VK_A, VK_B, VK_C, VK_D, VK_E, VK_F, VK_G, VK_H, VK_I, VK_J, VK_K, VK_L, VK_M, VK_N, VK_O, VK_P, VK_Q, VK_R, VK_S, VK_T, VK_U, VK_V, VK_W, VK_X, VK_Y, VK_Z, VK_F1, VK_F2, VK_F3, VK_F4, VK_F5, VK_F6, VK_F7, VK_F8, VK_F9, VK_F10, VK_F11, VK_F12, VK_EXECUTE, VK_BACK, VK_DELETE, VK_INSERT, VK_ESCAPE, VK_PRIOR, VK_NEXT, VK_HOME, VK_END, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT ); *) type T_ShortCutKey = packed record iKey: Word; iCommand: Word; end; T_MouseGesture = packed record iCommand_Up, iCommand_Down, iCommand_Left, iCommand_Right: Word; end; type T_SettingHeader = packed record iIdentifier: array[0..3] of Byte; //4バイトの識別子 //[Data Version] //本体のバージョンではなく設定ファイルのバージョン iMajor: Byte; //0〜255 iMinor: Byte; //0〜255 //予備 iReserved1: DWORD; iReserved2: DWORD; iReserved3: DWORD; iReserved4: DWORD; end; //設定データ。 //変更不可。 //変更した場合は設定ファイルの互換性が無くなる。 T_SettingInfo = packed record //[Bounds] rcRect: TRect; //[Zoom] iZoomIndex: Byte; //0〜255 //[Grid] iGridFlag: Word; //16個 ビットフラグ iGridIndex: Byte; //0〜255 iSubGridIndex: Byte; //0〜255 clGridColor: DWORD; //グリッドカラー clSubGridColor: DWORD; //サブグリッドカラー clSubGridElseColor: DWORD; //サブグリッド2色目 //[Color] iColorFlag: Word; //16個 ビットフラグ //[Position] iPosFlag: Word; //16個 ビットフラグ ptUserPos: TPoint; //[WindowInfo] iWInfoFlag: Longword; //32個 ビットフラグ //[Option] iOptFlag: Word; //16個 ビットフラグ //[Capture] iCaptureFlag: Word; //16個 ビットフラグ ptCaptruePos: TPoint; end; var //設定データ(バイナリ) G_rSettingInfo: T_SettingInfo; //ショートカットキー G_rShortCutKeys: array[0..G_ciKEYCOUNT-1] of T_ShortCutKey = ( (iKey: VK_0; iCommand: 0), (iKey: VK_1; iCommand: G_ciCMDCAPTURE_DISP_X1), //実寸表示 (iKey: VK_2; iCommand: 0), (iKey: VK_3; iCommand: 0), (iKey: VK_4; iCommand: 0), (iKey: VK_5; iCommand: 0), (iKey: VK_6; iCommand: 0), (iKey: VK_7; iCommand: 0), (iKey: VK_8; iCommand: 0), (iKey: VK_9; iCommand: 0), (iKey: VK_SPACE; iCommand: G_ciCMDPOS_USERPOSSET), //ユーザー指定座標の原点をセット (iKey: VK_A; iCommand: 0), (iKey: VK_B; iCommand: 0), (iKey: VK_C; iCommand: G_ciCMDCOPY_COLORCOLORREF), //COLORREFをコピー (iKey: VK_D; iCommand: 0), (iKey: VK_E; iCommand: 0), (iKey: VK_F; iCommand: G_ciCMDCAPTURE_FIXED), (iKey: VK_G; iCommand: 0), (iKey: VK_H; iCommand: G_ciCMDCOPY_COLORHTML), (iKey: VK_I; iCommand: 0), (iKey: VK_J; iCommand: 0), (iKey: VK_K; iCommand: 0), (iKey: VK_L; iCommand: 0), (iKey: VK_M; iCommand: G_ciCMDMENU_MAIN), (iKey: VK_N; iCommand: 0), (iKey: VK_O; iCommand: 0), (iKey: VK_P; iCommand: 0), (iKey: VK_Q; iCommand: G_ciCMDMOVE_MONITOR), (iKey: VK_R; iCommand: 0), (iKey: VK_S; iCommand: G_ciCMDOPT_SMOOTHCAPTURE), (iKey: VK_T; iCommand: 0), (iKey: VK_U; iCommand: 0), (iKey: VK_V; iCommand: 0), (iKey: VK_W; iCommand: 0), (iKey: VK_X; iCommand: 0), (iKey: VK_Y; iCommand: 0), (iKey: VK_Z; iCommand: G_ciCMDCOPY_PICTURE), (iKey: VK_F1; iCommand: G_ciCMDHELP), (iKey: VK_F2; iCommand: 0), (iKey: VK_F3; iCommand: 0), (iKey: VK_F4; iCommand: 0), (iKey: VK_F5; iCommand: G_ciCMDCAPTURE_UPDATE), (iKey: VK_F6; iCommand: G_ciCMDCAPTURE_PAUSE), (iKey: VK_F7; iCommand: 0), (iKey: VK_F8; iCommand: 0), (iKey: VK_F9; iCommand: 0), (iKey: VK_F10; iCommand: 0), (iKey: VK_F11; iCommand: 0), (iKey: VK_F12; iCommand: 0), (iKey: VK_EXECUTE; iCommand: 0), (iKey: VK_BACK; iCommand: 0), (iKey: VK_DELETE; iCommand: 0), (iKey: VK_INSERT; iCommand: 0), (iKey: VK_ESCAPE; iCommand: G_ciCMDCAPTURE_PAUSE), (iKey: VK_PRIOR; iCommand: G_ciCMDZOOM_UP), (iKey: VK_NEXT; iCommand: G_ciCMDZOOM_DOWN), (iKey: VK_HOME; iCommand: 0), (iKey: VK_END; iCommand: 0), (iKey: VK_UP; iCommand: G_ciCMDMOVE_UP), (iKey: VK_DOWN; iCommand: G_ciCMDMOVE_DOWN), (iKey: VK_LEFT; iCommand: G_ciCMDMOVE_LEFT), (iKey: VK_RIGHT; iCommand: G_ciCMDMOVE_RIGHT) ); //マウスジェスチャ G_rMouseGesture: T_MouseGesture = ( iCommand_Up : G_ciCMDOPT_STAYONTOP; iCommand_Down : G_ciCMDOPT_NOSELFCAPTURE; iCommand_Left : G_ciCMDGRID_DISP; iCommand_Right : G_ciCMDCAPTURE_PAUSE ); //設定データ書き込み procedure G_pcSettingWrite; { ( rSettingInfo: T_SettingInfo; rShortCutKeys: array of T_ShortCutKey; rMouseGesture: T_MouseGesture ); } //設定データ読み込み function G_fnbSettingRead: Boolean; { ( var rSettingInfo: T_SettingInfo; var rShortCutKeys: array of T_ShortCutKey; var rMouseGesture: T_MouseGesture ): Boolean; } implementation uses general; const FcsSETTINGFILE_EXT = '.bin'; FciSETTING_IDENTIFIER_0 = VK_S; FciSETTING_IDENTIFIER_1 = VK_B; FciSETTING_IDENTIFIER_2 = VK_U; FciSETTING_IDENTIFIER_3 = VK_G; FciSETTING_VERMAJOR = 1; FciSETTING_VERMINOR = 0; procedure G_pcSettingWrite; { ( rSettingInfo: T_SettingInfo; rShortCutKeys: array of T_ShortCutKey; rMouseGesture: T_MouseGesture ); } var li_ErrMode: UINT; ls_File: WideString; lh_Handle: THandle; l_rHeader: T_SettingHeader; li_Write: DWORD; begin li_ErrMode := SetErrorMode(SEM_FAILCRITICALERRORS); try ls_File := gfnsFileExtChange(gfnsExeNameGet, FcsSETTINGFILE_EXT); if (G_bIsNtOs) then begin //NT系OS lh_Handle := CreateFileW( PWideChar(ls_File), //ファイル名 GENERIC_WRITE, //アクセスモード 0, //共有モード nil, //セキュリティ CREATE_ALWAYS, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); end else begin //9x系OS lh_Handle := CreateFile( PAnsiChar(AnsiString(ls_File)), //ファイル名 GENERIC_WRITE, //アクセスモード 0, //共有モード nil, //セキュリティ CREATE_ALWAYS, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); end; if (lh_Handle <> INVALID_HANDLE_VALUE) then begin try FillChar(l_rHeader, SizeOf(l_rHeader), 0); with l_rHeader do begin //識別子 iIdentifier[0] := FciSETTING_IDENTIFIER_0; iIdentifier[1] := FciSETTING_IDENTIFIER_1; iIdentifier[2] := FciSETTING_IDENTIFIER_2; iIdentifier[3] := FciSETTING_IDENTIFIER_3; //[Data Version] iMajor := FciSETTING_VERMAJOR; iMinor := FciSETTING_VERMINOR; end; WriteFile(lh_Handle, l_rHeader, SizeOf(l_rHeader), li_Write, nil); WriteFile(lh_Handle, G_rSettingInfo, SizeOf(G_rSettingInfo), li_Write, nil); WriteFile(lh_Handle, G_rShortCutKeys, SizeOf(G_rShortCutKeys), li_Write, nil); WriteFile(lh_Handle, G_rMouseGesture, SizeOf(G_rMouseGesture), li_Write, nil); finally CloseHandle(lh_Handle); end; end; except end; SetErrorMode(li_ErrMode); end; function G_fnbSettingRead: Boolean; { ( var rSettingInfo: T_SettingInfo; var rShortCutKeys: array of T_ShortCutKey; var rMouseGesture: T_MouseGesture ): Boolean; } var lh_Handle: THandle; ls_File: WideString; l_rHeader: T_SettingHeader; li_Size, li_Read: DWORD; begin Result := False; //Shift+Ctrl終了で設定を書き込まない。 if (gfnbKeyState(VK_SHIFT) and gfnbKeyState(VK_CONTROL)) then begin Exit; end; ls_File := gfnsFileExtChange(gfnsExeNameGet, FcsSETTINGFILE_EXT); if not(gfnbFileExists(ls_File)) then begin Exit; end; if (G_bIsNTOS) then begin lh_Handle := CreateFileW( PWideChar(ls_File), //ファイル名 GENERIC_READ, //アクセスモード FILE_SHARE_READ or FILE_SHARE_WRITE , //共有モード nil, //セキュリティ OPEN_EXISTING, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); end else begin lh_Handle := CreateFile( PAnsiChar(AnsiString(ls_File)), //ファイル名 GENERIC_READ, //アクセスモード FILE_SHARE_READ or FILE_SHARE_WRITE , //共有モード nil, //セキュリティ OPEN_EXISTING, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); end; try li_Size := SizeOf(l_rHeader) + SizeOf(G_rSettingInfo) + SizeOf(G_rShortCutKeys) + SizeOf(G_rMouseGesture) ; if not(gfniFileSizeGet(lh_Handle) = li_Size) then begin Exit; end; if (lh_Handle <> INVALID_HANDLE_VALUE) then begin ReadFile(lh_Handle, l_rHeader, SizeOf(l_rHeader), li_Read, nil); if (l_rHeader.iIdentifier[0] = FciSETTING_IDENTIFIER_0) and (l_rHeader.iIdentifier[1] = FciSETTING_IDENTIFIER_1) and (l_rHeader.iIdentifier[2] = FciSETTING_IDENTIFIER_2) and (l_rHeader.iIdentifier[3] = FciSETTING_IDENTIFIER_3) and (l_rHeader.iMajor = FciSETTING_VERMAJOR) and (l_rHeader.iMinor = FciSETTING_VERMINOR) then begin ReadFile(lh_Handle, G_rSettingInfo, SizeOf(G_rSettingInfo), li_Read, nil); ReadFile(lh_Handle, G_rShortCutKeys, SizeOf(G_rShortCutKeys), li_Read, nil); ReadFile(lh_Handle, G_rMouseGesture, SizeOf(G_rMouseGesture), li_Read, nil); Result := True; end; end; finally CloseHandle(lh_Handle); end; end; { procedure G_CreateShortCut; var i: Integer; begin for i := 0 to High(G_ShortCutKey) do begin case i of (ShortCutKey: Ord('0'); ShortCutDisp: '0'; Action: nil), (ShortCutKey: Ord('1'); ShortCutDisp: '1'; Action: App_LenZoom.actCapture_Disp_x1), (ShortCutKey: Ord('2'); ShortCutDisp: '2'; Action: nil), (ShortCutKey: Ord('3'); ShortCutDisp: '3'; Action: nil), (ShortCutKey: Ord('4'); ShortCutDisp: '4'; Action: nil), (ShortCutKey: Ord('5'); ShortCutDisp: '5'; Action: nil), (ShortCutKey: Ord('6'); ShortCutDisp: '6'; Action: nil), (ShortCutKey: Ord('7'); ShortCutDisp: '7'; Action: nil), (ShortCutKey: Ord('8'); ShortCutDisp: '8'; Action: nil), (ShortCutKey: Ord('9'); ShortCutDisp: '9'; Action: nil), (ShortCutKey: VK_SPACE; ShortCutDisp: G_csCustomShortCut_DispKeySpace; Action: nil), (ShortCutKey: Ord('A'); ShortCutDisp: 'A'), (ShortCutKey: Ord('B'); ShortCutDisp: 'B'), (ShortCutKey: Ord('C'); ShortCutDisp: 'C'), (ShortCutKey: Ord('D'); ShortCutDisp: 'D'), (ShortCutKey: Ord('E'); ShortCutDisp: 'E'), (ShortCutKey: Ord('F'); ShortCutDisp: 'F'), (ShortCutKey: Ord('G'); ShortCutDisp: 'G'), (ShortCutKey: Ord('H'); ShortCutDisp: 'H'), (ShortCutKey: Ord('I'); ShortCutDisp: 'I'), (ShortCutKey: Ord('J'); ShortCutDisp: 'J'), (ShortCutKey: Ord('K'); ShortCutDisp: 'K'), (ShortCutKey: Ord('L'); ShortCutDisp: 'L'), (ShortCutKey: Ord('M'); ShortCutDisp: 'M'), (ShortCutKey: Ord('N'); ShortCutDisp: 'N'), (ShortCutKey: Ord('O'); ShortCutDisp: 'O'), (ShortCutKey: Ord('P'); ShortCutDisp: 'P'), (ShortCutKey: Ord('Q'); ShortCutDisp: 'Q'), (ShortCutKey: Ord('R'); ShortCutDisp: 'R'), (ShortCutKey: Ord('S'); ShortCutDisp: 'S'), (ShortCutKey: Ord('T'); ShortCutDisp: 'T'), (ShortCutKey: Ord('U'); ShortCutDisp: 'U'), (ShortCutKey: Ord('V'); ShortCutDisp: 'V'), (ShortCutKey: Ord('W'); ShortCutDisp: 'W'), (ShortCutKey: Ord('X'); ShortCutDisp: 'X'), (ShortCutKey: Ord('Y'); ShortCutDisp: 'Y'), (ShortCutKey: Ord('Z'); ShortCutDisp: 'Z'), ('F1', 'F1'), ('F2', 'F2'), ('F3', 'F3'), ('F4', 'F4'), ('F5', 'F5'), ('F6', 'F6'), ('F7', 'F7'), ('F8', 'F8'), ('F9', 'F9'), ('F10', 'F10'), ('F11', 'F11'), ('F12', 'F12'), ('Enter', G_csCustomShortCut_DispKeyEnter), ('BkSp', G_csCustomShortCut_DispKeyBkSp), ('Del', G_csCustomShortCut_DispKeyDel), ('Ins', G_csCustomShortCut_DispKeyIns), ('Esc', G_csCustomShortCut_DispKeyEsc), ('PgUp', G_csCustomShortCut_DispKeyPgUp), ('PgDn', G_csCustomShortCut_DispKeyPgDn), ('Home', G_csCustomShortCut_DispKeyHome), ('End', G_csCustomShortCut_DispKeyEnd), ('Up', G_csCustomShortCut_DispKeyUp), ('Down', G_csCustomShortCut_DispKeyDonw), ('Left', G_csCustomShortCut_DispKeyLeft), ('Right', G_csCustomShortCut_DispKeyRight) } initialization FillChar(G_rSettingInfo, SizeOf(G_rSettingInfo), 0); end.