6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
10 TSakuraAPI = class(TComponent)
15 FOnRegisterAPI: TNotifyEvent;
16 procedure SetTargetHWnd(const Value: THandle);
17 procedure SetOnRegisterAPI(const Value: TNotifyEvent);
19 { Protected
\90é
\8c¾ }
22 constructor Create(AOwner: TComponent); override;
23 destructor Destroy; override;
24 procedure Loaded; override;
26 function SendAPI(Mes: cardinal; wParam: integer; lParam: integer): integer;
27 function ExecuteRemakeMenu: integer;
28 function ExecuteRewriteFMO: integer;
29 function GetHeadCollisionRectSakura: TRect;
30 function GetFaceCollisionRectSakura: TRect;
31 function GetBustCollisionRectSakura: TRect;
32 function GetCenterPointSakura: TPoint;
33 function GetHeadCollisionRectKero: TRect;
34 function GetFaceCollisionRectKero: TRect;
35 function GetBustCollisionRectKero: TRect;
36 function GetCenterPointKero: TPoint;
37 function GetGhostState: integer;
38 function GetAbsoluteKinokoFieldCenterPointSakura: TPoint;
39 function GetAbsoluteKinokoFieldCenterPointKero: TPoint;
40 function GetProcessID: Cardinal;
41 function GetSharedMemory(const Slot: integer = -1): pointer;
42 function NotifyEvent: integer;
44 { Published
\90é
\8c¾ }
45 property WM_SAKURAAPI: integer read FMes;
46 property TargetHWnd: THandle read FTargetHWnd write SetTargetHWnd;
47 property OnRegisterAPI: TNotifyEvent read FOnRegisterAPI write SetOnRegisterAPI;
56 RegisterComponents('Samples', [TSakuraAPI]);
61 constructor TSakuraAPI.Create;
66 destructor TSakuraAPI.Destroy;
72 function TSakuraAPI.ExecuteRemakeMenu: integer;
74 Result := SendAPI(SA_EXECUTEREMAKEMENU, 0, 0);
77 function TSakuraAPI.ExecuteRewriteFMO: integer;
79 Result := SendAPI(SA_EXECUTEREWRITEFMO, 1, 0);
82 function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointKero: TPoint;
84 Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 0);
85 Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 1);
88 function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointSakura: TPoint;
90 Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 0);
91 Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 1);
94 function TSakuraAPI.GetBustCollisionRectKero: TRect;
96 Result.Left := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 0);
97 Result.Top := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 1);
98 Result.Right := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 2);
99 Result.Bottom := SendAPI(SA_GETBUSTCOLLISIONRECTKERO, 135, 3);
102 function TSakuraAPI.GetBustCollisionRectSakura: TRect;
104 Result.Left := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 0);
105 Result.Top := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 1);
106 Result.Right := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 2);
107 Result.Bottom := SendAPI(SA_GETBUSTCOLLISIONRECTSAKURA, 130, 3);
110 function TSakuraAPI.GetCenterPointKero: TPoint;
112 Result.X := SendAPI(SA_GETCENTERPOINTKERO, 136, 0);
113 Result.Y := SendAPI(SA_GETCENTERPOINTKERO, 136, 1);
116 function TSakuraAPI.GetCenterPointSakura: TPoint;
118 Result.X := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 0);
119 Result.Y := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 1);
122 function TSakuraAPI.GetFaceCollisionRectKero: TRect;
124 Result.Left := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 0);
125 Result.Top := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 1);
126 Result.Right := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 2);
127 Result.Bottom := SendAPI(SA_GETFACECOLLISIONRECTKERO, 134, 3);
130 function TSakuraAPI.GetFaceCollisionRectSakura: TRect;
132 Result.Left := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 0);
133 Result.Top := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 1);
134 Result.Right := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 2);
135 Result.Bottom := SendAPI(SA_GETFACECOLLISIONRECTSAKURA, 129, 3);
138 function TSakuraAPI.GetHeadCollisionRectKero: TRect;
140 Result.Left := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 0);
141 Result.Top := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 1);
142 Result.Right := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 2);
143 Result.Bottom := SendAPI(SA_GETHEADCOLLISIONRECTKERO, 133, 3);
146 function TSakuraAPI.GetHeadCollisionRectSakura: TRect;
148 Result.Left := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 0);
149 Result.Top := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 1);
150 Result.Right := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 2);
151 Result.Bottom := SendAPI(SA_GETHEADCOLLISIONRECTSAKURA, 128, 3);
154 function TSakuraAPI.GetGhostState: integer;
156 Result := SendAPI(SA_GETGHOSTSTATE, 140, 0);
159 function TSakuraAPI.GetProcessID: Cardinal;
161 Result := SendAPI(SA_GETPROCESSID, 138, 0);
164 function TSakuraAPI.GetSharedMemory(const Slot: integer = -1): pointer;
166 Result := pointer(SendAPI(SA_GETSHAREDMEMORY, 139, Slot));
169 function TSakuraAPI.SendAPI(Mes: cardinal; wParam: integer;
170 lParam: integer): integer;
172 Result := SendMessage(TargetHWnd, Mes, wParam, lParam);
175 procedure TSakuraAPI.SetTargetHWnd(const Value: THandle);
177 FTargetHWnd := Value;
180 function TSakuraAPI.NotifyEvent: integer;
182 Result := SendAPI(SA_NOTIFYEVENT, 256, 0);
185 procedure TSakuraAPI.SetOnRegisterAPI(const Value: TNotifyEvent);
187 FOnRegisterAPI := Value;
190 procedure TSakuraAPI.Loaded;
193 if csDesigning in ComponentState then Exit;
194 FMes := RegisterWindowMessage('Sakura');
196 raise Exception.Create('RegisterWindowMessage
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½')
198 if Assigned(FOnRegisterAPI) then
199 FOnRegisterAPI(Self);