unit my_settingfile; //{$DEFINE _DEBUG} {$DEFINE MEGALO_BUG} interface uses Classes, Forms, Windows, general; 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 { メニューコマンド 項目の増減はOKだが値の変更はNG。 変更した場合は設定ファイルの互換性が無くなる。 項目を増やす場合はユニークな値をセットする。 項目を減らす場合割り当てられていた値の使い回しはNG。 重複を避けるため項目を減らす場合はその項目を削除するのではなくコメントアウトにし 残しておきその値は使わないようにするのが吉。 並べ替えの場合も元の位置にはコメントアウトとしてそのまま残しておくのが間違いを防 ぐ意味で吉。 Windowsのメニューハンドルとは関係ないので値の制限は無し。 } //[ズーム] G_ciIDM_ZOOM = 1000; G_ciIDM_ZOOM_1 = 1001; G_ciIDM_ZOOM_2 = 1002; G_ciIDM_ZOOM_3 = 1003; G_ciIDM_ZOOM_4 = 1004; G_ciIDM_ZOOM_6 = 1006; G_ciIDM_ZOOM_8 = 1008; G_ciIDM_ZOOM_10 = 1010; G_ciIDM_ZOOM_12 = 1012; G_ciIDM_ZOOM_16 = 1016; G_ciIDM_ZOOM_20 = 1020; //[グリッド] G_ciIDM_GRID = 2000; G_ciIDM_GRID_DISP = 2001; G_ciIDM_GRID_LINEGRID = 2002; G_ciIDM_GRID_GRAY = 2003; G_ciIDM_GRID_BLACK = 2004; G_ciIDM_GRID_WITE = 2005; G_ciIDM_GRID_INVERT = 2006; G_ciIDM_GRID_TRANSPARENT = 2007; G_ciIDM_GRID_SELCOLOR = 2008; G_ciIDM_GRID_LINESUBGRID = 2009; G_ciIDM_GRID_SUBNONE = 2010; G_ciIDM_GRID_SUBBLUE = 2011; G_ciIDM_GRID_SUBRED = 2012; G_ciIDM_GRID_SELSUBCOLOR = 2013; G_ciIDM_GRID_LINESUBGRID2 = 2014; G_ciIDM_GRID_USESUBELSECOLOR = 2015; G_ciIDM_GRID_SELSUBELSECOLOR = 2016; //[-] G_ciIDM_MAIN_LINE1 = 1; //[カラー情報] G_ciIDM_COLOR = 3000; G_ciIDM_COLOR_RGB = 3001; G_ciIDM_COLOR_HTML = 3002; G_ciIDM_COLOR_COLORREF = 3003; G_ciIDM_COLOR_HSV = 3004; G_ciIDM_COLOR_HLS = 3005; G_ciIDM_COLOR_HLSWIN = 3006; G_ciIDM_COLOR_LINE1 = 3007; G_ciIDM_COLOR_INFOONOFF = 3099; //[カーソル位置] G_ciIDM_POS = 4000; G_ciIDM_POS_SCREEN = 4001; G_ciIDM_POS_MONITOR = 4002; G_ciIDM_POS_CLIENT = 4003; G_ciIDM_POS_LENGTH = 4004; { G_ciIDM_POS_LOGICALSCREEN = 4006; G_ciIDM_POS_LOGICALMONITOR = 4007; G_ciIDM_POS_LOGICALCLIENT = 4008; G_ciIDM_POS_LOGICALLENGTH = 4009; } G_ciIDM_POS_LINE1 = 4005; G_ciIDM_POS_INFOONOFF = 4099; //[ウィンドウ情報] 5000 G_ciIDM_WININFO = 5000; G_ciIDM_WININFO_HANDLE = 5001; G_ciIDM_WININFO_CLASSNAME = 5002; G_ciIDM_WININFO_TEXT = 5003; G_ciIDM_WININFO_WINDOWSIZE = 5004; G_ciIDM_WININFO_CLIENTSIZE = 5005; G_ciIDM_WININFO_RECT = 5006; G_ciIDM_WININFO_CONTROLID = 5007; G_ciIDM_WININFO_STYLE = 5008; G_ciIDM_WININFO_PARENTWINDOW = 5009; G_ciIDM_WININFO_PID = 5010; G_ciIDM_WININFO_EXENAME = 5011; G_ciIDM_WININFO_FILEVERSION = 5012; G_ciIDM_WININFO_LINE1 = 5013; G_ciIDM_WININFO_STYLEVERBOSE = 5014; // G_ciIDM_WININFO_STYLEFOLLOWMAIN = 5015; G_ciIDM_WININFO_LINE2 = 5016; G_ciIDM_WININFO_INFOONOFF = 5099; G_ciIDM_WININFO_ENABLED = 5017; //[-] G_ciIDM_MAIN_LINE2 = 2; //[コピー] 6000 //HSV HLS HLSWINの各値を追加したので数値が飛んでいる G_ciIDM_COPY = 6000; G_ciIDM_COPY_PICTURE = 6001; G_ciIDM_COPY_LINE1 = 6002; G_ciIDM_COPY_COLORRGB = 6003; G_ciIDM_COPY_COLORRGBRED = 6004; G_ciIDM_COPY_COLORRGBGREEN = 6005; G_ciIDM_COPY_COLORRGBBLUE = 6006; G_ciIDM_COPY_COLORHTML = 6007; G_ciIDM_COPY_COLORCOLORREF = 6008; G_ciIDM_COPY_COLORHSV = 6009; G_ciIDM_COPY_COLORHSVHUE = 6100; G_ciIDM_COPY_COLORHSVSATURATION = 6101; G_ciIDM_COPY_COLORHSVVALUE = 6102; G_ciIDM_COPY_COLORHLS = 6010; G_ciIDM_COPY_COLORHLSHUE = 6104; G_ciIDM_COPY_COLORHLSSATURATION = 6105; G_ciIDM_COPY_COLORHLSLIGHTNESS = 6106; G_ciIDM_COPY_COLORHLSWIN = 6011; G_ciIDM_COPY_COLORHLSWINHUE = 6108; G_ciIDM_COPY_COLORHLSWINSATURATION = 6110; G_ciIDM_COPY_COLORHLSWINLIGHTNESS = 6111; G_ciIDM_COPY_LINE2 = 6012; G_ciIDM_COPY_POSSCREEN = 6013; G_ciIDM_COPY_POSMONITOR = 6014; G_ciIDM_COPY_POSCLIENT = 6015; G_ciIDM_COPY_POSUSER = 6016; G_ciIDM_COPY_LINE3 = 6017; G_ciIDM_COPY_WININFOHANDLE = 6018; G_ciIDM_COPY_WININFOCLASSNAME = 6019; G_ciIDM_COPY_WININFOTEXT = 6020; G_ciIDM_COPY_WININFOWINDOWSIZE = 6021; G_ciIDM_COPY_WININFOCLIENTSIZE = 6022; G_ciIDM_COPY_WININFORECT = 6023; G_ciIDM_COPY_WININFOCONTROLID = 6024; G_ciIDM_COPY_WININFOSTYLE = 6025; G_ciIDM_COPY_WININFOSTYLEEX = 6026; G_ciIDM_COPY_WININFOPID = 6027; G_ciIDM_COPY_WININFOEXENAME = 6028; G_ciIDM_COPY_WININFOFILEVERSION = 6029; G_ciIDM_COPY_WININFOSTYLEVERBOSE = 6030; G_ciIDM_COPY_LINE4 = 6031; G_ciIDM_COPY_ALL = 6099; //途中から追加したので6201から番号付与 G_ciIDM_COPY_POSSCREEN_X = 6201; G_ciIDM_COPY_POSSCREEN_Y = 6202; G_ciIDM_COPY_POSMONITOR_X = 6203; G_ciIDM_COPY_POSMONITOR_Y = 6204; G_ciIDM_COPY_POSCLIENT_X = 6205; G_ciIDM_COPY_POSCLIENT_Y = 6206; G_ciIDM_COPY_POSUSER_WIDTH = 6207; G_ciIDM_COPY_POSUSER_HEIGHT = 6208; G_ciIDM_COPY_WININFOWINDOWSIZE_LEFT = 6211; G_ciIDM_COPY_WININFOWINDOWSIZE_TOP = 6212; G_ciIDM_COPY_WININFOWINDOWSIZE_WIDTH = 6213; G_ciIDM_COPY_WININFOWINDOWSIZE_HEIGHT = 6214; G_ciIDM_COPY_WININFOCLIENTSIZE_WIDTH = 6215; G_ciIDM_COPY_WININFOCLIENTSIZE_HEIGHT = 6216; G_ciIDM_COPY_WININFORECT_LEFT = 6217; G_ciIDM_COPY_WININFORECT_TOP = 6218; G_ciIDM_COPY_WININFORECT_RIGHT = 6219; G_ciIDM_COPY_WININFORECT_BOTTOM = 6220; //途中から追加したので6221から番号付与 G_ciIDM_COPY_POSLOGICALSCREEN_X = 6221; G_ciIDM_COPY_POSLOGICALSCREEN_Y = 6222; G_ciIDM_COPY_POSLOGICALMONITOR_X = 6223; G_ciIDM_COPY_POSLOGICALMONITOR_Y = 6224; G_ciIDM_COPY_POSLOGICALCLIENT_X = 6225; G_ciIDM_COPY_POSLOGICALCLIENT_Y = 6226; G_ciIDM_COPY_POSLOGICALLENGTH_WIDTH = 6227; G_ciIDM_COPY_POSLOGICALLENGTH_HEIGHT = 6228; G_ciIDM_COPY_POSLOGICALSCREEN = 6229; G_ciIDM_COPY_POSLOGICALMONITOR = 6230; G_ciIDM_COPY_POSLOGICALCLIENT = 6231; G_ciIDM_COPY_POSLOGICALLENGTH = 6232; //[テキスト書き込み] 14000 //途中から追加したので14000からになっている G_ciIDM_WRITE = 14000; G_ciIDM_WRITE_INFOCASH = 14001; G_ciIDM_WRITE_LINE1 = 14002; G_ciIDM_WRITE_COLORRGB = 14003; G_ciIDM_WRITE_COLORRGBRED = 14004; G_ciIDM_WRITE_COLORRGBGREEN = 14005; G_ciIDM_WRITE_COLORRGBBLUE = 14006; G_ciIDM_WRITE_COLORHTML = 14007; G_ciIDM_WRITE_COLORCOLORREF = 14008; G_ciIDM_WRITE_COLORHSV = 14009; G_ciIDM_WRITE_COLORHSVHUE = 14100; G_ciIDM_WRITE_COLORHSVSATURATION = 14101; G_ciIDM_WRITE_COLORHSVVALUE = 14102; G_ciIDM_WRITE_COLORHLS = 14010; G_ciIDM_WRITE_COLORHLSHUE = 14104; G_ciIDM_WRITE_COLORHLSSATURATION = 14105; G_ciIDM_WRITE_COLORHLSLIGHTNESS = 14106; G_ciIDM_WRITE_COLORHLSWIN = 14011; G_ciIDM_WRITE_COLORHLSWINHUE = 14108; G_ciIDM_WRITE_COLORHLSWINSATURATION = 14110; G_ciIDM_WRITE_COLORHLSWINLIGHTNESS = 14111; G_ciIDM_WRITE_LINE2 = 14200; G_ciIDM_WRITE_POSSCREEN = 14201; G_ciIDM_WRITE_POSSCREEN_X = 14202; G_ciIDM_WRITE_POSSCREEN_Y = 14203; G_ciIDM_WRITE_POSMONITOR = 14204; G_ciIDM_WRITE_POSMONITOR_X = 14205; G_ciIDM_WRITE_POSMONITOR_Y = 14206; G_ciIDM_WRITE_POSCLIENT = 14207; G_ciIDM_WRITE_POSCLIENT_X = 14208; G_ciIDM_WRITE_POSCLIENT_Y = 14209; G_ciIDM_WRITE_POSUSER = 14210; G_ciIDM_WRITE_POSUSER_WIDTH = 14211; G_ciIDM_WRITE_POSUSER_HEIGHT = 14212; G_ciIDM_WRITE_POSLOGICALSCREEN = 14213; G_ciIDM_WRITE_POSLOGICALSCREEN_X = 14214; G_ciIDM_WRITE_POSLOGICALSCREEN_Y = 14215; G_ciIDM_WRITE_POSLOGICALMONITOR = 14216; G_ciIDM_WRITE_POSLOGICALMONITOR_X = 14217; G_ciIDM_WRITE_POSLOGICALMONITOR_Y = 14218; G_ciIDM_WRITE_POSLOGICALCLIENT = 14219; G_ciIDM_WRITE_POSLOGICALCLIENT_X = 14220; G_ciIDM_WRITE_POSLOGICALCLIENT_Y = 14221; G_ciIDM_WRITE_POSLOGICALLENGTH = 14222; G_ciIDM_WRITE_POSLOGICALLENGTH_WIDTH = 14223; G_ciIDM_WRITE_POSLOGICALLENGTH_HEIGHT = 14224; G_ciIDM_WRITE_LINE3 = 14300; G_ciIDM_WRITE_WININFOHANDLE = 14301; G_ciIDM_WRITE_WININFOCLASSNAME = 14302; G_ciIDM_WRITE_WININFOTEXT = 14303; G_ciIDM_WRITE_WININFOWINDOWSIZE = 14310; G_ciIDM_WRITE_WININFOWINDOWSIZE_LEFT = 14311; G_ciIDM_WRITE_WININFOWINDOWSIZE_TOP = 14312; G_ciIDM_WRITE_WININFOWINDOWSIZE_WIDTH = 14313; G_ciIDM_WRITE_WININFOWINDOWSIZE_HEIGHT = 14314; G_ciIDM_WRITE_WININFOCLIENTSIZE = 14315; G_ciIDM_WRITE_WININFOCLIENTSIZE_WIDTH = 14316; G_ciIDM_WRITE_WININFOCLIENTSIZE_HEIGHT = 14317; G_ciIDM_WRITE_WININFORECT = 14320; G_ciIDM_WRITE_WININFORECT_LEFT = 14321; G_ciIDM_WRITE_WININFORECT_TOP = 14322; G_ciIDM_WRITE_WININFORECT_RIGHT = 14323; G_ciIDM_WRITE_WININFORECT_BOTTOM = 14324; G_ciIDM_WRITE_WININFOCONTROLID = 14330; G_ciIDM_WRITE_WININFOSTYLE = 14331; G_ciIDM_WRITE_WININFOSTYLEEX = 14332; G_ciIDM_WRITE_WININFOSTYLEVERBOSE = 14333; G_ciIDM_WRITE_WININFOPID = 14334; G_ciIDM_WRITE_WININFOEXENAME = 14335; G_ciIDM_WRITE_WININFOFILEVERSION = 14336; //途中から追加したのでカテゴリ内の最後尾から番号付与 G_ciIDM_WRITE_CLEARCASH = 14400; G_ciIDM_WRITE_CLIPBOARD = 14401; G_ciIDM_WRITE_TEXTCLEAR = 14402; //[キャプチャ] G_ciIDM_CAPTURE = 7000; G_ciIDM_CAPTURE_PAUSE = 7001; G_ciIDM_CAPTURE_LINE1 = 7002; G_ciIDM_CAPTURE_LUPE = 7003; G_ciIDM_CAPTURE_FIXED = 7004; G_ciIDM_CAPTURE_LINE2 = 7005; G_ciIDM_CAPTURE_UPDATE = 7006; //途中から追加したのでカテゴリ内の最後尾から番号付与 G_ciIDM_TEST_FLIP = 7010; G_ciIDM_TEST_FLIPNONE = 7011; G_ciIDM_TEST_FLIPHORIZONTAL = 7012; G_ciIDM_TEST_FLIPVERTICAL = 7013; G_ciIDM_TEST_ROTATE90 = 7014; G_ciIDM_TEST_ROTATE270 = 7015; G_ciIDM_TEST_ROTATE180 = 7016; //[設定] G_ciIDM_CUSTOMIZE = 8000; G_ciIDM_OPT_STAYONTOP = 8001; G_ciIDM_OPT_TITLEBAR = 8002; G_ciIDM_OPT_TOOLBAR = 8003; G_ciIDM_OPT_FONTSIZE = 8004; G_ciIDM_OPT_NOSELFCAPTURE = 8005; G_ciIDM_OPT_SMOOTHCAPTURE = 8006; //OptionからTestへ変更 G_ciIDM_TEST_AEROTHEMEONOFF = 8008; G_ciIDM_TEST_APITEST = 8009; G_ciIDM_OPT_LINE2 = 8007; //途中から追加したのでカテゴリ内の最後尾から番号付与 G_ciIDM_OPT_ZOOMWHEEL = 8010; G_ciIDM_OPT_LARGEICON = 8011; G_ciIDM_OPT_SELBKCOLOR = 8012; G_ciIDM_OPT_LINE1 = 8013; G_ciIDM_TEST = 8014; G_ciIDM_OPT_LINETO = 8015; //[カスタマイズ] G_ciIDM_CUSTOMIZE_SETTING = 9000; G_ciIDM_CUSTOMIZE_MENU = 9001; G_ciIDM_CUSTOMIZE_TOOLBAR = 9002; G_ciIDM_CUSTOMIZE_SHORTCUT = 9003; G_ciIDM_CUSTOMIZE_COPY = 9004; //[-] G_ciIDM_MAIN_LINE3 = 3; //[バージョン情報] G_ciIDM_HELP = 13001; //[最小化] G_ciIDM_FILE_MINIMIZE = 12001; //[-] G_ciIDM_MAIN_LINE4 = 4; //[終了] G_ciIDM_FILE_EXIT = 12002; const { コマンド(アクション)識別用のユニークな番号。 項目の増減はOKだが値の変更はNG。 変更した場合は設定ファイルの互換性が無くなる。 項目を増やす場合はユニークな値をセットする。 項目を減らした場合割り当てられていた値の使い回しはNG。 } //[Zoom] 1000 G_ciCMD_ZOOM_1 = 1001; G_ciCMD_ZOOM_2 = 1002; G_ciCMD_ZOOM_3 = 1003; G_ciCMD_ZOOM_4 = 1004; G_ciCMD_ZOOM_6 = 1006; G_ciCMD_ZOOM_8 = 1008; G_ciCMD_ZOOM_10 = 1010; G_ciCMD_ZOOM_12 = 1012; G_ciCMD_ZOOM_16 = 1016; G_ciCMD_ZOOM_20 = 1020; G_ciCMD_ZOOM_UP = 1090; G_ciCMD_ZOOM_DOWN = 1091; //[Grid] 2000 G_ciCMD_GRID_DISP = 2010; G_ciCMD_GRID_GRAY = 2001; G_ciCMD_GRID_BLACK = 2002; G_ciCMD_GRID_WHITE = 2003; G_ciCMD_GRID_INVERT = 2004; G_ciCMD_GRID_TRANSPARENT = 2005; G_ciCMD_GRID_SELCOLOR = 2006; G_ciCMD_GRID_SUBNONE = 2011; G_ciCMD_GRID_SUBBLUE = 2012; G_ciCMD_GRID_SUBRED = 2013; G_ciCMD_GRID_SELSUBCOLOR = 2014; G_ciCMD_GRID_USESUBELSECOLOR = 2021; G_ciCMD_GRID_SELSUBELSECOLOR = 2022; //[Color] 3000 G_ciCMD_COLOR_RGB = 3001; G_ciCMD_COLOR_HTML = 3002; G_ciCMD_COLOR_COLORREF = 3003; G_ciCMD_COLOR_HSV = 3004; G_ciCMD_COLOR_HLS = 3005; G_ciCMD_COLOR_HLSWIN = 3006; G_ciCMD_COLOR_INFOONOFF = 3099; //[Position] 4000 G_ciCMD_POS_SCREEN = 4001; G_ciCMD_POS_MONITOR = 4002; G_ciCMD_POS_CLIENT = 4003; G_ciCMD_POS_LENGTH = 4004; G_ciCMD_POS_LENGTHPOSSET = 4010; { G_ciCMD_POS_LOGICALSCREEN = 4011; G_ciCMD_POS_LOGICALMONITOR = 4012; G_ciCMD_POS_LOGICALCLIENT = 4013; G_ciCMD_POS_LOGICALLENGTH = 4014; } G_ciCMD_POS_INFOONOFF = 4099; //[WindowInfo] 5000 G_ciCMD_WININFO_HANDLE = 5001; G_ciCMD_WININFO_CLASSNAME = 5002; G_ciCMD_WININFO_TEXT = 5003; G_ciCMD_WININFO_WINDOWSIZE = 5004; G_ciCMD_WININFO_CLIENTSIZE = 5005; G_ciCMD_WININFO_RECT = 5006; G_ciCMD_WININFO_CONTROLID = 5007; G_ciCMD_WININFO_STYLE = 5008; G_ciCMD_WININFO_PARENTWINDOW = 5021; G_ciCMD_WININFO_PID = 5022; G_ciCMD_WININFO_EXENAME = 5023; G_ciCMD_WININFO_FILEVERSION = 5024; G_ciCMD_WININFO_STYLEVERBOSE = 5031; G_ciDMD_WININFO_ENABLED = 5033; G_ciCMD_WININFO_INFOONOFF = 5099; //[Copy] 6000 G_ciCMD_COPY_PICTURE = 6001; G_ciCMD_COPY_COLORRGB = 6002; G_ciCMD_COPY_COLORRGBRED = 6003; G_ciCMD_COPY_COLORRGBGREEN = 6004; G_ciCMD_COPY_COLORRGBBLUE = 6005; G_ciCMD_COPY_COLORHTML = 6006; G_ciCMD_COPY_COLORCOLORREF = 6007; G_ciCMD_COPY_COLORHSV = 6008; G_ciCMD_COPY_COLORHSVHUE = 6009; G_ciCMD_COPY_COLORHSVSATURATION = 6010; G_ciCMD_COPY_COLORHSVVALUE = 6011; G_ciCMD_COPY_COLORHLS = 6012; G_ciCMD_COPY_COLORHLSHUE = 6013; G_ciCMD_COPY_COLORHLSSATURATION = 6014; G_ciCMD_COPY_COLORHLSLIGHTNESS = 6015; G_ciCMD_COPY_COLORHLSWIN = 6016; G_ciCMD_COPY_COLORHLSWINHUE = 6017; G_ciCMD_COPY_COLORHLSWINSATURATION = 6018; G_ciCMD_COPY_COLORHLSWINLIGHTNESS = 6019; G_ciCMD_COPY_POSSCREEN = 6020; G_ciCMD_COPY_POSMONITOR = 6021; G_ciCMD_COPY_POSCLIENT = 6022; G_ciCMD_COPY_POSLENGTH = 6023; G_ciCMD_COPY_POSSCREEN_X = 6101; G_ciCMD_COPY_POSSCREEN_Y = 6102; G_ciCMD_COPY_POSMONITOR_X = 6103; G_ciCMD_COPY_POSMONITOR_Y = 6104; G_ciCMD_COPY_POSCLIENT_X = 6105; G_ciCMD_COPY_POSCLIENT_Y = 6106; G_ciCMD_COPY_POSLENGTH_WIDTH = 6108; G_ciCMD_COPY_POSLENGTH_HEIGHT = 6109; G_ciCMD_COPY_WININFOHANDLE = 6024; G_ciCMD_COPY_WININFOCLASSNAME = 6025; G_ciCMD_COPY_WININFOTEXT = 6026; G_ciCMD_COPY_WININFOWINDOWSIZE = 6027; G_ciCMD_COPY_WININFOCLIENTSIZE = 6028; G_ciCMD_COPY_WININFORECT = 6029; G_ciCMD_COPY_WININFOCONTROLID = 6030; G_ciCMD_COPY_WININFOSTYLE = 6031; G_ciCMD_COPY_WININFOSTYLEEX = 6032; G_ciCMD_COPY_WININFOSTYLEVERBOSE = 6033; G_ciCMD_COPY_WININFOPID = 6034; G_ciCMD_COPY_WININFOEXENAME = 6035; G_ciCMD_COPY_WININFOFILEVERSION = 6036; G_ciCMD_COPY_ALL = 6090; // G_ciCMD_COPY_OPTUNICODE = 6099; G_ciCMD_COPY_WININFOWINDOWSIZE_LEFT = 6041; G_ciCMD_COPY_WININFOWINDOWSIZE_TOP = 6042; G_ciCMD_COPY_WININFOWINDOWSIZE_WIDTH = 6043; G_ciCMD_COPY_WININFOWINDOWSIZE_HEIGHT = 6044; G_ciCMD_COPY_WININFOCLIENTSIZE_WIDTH = 6045; G_ciCMD_COPY_WININFOCLIENTSIZE_HEIGHT = 6046; G_ciCMD_COPY_WININFORECT_LEFT = 6047; G_ciCMD_COPY_WININFORECT_TOP = 6048; G_ciCMD_COPY_WININFORECT_RIGHT = 6049; G_ciCMD_COPY_WININFORECT_BOTTOM = 6050; //[テキスト書き換え] 14000 //途中から追加したので14000からになっている G_ciCMD_WRITE_INFOCASH = 14000; G_ciCMD_WRITE_COLORRGB = 14003; G_ciCMD_WRITE_COLORRGBRED = 14004; G_ciCMD_WRITE_COLORRGBGREEN = 14005; G_ciCMD_WRITE_COLORRGBBLUE = 14006; G_ciCMD_WRITE_COLORHTML = 14007; G_ciCMD_WRITE_COLORCOLORREF = 14008; G_ciCMD_WRITE_COLORHSV = 14009; G_ciCMD_WRITE_COLORHSVHUE = 14100; G_ciCMD_WRITE_COLORHSVSATURATION = 14101; G_ciCMD_WRITE_COLORHSVVALUE = 14102; G_ciCMD_WRITE_COLORHLS = 14010; G_ciCMD_WRITE_COLORHLSHUE = 14104; G_ciCMD_WRITE_COLORHLSSATURATION = 14105; G_ciCMD_WRITE_COLORHLSLIGHTNESS = 14106; G_ciCMD_WRITE_COLORHLSWIN = 14011; G_ciCMD_WRITE_COLORHLSWINHUE = 14108; G_ciCMD_WRITE_COLORHLSWINSATURATION = 14110; G_ciCMD_WRITE_COLORHLSWINLIGHTNESS = 14111; G_ciCMD_WRITE_POSSCREEN = 14201; G_ciCMD_WRITE_POSSCREEN_X = 14202; G_ciCMD_WRITE_POSSCREEN_Y = 14203; G_ciCMD_WRITE_POSMONITOR = 14204; G_ciCMD_WRITE_POSMONITOR_X = 14205; G_ciCMD_WRITE_POSMONITOR_Y = 14206; G_ciCMD_WRITE_POSCLIENT = 14207; G_ciCMD_WRITE_POSCLIENT_X = 14208; G_ciCMD_WRITE_POSCLIENT_Y = 14209; G_ciCMD_WRITE_POSLENGTH = 14210; G_ciCMD_WRITE_POSLENGTH_WIDTH = 14211; G_ciCMD_WRITE_POSLENGTH_HEIGHT = 14212; G_ciCMD_WRITE_WININFOHANDLE = 14301; G_ciCMD_WRITE_WININFOCLASSNAME = 14302; G_ciCMD_WRITE_WININFOTEXT = 14303; G_ciCMD_WRITE_WININFOWINDOWSIZE = 14310; G_ciCMD_WRITE_WININFOWINDOWSIZE_LEFT = 14311; G_ciCMD_WRITE_WININFOWINDOWSIZE_TOP = 14312; G_ciCMD_WRITE_WININFOWINDOWSIZE_WIDTH = 14313; G_ciCMD_WRITE_WININFOWINDOWSIZE_HEIGHT = 14314; G_ciCMD_WRITE_WININFOCLIENTSIZE = 14315; G_ciCMD_WRITE_WININFOCLIENTSIZE_WIDTH = 14316; G_ciCMD_WRITE_WININFOCLIENTSIZE_HEIGHT = 14317; G_ciCMD_WRITE_WININFORECT = 14320; G_ciCMD_WRITE_WININFORECT_LEFT = 14321; G_ciCMD_WRITE_WININFORECT_TOP = 14322; G_ciCMD_WRITE_WININFORECT_RIGHT = 14323; G_ciCMD_WRITE_WININFORECT_BOTTOM = 14324; G_ciCMD_WRITE_WININFOCONTROLID = 14330; G_ciCMD_WRITE_WININFOSTYLE = 14331; G_ciCMD_WRITE_WININFOSTYLEEX = 14332; G_ciCMD_WRITE_WININFOSTYLEVERBOSE = 14333; G_ciCMD_WRITE_WININFOPID = 14334; G_ciCMD_WRITE_WININFOEXENAME = 14335; G_ciCMD_WRITE_WININFOFILEVERSION = 14336; //途中から追加したのでカテゴリ内の最後尾から番号付与 G_ciCMD_WRITE_CLEARCASH = 14400; G_ciCMD_WRITE_CLIPBOARD = 14401; G_ciCMD_WRITE_TEXTCLEAR = 14402; //[Capture] 7000 G_ciCMD_CAPTURE_LUPE = 7001; G_ciCMD_CAPTURE_FIXED = 7002; G_ciCMD_CAPTURE_PAUSE = 7011; G_ciCMD_CAPTURE_UPDATE = 7012; G_ciCMD_CAPTURE_DISP_X1 = 7013; G_ciCMD_CAPTURE_MOVECURSORTOPOINT = 7014; G_ciCMD_CAPTURE_POINTFROMCURSOR = 7015; //途中から追加したのでカテゴリ内の最後尾から番号付与 //CaptureからTestへ変更 G_ciCMD_TEST_FLIPNONE = 7020; G_ciCMD_TEST_FLIPHORIZONTAL = 7021; G_ciCMD_TEST_FLIPVERTICAL = 7022; G_ciCMD_TEST_ROTATE90 = 7023; G_ciCMD_TEST_ROTATE270 = 7024; G_ciCMD_TEST_ROTATE180 = 7025; //[Option] 8000 G_ciCMD_OPT_STAYONTOP = 8001; G_ciCMD_OPT_TITLEBAR = 8002; G_ciCMD_OPT_TOOLBAR = 8004; // G_ciCMD_OPT_BIGFONT = 8005; G_ciCMD_OPT_NOSELFCAPTURE = 8006; G_ciCMD_OPT_SMOOTHCAPTURE = 8007; //OptionからTestへ変更 G_ciCMD_TEST_AEROTHEMEONOFF = 8008; G_ciCMD_TEST_APITEST = 8009; //途中から追加したのでカテゴリ内の最後尾から番号付与 G_ciCMD_OPT_ZOOMWHEEL = 8010; G_ciCMD_OPT_LARGEICON = 8011; G_ciCMD_OPT_LINETO = 8012; G_ciCMD_OPT_FONTSIZE = 8013; //[Custom] 9000 G_ciCMD_CUSTOM_SETTING = 9001; G_ciCMD_CUSTOM_MENU = 9002; G_ciCMD_CUSTOM_TOOLBAR = 9003; G_ciCMD_CUSTOM_SHORTCUT = 9004; G_ciCMD_CUSTOM_COPY = 9005; //[Menu] 10000 G_ciCMD_MENU_MAIN = 10001; G_ciCMD_MENU_ZOOM = 10002; G_ciCMD_MENU_GRID = 10003; G_ciCMD_MENU_COLOR = 10004; G_ciCMD_MENU_POS = 10005; G_ciCMD_MENU_WININFO = 10006; G_ciCMD_MENU_COPY = 10007; G_ciCMD_MENU_SETTING = 10008; G_ciCMD_MENU_CAPTURE = 10009; G_ciCMD_MENU_TEST = 10010; //[Move] 11000 G_ciCMD_MOVE_UP = 11001; G_ciCMD_MOVE_DOWN = 11002; G_ciCMD_MOVE_LEFT = 11003; G_ciCMD_MOVE_RIGHT = 11004; G_ciCMD_MOVE_MONITOR = 11005; //[File] 12000 G_ciCMD_FILE_MINIMIZE = 12001; G_ciCMD_FILE_EXIT = 12002; //[Help] 13000 G_ciCMD_HELP = 13001; const //設定データ用フラグ G_ciFLG_GRID_DISP = $01; G_ciFLG_GRID_ELSECOLOR = $02; //カラー情報 //16個まで G_ciFLG_COLOR_RGB = $01; G_ciFLG_COLOR_HTML = $02; G_ciFLG_COLOR_COLORREF = $04; G_ciFLG_COLOR_HSV = $08; G_ciFLG_COLOR_HLS = $10; G_ciFLG_COLOR_HLSWIN = $20; //位置情報 //16個まで G_ciFLG_POS_SCREEN = $01; G_ciFLG_POS_MONITOR = $02; G_ciFLG_POS_CLIENT = $04; G_ciFLG_POS_LENGTH = $08; //ウィンドウ情報 //32個まで G_ciFLG_WINFO_HANDLE = $1; G_ciFLG_WINFO_CLASSNAME = $2; G_ciFLG_WINFO_TEXT = $4; G_ciFLG_WINFO_WINDOWSIZE = $8; G_ciFLG_WINFO_CLIENTSIZE = $10; G_ciFLG_WINFO_RECT = $20; G_ciFLG_WINFO_CONTROLID = $40; G_ciFLG_WINFO_STYLE = $80; G_ciFLG_WINFO_PARENT = $100; G_ciFLG_WINFO_PID = $200; G_ciFLG_WINFO_EXENAME = $400; G_ciFLG_WINFO_VERSION = $800; G_ciFLG_WINFO_STYLEVERBOSE = $1000; // G_ciFLG_WINFO_FOLLOWMAIN = $2000; G_ciFLG_WINFO_ENABLED = $4000; //スタイルオプション //プラグイン対応で分離の予定 //32個まで G_ciFLG_STYLE_BUTTON = $1; G_ciFLG_STYLE_EDIT = $2; G_ciFLG_STYLE_STATIC = $4; G_ciFLG_STYLE_COMBOBOX = $8; G_ciFLG_STYLE_LISTBOX = $10; G_ciFLG_STYLE_DIALOG = $20; G_ciFLG_STYLE_SCROLLBAR = $40; //16個まで G_ciFLG_OPT_STAYONTOP = $1; G_ciFLG_OPT_TITLEBAR = $2; G_ciFLG_OPT_TOOLBAR = $4; // G_ciFLG_OPT_BIGFONT = $8; //他への流用は後方互換性維持のため不可 G_ciFLG_OPT_NOSELF = $10; G_ciFLG_OPT_SMOOTH = $20; G_ciFLG_OPT_APITEST = $40; G_ciFLG_OPT_ZOOMWHEEL = $80; G_ciFLG_OPT_LARGEICON = $100; G_ciFLG_OPT_LINETO = $200; // G_ciFLG_OPT_COPYUNICODE = $8000; G_ciFLG_CAPTURE_LUPE = $1; G_ciFLG_CAPTURE_FIXED = $2; const { キーの増減は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_ShortCut = array[0..G_ciKEYCOUNT-1] of T_ShortCutKey; T_MouseGesture = packed record iCommand_Up: Word; iCommand_Down: Word; iCommand_Left: Word; iCommand_Right: Word; end; type T_SettingHeader = packed record iIdentifier: array[0..3] of Byte; //4バイトの識別子。 //[Data Version] //本体のバージョンではなく設定ファイルのバージョン。 iMajor: Byte; //メジャーバージョン iMinor: Byte; //マイナーバージョン //予備 iExtDataOffset: DWORD; //Ver1.3以降。Mainの基本設定以外の設定値の位置。 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個 ビットフラグ ptLengthPos : TPoint; //[WindowInfo] iWInfoFlag : Longword; //32個 ビットフラグ iStyleFlag : Longword; //32個 ビットフラグ //[Option] iOptFlag : Word; //16個 ビットフラグ //[Capture] iCaptureFlag : Word; //16個 ビットフラグ ptCaptruePos : TPoint; end; //ウィンドウスタイル詳細 //プラグイン対応で分離の予定 T_WindowStyleInfo = packed record rcRect : TRect; //フォームのサイズ iHintHeight : Integer; //ヒント表示欄の高さ iCheckFlag : Longword; //32個 ビットフラグ iReserved1 : Longword; iReserved2 : Longword; end; //APIテスト //プラグイン対応で分離の予定 T_APITestInfo = packed record rcRect : TRect; //フォームのサイズ iIndex : Integer; //テストするAPIのインデックス iHintHeight : Integer; //ヒント表示欄の高さ iReserved1 : Longword; iReserved2 : Longword; end; T_SettingInfo2 = packed record iReserved0 : Longword; //オプション - 背景色 // fpCapture_Flip : TZoomFlip; //キャプチャ - 反転・回転 iCapture_Flip : Longword; //キャプチャ - 反転・回転 iReserved1 : Longword; //以下予約 iReserved2 : Longword; iReserved3 : Longword; iReserved4 : Longword; iReserved5 : Longword; iReserved6 : Longword; iReserved7 : Longword; iReserved8 : Longword; iReserved9 : Longword; end; T_FontInfoSize = packed record iFontNameLength : Longint; //フォント名の長さ。 iFontSize : Longint; //フォントサイズ。 iInfoVLine : Longword; //情報欄の縦線 iReserved2 : Longword; iReserved3 : Longword; iReserved4 : Longword; end; T_FontInfo = record //packedはいらない Size : T_FontInfoSize; sName : String; end; const //ショートカットキー //仮想キーコード、デフォルトのコマンド(0は未設定) //数の増減は不可。変更した場合設定ファイルの互換性がなくなる。 //デフォルトコマンドの変更はOK。 G_rINIT_SHORTCUTKEYS: array[0..G_ciKEYCOUNT-1] of T_ShortCutKey = ( (iKey: VK_0; iCommand: 0), (iKey: VK_1; iCommand: G_ciCMD_CAPTURE_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_ciCMD_POS_LENGTHPOSSET), //長さの原点をセット (iKey: VK_A; iCommand: 0), (iKey: VK_B; iCommand: 0), (iKey: VK_C; iCommand: G_ciCMD_COPY_COLORCOLORREF), //COLORREFをコピー (iKey: VK_D; iCommand: 0), (iKey: VK_E; iCommand: 0), (iKey: VK_F; iCommand: G_ciCMD_CAPTURE_FIXED), (iKey: VK_G; iCommand: 0), (iKey: VK_H; iCommand: G_ciCMD_COPY_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_ciCMD_MENU_MAIN), (iKey: VK_N; iCommand: 0), (iKey: VK_O; iCommand: 0), (iKey: VK_P; iCommand: 0), (iKey: VK_Q; iCommand: G_ciCMD_MOVE_MONITOR), (iKey: VK_R; iCommand: 0), (iKey: VK_S; iCommand: G_ciCMD_OPT_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_ciCMD_COPY_PICTURE), (iKey: VK_F1; iCommand: G_ciCMD_HELP), (iKey: VK_F2; iCommand: 0), (iKey: VK_F3; iCommand: 0), (iKey: VK_F4; iCommand: 0), (iKey: VK_F5; iCommand: G_ciCMD_CAPTURE_UPDATE), (iKey: VK_F6; iCommand: G_ciCMD_CAPTURE_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_ciCMD_CAPTURE_PAUSE), (iKey: VK_PRIOR; iCommand: G_ciCMD_ZOOM_UP), (iKey: VK_NEXT; iCommand: G_ciCMD_ZOOM_DOWN), (iKey: VK_HOME; iCommand: 0), (iKey: VK_END; iCommand: 0), (iKey: VK_UP; iCommand: G_ciCMD_MOVE_UP), (iKey: VK_DOWN; iCommand: G_ciCMD_MOVE_DOWN), (iKey: VK_LEFT; iCommand: G_ciCMD_MOVE_LEFT), (iKey: VK_RIGHT; iCommand: G_ciCMD_MOVE_RIGHT) ); //マウスジェスチャ G_rINIT_MOUSEGESTURE: T_MouseGesture = ( iCommand_Up : G_ciCMD_OPT_STAYONTOP; iCommand_Down : G_ciCMD_CUSTOM_SETTING; iCommand_Left : G_ciCMD_GRID_DISP; iCommand_Right : G_ciCMD_CAPTURE_PAUSE ); type T_CopyFmtHeader = packed record iIndex : Word; //メニュー番号 iLength : Word; //コピー形式文字列の長さ(バイト数) end; //直接データの読み書きに使用するわけではないのでpackedはつけない T_CopyFmt = record iIndex : Word; sFormat : WideString; end; (* type TMy_SettingFile = class(TObject) FhHandle : THandle; FiOffset : DWORD; FsFileName : WideString; FsSection : WideString; FbModified : Boolean; FbDebug : Boolean; function FReadHeader : Boolean; function FReadSettingInfo : T_SettingInfo; function FReadShotCut : T_ShortCut; function FReadMouseGesture : T_MouseGesture; public constructor Create; overload; destructor Destroy; override; function ReadRect (sSection: WideString; sKey: WideString; ADefault: TRect): TRect; function ReadInteger(sSection: WideString; sKey: WideString; iDefault: Integer): Integer; function UpdateFile: Boolean; virtual; function SectionExists(sSection: WideString): Boolean; virtual; procedure ReadSections (slStrings: TMyWStrings); virtual; procedure ReadSection (sSection: WideString; slStrings: TMyWStrings); virtual; procedure EraseSection (sSection: WideString); virtual; procedure WriteSection (sSection: WideString); *) var { 設定データ、ショートカットキー、マウスジェスチャのサイズは固定。 メニューとツールバー、コピー形式文字列のサイズは可変。 メニューとツールバーの設定値は最初に設定値の個数(Word)がありその後に個数分のデー タ(Wordの羅列)が続く。 コピー形式文字列は最初にコピー形式文字列の個数(Word)がありその数だけ Index : Word //メニュー番号 Length : Word //Dataの長さ(バイト) Data : AnsiChar //画像コピーのビットフラグもしくはコピー形式文字列(UTF-8の可変長) というデータの塊が続く。 その後セクションデータが続く。 StrLength : Word //セクション名の長さ Section : Utf8String //セクション名(UTF-8の可変長) Length : DWORD //(セクションの)データ長(セクション名の長さとセクション名は含まない)  以下各キーのデータの塊が芋づる式に羅列される。 StrLength : Word //キー名の長さ Key : Utf8String //キー名(UTF-8の可変長) Length : DWORD //(キーの)データ長 Data : 任意の型、任意のデータ。 } //設定データ(バイナリ) G_rSettingInfo: T_SettingInfo; //ショートカットキー // G_rShortCutKeys: array[0..G_ciKEYCOUNT-1] of T_ShortCutKey; G_rShortCutKeys: T_ShortCut; //マウスジェスチャ G_rMouseGesture: T_MouseGesture; {$IFDEF MEGALO_BUG} //以下は設定によってサイズが可変 //メニュー(非表示のメニューを羅列) G_MenuHideItem: array of Word; //ツールバー(表示するツールボタンのアクション) G_ToolBarAction: array of Word; //コピー形式文字列 G_CopyFmt: array of T_CopyFmt; //サブウィンドウ(サイズは固定) G_WindowStyleInfo : T_WindowStyleInfo; G_APITestInfo : T_APITestInfo; G_APITestDiffList : TStrings = nil; G_SettingInfo2 : T_SettingInfo2; G_FontInfo : T_FontInfo; {$ENDIF} //デフォルト設定値のセット procedure G_pcShortCutInit; //設定データ書き込み procedure G_pcSettingWrite; //設定データ読み込み function G_fnbSettingRead: Boolean; implementation uses {$IFDEF _DEBUG} myDebug, {$ENDIF} {$IFDEF MEGALO_BUG} custom_menu, custom_toolbar, windowstyle, sub_api, {$ENDIF} SysUtils, lang, main; procedure G_pcShortCutInit; //デフォルト設定値のセット var i: Integer; begin //ショートカットキー for i := 0 to High(G_rShortCutKeys) do begin G_rShortCutKeys[i].iKey := G_rINIT_SHORTCUTKEYS[i].iKey; G_rShortCutKeys[i].iCommand := G_rINIT_SHORTCUTKEYS[i].iCommand; end; //マウスジェスチャ G_rMouseGesture.iCommand_Up := G_rINIT_MOUSEGESTURE.iCommand_Up; G_rMouseGesture.iCommand_Down := G_rINIT_MOUSEGESTURE.iCommand_Down; G_rMouseGesture.iCommand_Left := G_rINIT_MOUSEGESTURE.iCommand_Left; G_rMouseGesture.iCommand_Right:= G_rINIT_MOUSEGESTURE.iCommand_Right; end; const FcsSETTINGFILE_EXT = '.bin'; {$IFDEF MEGALO_BUG} FciSETTING_IDENTIFIER_0 = VK_M; //MEGARO_BUG {$ELSE} {$IFDEF LARGE_BUG} FciSETTING_IDENTIFIER_0 = VK_L; //LARGE_BUG {$ELSE} FciSETTING_IDENTIFIER_0 = VK_S; //SMALL_BUG {$ENDIF} {$ENDIF} FciSETTING_IDENTIFIER_1 = VK_B; FciSETTING_IDENTIFIER_2 = VK_U; FciSETTING_IDENTIFIER_3 = VK_G; FciSETTING_VERMAJOR = 1; FciSETTING_VERMINOR = 2; //function G_fnbSettingRead(sSection: String = ''): Boolean; function G_fnbSettingRead: Boolean; //設定値を読み込む。 function _GetCurrentFilePos(hHandle: THandle): DWORD; begin Result := SetFilePointer(hHandle, 0, nil, FILE_CURRENT); end; function _ReadText(hHandle: THandle; iCount: DWORD): AnsiString; //UTF-8; var lp_Buff : PAnsiChar; li_Read : DWORD; begin Result := ''; lp_Buff := AllocMem(iCount +1); //AnsiString(lp_Buff)としても問題ないように try if (ReadFile(hHandle, lp_Buff^, iCount, li_Read, nil)) then begin end; finally FreeMem(lp_Buff); end; end; var lh_Handle : THandle; ls_File : WideString; li_FileSize : DWORD; l_rHeader : T_SettingHeader; li_Count : Word; //Wordである必要あり li_Read : DWORD; //[Copy] i : Integer; lr_CopyHeader : T_CopyFmtHeader; ls_FmtStr : Utf8String; //API Test li_Num : Longint; lp_Buff: PAnsiChar; 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; lh_Handle := CreateFileW( PWideChar(ls_File), //ファイル名 GENERIC_READ, //アクセスモード FILE_SHARE_READ or FILE_SHARE_WRITE , //共有モード nil, //セキュリティ OPEN_EXISTING, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); try li_FileSize := gfniFileSizeGet(lh_Handle); if (li_FileSize < ( SizeOf(l_rHeader) + SizeOf(G_rSettingInfo) + SizeOf(G_rShortCutKeys) + SizeOf(G_rMouseGesture)) ) 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) //'M'or'L'or'S' and (l_rHeader.iIdentifier[1] = FciSETTING_IDENTIFIER_1) //'B' and (l_rHeader.iIdentifier[2] = FciSETTING_IDENTIFIER_2) //'U' and (l_rHeader.iIdentifier[3] = FciSETTING_IDENTIFIER_3) //'G' 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; {$IFDEF MEGALO_BUG} //[メニュー] if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin //隠すメニューの個数を読み込む ReadFile(lh_Handle, li_Count, SizeOf(li_Count), li_Read, nil); if (li_Count > 0) then begin SetLength(G_MenuHideItem, li_Count); //record型はそのまま渡せばよいが配列は先頭のアドレスを渡す必要があるようだ。 //またサイズはSizeOf(G_MenuHideItem)とするとポインターのサイズ(4)が返るので //SizeOf(Word) * li_Countとしなければならない。 ReadFile(lh_Handle, G_MenuHideItem[0], SizeOf(Word) * li_Count, li_Read, nil); end; G_pcSetReadBinMenu; end; //[ツールバー] if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin ReadFile(lh_Handle, li_Count, SizeOf(li_Count), li_Read, nil); if (li_Count > 0) then begin SetLength(G_ToolBarAction, li_Count); //record型はそのまま渡せばよいが配列は先頭のアドレスを渡す必要があるようだ。 //またサイズはSizeOf(G_ToolBarAction)とするとポインターのサイズ(4)が返るので //SizeOf(Word) * li_Countとしなければならない。 ReadFile(lh_Handle, G_ToolBarAction[0], SizeOf(Word) * li_Count, li_Read, nil); end; G_pcSetReadBinToolBar; end; //[コピー] if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin ReadFile(lh_Handle, li_Count, SizeOf(li_Count), li_Read, nil); if (li_Count > 0) then begin for i := 0 to li_Count-1 do begin ReadFile(lh_Handle, lr_CopyHeader, SizeOf(lr_CopyHeader), li_Read, nil); if (li_Read = SizeOf(lr_CopyHeader)) and (lr_CopyHeader.iLength > 0) then begin SetLength(ls_FmtStr, lr_CopyHeader.iLength); ReadFile(lh_Handle, PAnsiChar(ls_FmtStr)^, lr_CopyHeader.iLength, li_Read, nil); if (li_Read = lr_CopyHeader.iLength) then begin G_MainForm.CopyFmt[G_MainForm.Get_IDMToCopyIndex(lr_CopyHeader.iIndex)] := gfnsUtf8ToWide(ls_FmtStr); end; end; end; end; //ウィンドウスタイル if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin FillChar(G_WindowStyleInfo, SizeOf(G_WindowStyleInfo), 0); ReadFile(lh_Handle, G_WindowStyleInfo, SizeOf(G_WindowStyleInfo), li_Read, nil); if (li_Read <> SizeOf(G_WindowStyleInfo)) then begin Exit; end; end; //APIテスト if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin FillChar(G_APITestInfo, SizeOf(G_APITestInfo), 0); ReadFile(lh_Handle, G_APITestInfo, SizeOf(G_APITestInfo), li_Read, nil); if (li_Read <> SizeOf(G_APITestInfo)) then begin Exit; end; end; if (li_FileSize > _GetCurrentFilePos(lh_Handle)) then begin ReadFile(lh_Handle, li_Num, SizeOf(li_Num), li_Read, nil); lp_Buff := nil; try lp_Buff := AllocMem(li_Num +1); ReadFile(lh_Handle, lp_Buff^, li_Num, li_Read, nil); if (G_APITestDiffList = nil) then begin G_APITestDiffList := TStringList.Create; end; G_APITestDiffList.Clear; G_APITestDiffList.Text := AnsiString(lp_Buff); finally FreeMem(lp_Buff); end; end; //設定その2 if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin FillChar(G_SettingInfo2, SizeOf(G_SettingInfo2), 0); ReadFile(lh_Handle, G_SettingInfo2, SizeOf(G_SettingInfo2), li_Read, nil); if (li_Read <> SizeOf(G_SettingInfo2)) then begin Exit; end; end; //フォント if (li_FileSize >= _GetCurrentFilePos(lh_Handle)) then begin FillChar(G_FontInfo.Size, SizeOf(G_FontInfo.Size), 0); ReadFile(lh_Handle, G_FontInfo.Size, SizeOf(G_FontInfo.Size), li_Read, nil); if (li_Read <> SizeOf(G_FontInfo.Size)) then begin Exit; end; G_FontInfo.sName := _ReadText(lh_Handle, G_FontInfo.Size.iFontNameLength); end; end; {$ENDIF} Result := True; end; end; finally CloseHandle(lh_Handle); end; end; procedure G_pcSettingWrite; var li_ErrMode : UINT; ls_File : WideString; lh_Handle : THandle; l_rHeader : T_SettingHeader; li_Write : DWORD; i : Integer; li_Count : Word; //Wordの必要あり lr_CopyHeader : T_CopyFmtHeader; ls_FmtStr : Utf8String; li_Num : Longint; begin li_ErrMode := SetErrorMode(SEM_FAILCRITICALERRORS); try ls_File := gfnsFileExtChange(gfnsExeNameGet, FcsSETTINGFILE_EXT); lh_Handle := CreateFileW( PWideChar(ls_File), //ファイル名 GENERIC_WRITE, //アクセスモード 0, //共有モード nil, //セキュリティ CREATE_ALWAYS, //作成方法 FILE_ATTRIBUTE_NORMAL, //ファイル属性 0 //テンプレート ); 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); {$IFDEF MEGALO_BUG} //メニュー G_fniWriteBinMenu(lh_Handle); //ツールバー G_fniWriteBinToolBar(lh_Handle); //[Copy] li_Count := 0; for i := 0 to G_ciFMTCOUNT do begin if (G_MainForm.CopyFmt[i] <> G_MainForm.InitCopyFmt[i]) then begin Inc(li_Count); end; end; WriteFile(lh_Handle, li_Count, SizeOf(li_Count), li_Write, nil); if (li_Count > 0) then begin for i := 0 to G_ciFMTCOUNT do begin if (G_MainForm.CopyFmt[i] <> G_MainForm.InitCopyFmt[i]) then begin ls_FmtStr := gfnsWideToUtf8(G_MainForm.CopyFmt[i]); lr_CopyHeader.iIndex := G_MainForm.Get_CopyIndexToIDM(i); lr_CopyHeader.iLength := Length(ls_FmtStr); WriteFile(lh_Handle, lr_CopyHeader, SizeOf(lr_CopyHeader), li_Write, nil); WriteFile(lh_Handle, PAnsiChar(ls_FmtStr)^, lr_CopyHeader.iLength, li_Write, nil); end; end; end; //スタイル詳細 if (gfnbFormExists(App_BugsEyeWindowStyle)) then begin FillChar(G_WindowStyleInfo, SizeOf(G_WindowStyleInfo), 0); G_WindowStyleInfo.rcRect := App_BugsEyeWindowStyle.BoundsRect; G_WindowStyleInfo.iHintHeight := App_BugsEyeWindowStyle.Memo_Hint.Height; if (App_BugsEyeWindowStyle.chkButton.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkButton.Tag); if (App_BugsEyeWindowStyle.chkEdit.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkEdit.Tag); if (App_BugsEyeWindowStyle.chkStatic.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkStatic.Tag); if (App_BugsEyeWindowStyle.chkComboBox.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkComboBox.Tag); if (App_BugsEyeWindowStyle.chkListBox.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkListBox.Tag); if (App_BugsEyeWindowStyle.chkDialog.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkDialog.Tag); if (App_BugsEyeWindowStyle.chkScrollBar.Checked) then G_WindowStyleInfo.iCheckFlag := G_WindowStyleInfo.iCheckFlag or DWORD(App_BugsEyeWindowStyle.chkScrollBar.Tag); end; WriteFile(lh_Handle, G_WindowStyleInfo, SizeOf(G_WindowStyleInfo), li_Write, nil); //APIテスト if (gfnbFormExists(App_BugsEyeAPITest)) then begin FillChar(G_APITestInfo, SizeOf(G_APITestInfo), 0); G_APITestInfo.rcRect := App_BugsEyeAPITest.BoundsRect; G_APITestInfo.iHintHeight := App_BugsEyeAPITest.Memo_Hint.Height; G_APITestInfo.iIndex := App_BugsEyeAPITest.ComboBox_APIList.ItemIndex; end; WriteFile(lh_Handle, G_APITestInfo, SizeOf(G_APITestInfo), li_Write, nil); //APIテスト項目カスタマイズ if (G_APITestDiffList <> nil) then begin li_Num := Length(G_APITestDiffList.Text); WriteFile(lh_Handle, li_Num, SizeOf(Longint), li_Write, nil); WriteFile(lh_Handle, PAnsiChar(G_APITestDiffList.Text)^, Length(G_APITestDiffList.Text), li_Write, nil); end else begin //項目数0を書き込まないといけない li_Num := 0; WriteFile(lh_Handle, li_Num, SizeOf(Longint), li_Write, nil); end; //設定その2 WriteFile(lh_Handle, G_SettingInfo2, SizeOf(G_SettingInfo2), li_Write, nil); //フォント WriteFile(lh_Handle, G_FontInfo.Size, SizeOf(G_FontInfo.Size), li_Write, nil); if (li_Write = SizeOf(G_FontInfo.Size)) then begin WriteFile(lh_Handle, PAnsiChar(G_FontInfo.sName)^, G_FontInfo.Size.iFontNameLength, li_Write, nil); end; {$ENDIF} finally CloseHandle(lh_Handle); end; end; except end; SetErrorMode(li_ErrMode); end; initialization FillChar(G_rSettingInfo, SizeOf(G_rSettingInfo), 0); end.