OSDN Git Service

Version1.86→1.00(新規)
[winbottle/winbottle.git] / sakurasuite / SakuraAPI.pas
1 unit SakuraAPI;
2
3 interface
4
5 uses
6   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
7   Sakura;
8
9 type
10   TSakuraAPI = class(TComponent)
11   private
12     { Private \90é\8c¾ }
13     FMes: integer;
14     FTargetHWnd: THandle;
15     FOnRegisterAPI: TNotifyEvent;
16     procedure SetTargetHWnd(const Value: THandle);
17     procedure SetOnRegisterAPI(const Value: TNotifyEvent);
18   protected
19     { Protected \90é\8c¾ }
20   public
21     { Public \90é\8c¾ }
22     constructor Create(AOwner: TComponent); override;
23     destructor Destroy; override;
24     procedure Loaded; override;
25     //
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;
43   published
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;
48   end;
49
50 procedure Register;
51
52 implementation
53
54 procedure Register;
55 begin
56   RegisterComponents('Samples', [TSakuraAPI]);
57 end;
58
59 { TSakuraAPI }
60
61 constructor TSakuraAPI.Create;
62 begin
63   inherited;
64 end;
65
66 destructor TSakuraAPI.Destroy;
67 begin
68   inherited;
69   //
70 end;
71
72 function TSakuraAPI.ExecuteRemakeMenu: integer;
73 begin
74   Result := SendAPI(SA_EXECUTEREMAKEMENU, 0, 0);
75 end;
76
77 function TSakuraAPI.ExecuteRewriteFMO: integer;
78 begin
79   Result := SendAPI(SA_EXECUTEREWRITEFMO, 1, 0);
80 end;
81
82 function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointKero: TPoint;
83 begin
84   Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 0);
85   Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTKERO, 137, 1);
86 end;
87
88 function TSakuraAPI.GetAbsoluteKinokoFieldCenterPointSakura: TPoint;
89 begin
90   Result.X := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 0);
91   Result.Y := SendAPI(SA_GETABSOLUTEKINOKOFIELDCENTERPOINTSAKURA, 132, 1);
92 end;
93
94 function TSakuraAPI.GetBustCollisionRectKero: TRect;
95 begin
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);
100 end;
101
102 function TSakuraAPI.GetBustCollisionRectSakura: TRect;
103 begin
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);
108 end;
109
110 function TSakuraAPI.GetCenterPointKero: TPoint;
111 begin
112   Result.X := SendAPI(SA_GETCENTERPOINTKERO, 136, 0);
113   Result.Y := SendAPI(SA_GETCENTERPOINTKERO, 136, 1);
114 end;
115
116 function TSakuraAPI.GetCenterPointSakura: TPoint;
117 begin
118   Result.X := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 0);
119   Result.Y := SendAPI(SA_GETCENTERPOINTSAKURA, 131, 1);
120 end;
121
122 function TSakuraAPI.GetFaceCollisionRectKero: TRect;
123 begin
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);
128 end;
129
130 function TSakuraAPI.GetFaceCollisionRectSakura: TRect;
131 begin
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);
136 end;
137
138 function TSakuraAPI.GetHeadCollisionRectKero: TRect;
139 begin
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);
144 end;
145
146 function TSakuraAPI.GetHeadCollisionRectSakura: TRect;
147 begin
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);
152 end;
153
154 function TSakuraAPI.GetGhostState: integer;
155 begin
156   Result := SendAPI(SA_GETGHOSTSTATE, 140, 0);
157 end;
158
159 function TSakuraAPI.GetProcessID: Cardinal;
160 begin
161   Result := SendAPI(SA_GETPROCESSID, 138, 0);
162 end;
163
164 function TSakuraAPI.GetSharedMemory(const Slot: integer = -1): pointer;
165 begin
166   Result := pointer(SendAPI(SA_GETSHAREDMEMORY, 139, Slot));
167 end;
168
169 function TSakuraAPI.SendAPI(Mes: cardinal; wParam: integer;
170   lParam: integer): integer;
171 begin
172   Result := SendMessage(TargetHWnd, Mes, wParam, lParam);
173 end;
174
175 procedure TSakuraAPI.SetTargetHWnd(const Value: THandle);
176 begin
177   FTargetHWnd := Value;
178 end;
179
180 function TSakuraAPI.NotifyEvent: integer;
181 begin
182   Result := SendAPI(SA_NOTIFYEVENT, 256, 0);
183 end;
184
185 procedure TSakuraAPI.SetOnRegisterAPI(const Value: TNotifyEvent);
186 begin
187   FOnRegisterAPI := Value;
188 end;
189
190 procedure TSakuraAPI.Loaded;
191 begin
192   inherited;
193   if csDesigning in ComponentState then Exit;
194   FMes := RegisterWindowMessage('Sakura');
195   if FMes = 0 then
196     raise Exception.Create('RegisterWindowMessage\82É\8e¸\94s\82µ\82Ü\82µ\82½')
197   else
198     if Assigned(FOnRegisterAPI) then
199       FOnRegisterAPI(Self);
200 end;
201
202 end.