Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/ExternalBoardManager.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.33 - (show annotations) (download) (as text)
Thu Jul 6 15:22:41 2006 UTC (17 years, 9 months ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_56_0_715, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_53_0_671, v1_60_0_788, v1_60_0_789, v1_54_0_677, v1_54_0_676, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_54_0_678, v1_60_0_786, v1_60_0_787, v1_56_0_707, v1_59_0_767, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_720, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_57_0_719, v1_57_0_718, v1_56_0_716, v1_54_0_687, v1_56_0_710, v1_56_0_711, v1_56_1_717, v1_56_1_716, v1_54_0_688, v1_54_0_689, v1_54_0_684, v1_54_0_685, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_53_0_665, v1_53_0_667, v1_53_0_666, v1_53_0_669, v1_53_0_668, v1_55_0_692, v1_55_0_693, v1_55_0_696, v1_55_0_697, v1_55_0_694, v1_55_0_695, v1_54_1_691, v1_56_2_724, v1_56_2_722, v1_55_1_697, v1_56_0_714, v1_53_0_672, v1_53_0_670, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_54_0_686, v1_54_0_680, v1_54_0_681, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_56_0_712, v1_62_0_803, v1_62_0_802, v1_56_0_713, v1_62_0_809, v1_54_0_682, v1_56_0_721, v1_54_0_683, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_54_0_679, v1_59_2_785, marged_bRESPOPUP, v1_54_0_675, v1_56_0_706, root-of-Bb53, v1_54_0_674, v1_60_1_793, v1_54_0_690, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_56_0_709, v1_57_0_744, v1_56_0_708, v1_61_0_800, v1_53_1_673, v1_56_0_699, v1_56_0_698, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb56, Bb55, Bb53, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58, bRESPOPUP, bListSU, Bb54
Changes since 1.32: +1 -1 lines
File MIME type: text/x-pascal
コヌナャイス

1 unit ExternalBoardManager;
2
3 interface
4
5 uses
6 Windows, Classes, SysUtils,
7 IdHTTP, IdComponent, IdGlobal, IdException,
8 ExternalBoardPlugInMain, ExternalFilePath, ExternalThreadItem, ExternalBoardItem;
9
10 type
11 // =========================================================================
12 // 繝励Λ繧ー繧、繝ウ繧堤ョ。逅?☆繧 TBoardPlugin 繧ッ繝ゥ繧ケ
13 // =========================================================================
14 TBoardPlugIn = class( TObject )
15 private
16 FFilePath : string; // 繝励Λ繧ー繧、繝ウ繧堤、コ縺吶ヱ繧ケ
17 FModule : HMODULE; // 繝励Λ繧ー繧、繝ウ縺ョ繝「繧ク繝・繝シ繝ォ繝上Φ繝峨Ν
18
19 FLoad : TOnLoad;
20 FVersionInfo : TOnVersionInfo;
21 FAcceptURL : TOnAcceptURL;
22 FExtractBoardURL : TOnExtractBoardURL;
23 FPlugInMenu : TOnPlugInMenu;
24
25 FCreateThreadItem : TThreadItemCreate;
26 FDisposeThreadItem : TThreadItemDispose;
27 FDownloadThread : TThreadItemOnDownload;
28 FWriteThread : TThreadItemOnWrite;
29 FGetRes : TThreadItemOnGetRes;
30 FGetDat : TThreadItemOnGetDat;
31 FGetHeader : TThreadItemOnGetHeader;
32 FGetFooter : TThreadItemOnGetFooter;
33 FGetBoardURL : TThreadItemOnGetBoardURL;
34
35 FCreateBoardItem : TBoardItemCreate;
36 FDisposeBoardItem : TBoardItemDispose;
37 FDownloadBoard : TBoardItemOnDownload;
38 FCreateThread : TBoardItemOnCreateThread;
39 FEnumThread : TBoardItemOnEnumThread;
40 FFileName2ThreadURL : TBoardItemOnFileName2ThreadURL;
41
42 public
43 // 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ
44 constructor Create;
45 // 繝励Λ繧ー繧、繝ウ縺ョ繝代せ繧呈欠螳壹@縺ヲ菴懈?
46 constructor CreateFromPath( inPath : string );
47 // 繝励Λ繧ー繧、繝ウ蜷阪r謖?ョ壹@縺ヲ菴懈?
48 constructor CreateFromName( inName : string );
49 // 繝「繧ク繝・繝シ繝ォ繝上Φ繝峨Ν繧呈欠螳壹@縺ヲ菴懈?
50 constructor CreateFromModule( inModule : HMODULE );
51 // 繝?せ繝医Λ繧ッ繧ソ
52 destructor Destroy; override;
53
54 // 繝励Λ繧ー繧、繝ウ縺ョ繝代せ繧呈欠螳壹@縺ヲ繝ュ繝シ繝?/span>
55 procedure LoadFromPath( inPath : string );
56 // 繝励Λ繧ー繧、繝ウ蜷阪r謖?ョ壹@縺ヲ繝ュ繝シ繝?/span>
57 procedure LoadFromName( inName : string );
58 // 繝「繧ク繝・繝シ繝ォ繝上Φ繝峨Ν繧呈欠螳壹@縺ヲ繝ュ繝シ繝?/span>
59 procedure LoadFromModule( inModule : HMODULE );
60
61 //===== PlugInMain 髢「騾」
62 // 繝励Λ繧ー繧、繝ウ縺?豁」縺励¥)繝ュ繝シ繝峨&繧後◆
63 procedure Loaded;
64 // 繝舌?繧ク繝ァ繝ウ諠??ア
65 procedure VersionInfo( var outAgent : string;
66 var outMajor : DWORD; var outMinor : DWORD;
67 var outRelease : string; var outRevision : DWORD );
68 // 謖?ョ壹@縺 URL 繧偵%縺ョ繝励Λ繧ー繧、繝ウ縺ァ蜿励¢莉倥¢繧九°縺ゥ縺?°
69 function AcceptURL( inURL : string ) : TAcceptType;
70 // URL縺九i菴ソ縺医kBoard縺ョURL繧貞ー弱″蜃コ縺?/span>
71 function ExtractBoardURL( inURL : string ): string;
72 // 繝。繝九Η繝シ繝上Φ繝峨Λ
73 procedure PlugInMenu( inHandle : HMENU );
74
75 //===== TThreadItem 髢「騾」
76 // TThreadItem 縺檎函謌舌&繧後◆
77 procedure CreateThreadItem( threadItem : DWORD );
78 // TThreadItem 縺檎?エ譽?&繧後◆
79 procedure DisposeThreadItem( threadItem : DWORD );
80 // 繝?繧ヲ繝ウ繝ュ繝シ繝峨r謖?、コ
81 function DownloadThread( threadItem : DWORD ) : TDownloadState;
82 // 譖ク縺崎セシ縺ソ繧呈欠遉コ
83 function WriteThread( threadItem : DWORD; inName : string; inMail : string; inMessage : string ) : TDownloadState;
84 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k html 繧定ヲ∵ア?/span>
85 function GetRes( threadItem : DWORD; inNo : DWORD ) : string;
86 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k Dat 繧定ヲ∵ア?/span>
87 function GetDat( threadItem : DWORD; inNo : DWORD ) : string;
88 // 繧ケ繝ャ繝?ラ縺ョ繝倥ャ繝? html 繧定ヲ∵ア?/span>
89 function GetHeader( threadItem : DWORD; inOptionalHeader : string ) : string;
90 // 繧ケ繝ャ繝?ラ縺ョ繝輔ャ繧ソ html 繧定ヲ∵ア?/span>
91 function GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string;
92 // 縺薙? ThreadItem 縺悟ア槭☆繧区攸縺ョ URL 繧定ヲ∵ア?/span>
93 function GetBoardURL( threadItem : DWORD ) : string;
94
95 //===== TBoardItem 髢「騾」
96 // TBoard 縺檎函謌舌&繧後◆
97 procedure CreateBoardItem( boardItem : DWORD );
98 // TBoardItem 縺檎?エ譽?&繧後◆
99 procedure DisposeBoardItem( boardItem : DWORD );
100 // 繝?繧ヲ繝ウ繝ュ繝シ繝峨r謖?、コ
101 function DownloadBoard( boardItem : DWORD ) : TDownloadState;
102 // 繧ケ繝ャ遶九※繧呈欠遉コ
103 function CreateThread( boardItem : DWORD; inSubject : string; inName : string; inMail : string; inMessage : string ) : TDownloadState;
104 // 縺薙?譚ソ縺ォ菫晄怏縺励※縺?k繧ケ繝ャ繧貞?謖?/span>
105 procedure EnumThread( boardItem : DWORD; inCallBack : TBoardItemEnumThreadCallBack );
106 // 繝輔ぃ繧、繝ォ蜷阪°繧峨せ繝ャ繝?ラ縺ョ URL 繧定ヲ∵ア?/span>
107 function FileName2ThreadURL( boardItem : DWORD; inFileName : string ) : string;
108
109 private
110 procedure LoadPlugInAPI;
111
112 public
113 property FilePath : string read FFilePath;
114 property Module : HMODULE read FModule;
115 end;
116
117 var
118 OnWork : TWorkEvent;
119 OnWorkBegin : TWorkBeginEvent;
120 OnWorkEnd : TWorkEndEvent;
121
122 BoardPlugIns : array of TBoardPlugIn;
123
124 procedure InitializeBoardPlugIns;
125
126 implementation
127
128 uses GikoSystem, BoardGroup;
129
130 // *************************************************************************
131 // BoardPlugin 繝輔か繝ォ繝?縺ォ縺ゅk繝励Λ繧ー繧、繝ウ繧貞?縺ヲ繝ュ繝シ繝?/span>
132 // *************************************************************************
133 procedure InitializeBoardPlugIns;
134 var
135 i, bound : Integer;
136 pluginNames : TStringList;
137 begin
138
139 pluginNames := TStringList.Create;
140 try
141 //GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False );
142 pluginNames.BeginUpdate;
143 GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*.dll', pluginNames, False );
144 pluginNames.EndUpdate;
145 SetLength( BoardPlugIns, pluginNames.Count );
146 //
147 SetLength( BoardGroups, pluginNames.Count + 1 );
148 BoardGroups[0] := TBoardGroup.Create;
149 BoardGroups[0].Sorted := true;
150 BoardGroups[0].BoardPlugIn := nil;
151 //
152 bound := pluginNames.Count - 1;
153 for i := 0 to bound do begin
154 try
155 BoardPlugIns[ i ] := TBoardPlugIn.CreateFromName( pluginNames.Strings[ i ] );
156 BoardPlugIns[ i ].Loaded;
157 BoardGroups[ i + 1 ] := TBoardGroup.Create;
158 BoardGroups[ i + 1 ].Sorted := True;
159 BoardGroups[ i + 1 ].BoardPlugIn := BoardPlugIns[ i ];
160 except end;
161 end;
162 finally
163 pluginNames.Free;
164 end;
165
166 end;
167
168
169
170 // =========================================================================
171 // 繝励Λ繧ー繧、繝ウ繧堤ョ。逅?☆繧 TBoardPlugin 繧ッ繝ゥ繧ケ
172 // =========================================================================
173
174 // *************************************************************************
175 // 繧ウ繝ウ繧ケ繝医Λ繧ッ繧ソ
176 // *************************************************************************
177 constructor TBoardPlugIn.Create;
178 begin
179
180 inherited;
181
182 FLoad := nil;
183 FVersionInfo := nil;
184 FAcceptURL := nil;
185 FExtractBoardURL := nil;
186 FPlugInMenu := nil;
187
188 FCreateThreadItem := nil;
189 FDisposeThreadItem := nil;
190 FDownloadThread := nil;
191 FWriteThread := nil;
192 FGetRes := nil;
193 FGetDat := nil;
194 FGetHeader := nil;
195 FGetFooter := nil;
196
197 FCreateBoardItem := nil;
198 FDisposeBoardItem := nil;
199 FDownloadBoard := nil;
200 FCreateThread := nil;
201 FEnumThread := nil;
202 FFileName2ThreadURL := nil;
203
204 end;
205
206 // *************************************************************************
207 // 繝励Λ繧ー繧、繝ウ縺ョ繝代せ繧呈欠螳壹@縺ヲ菴懈?
208 // *************************************************************************
209 constructor TBoardPlugIn.CreateFromPath(
210 inPath : string
211 );
212 begin
213
214 Create;
215
216 LoadFromPath( inPath );
217
218 end;
219
220 // *************************************************************************
221 // 繝励Λ繧ー繧、繝ウ蜷阪r謖?ョ壹@縺ヲ菴懈?
222 // *************************************************************************
223 constructor TBoardPlugIn.CreateFromName(
224 inName : string
225 );
226 begin
227
228 Create;
229
230 LoadFromName( inName );
231
232 end;
233
234 // *************************************************************************
235 // 繝「繧ク繝・繝シ繝ォ繝上Φ繝峨Ν繧呈欠螳壹@縺ヲ菴懈?
236 // *************************************************************************
237 constructor TBoardPlugIn.CreateFromModule(
238 inModule : HMODULE
239 );
240 begin
241
242 inherited Create;
243
244 LoadFromModule( inModule );
245
246 end;
247
248 // *************************************************************************
249 // 繝?せ繝医Λ繧ッ繧ソ
250 // *************************************************************************
251 destructor TBoardPlugIn.Destroy;
252 begin
253
254 FreeLibrary( FModule );
255
256 inherited;
257
258 end;
259
260 // *************************************************************************
261 // 繝励Λ繧ー繧、繝ウ縺ョ繝代せ繧呈欠螳壹@縺ヲ繝ュ繝シ繝?/span>
262 // *************************************************************************
263 procedure TBoardPlugIn.LoadFromPath(
264 inPath : string
265 );
266 begin
267
268 FFilePath := inPath;
269 if FileExists( inPath ) then
270 FModule := LoadLibrary( PChar( inPath ) )
271 else if FileExists( inPath + '.dll' ) then
272 FModule := LoadLibrary( PChar( inPath + '.dll' ) );
273
274 LoadPlugInAPI;
275
276 end;
277
278 // *************************************************************************
279 // 繝励Λ繧ー繧、繝ウ蜷阪r謖?ョ壹@縺ヲ繝ュ繝シ繝?/span>
280 // *************************************************************************
281 procedure TBoardPlugIn.LoadFromName(
282 inName : string
283 );
284 begin
285
286 LoadFromPath( GikoSys.Setting.GetBoardPlugInDir + inName );
287
288 end;
289
290 // *************************************************************************
291 // 繝「繧ク繝・繝シ繝ォ繝上Φ繝峨Ν繧呈欠螳壹@縺ヲ繝ュ繝シ繝?/span>
292 // *************************************************************************
293 procedure TBoardPlugIn.LoadFromModule(
294 inModule : HMODULE
295 );
296 var
297 tmp : array [0..MAX_PATH] of Char;
298 begin
299
300 GetModuleFileName( inModule, tmp, SizeOf( tmp ) );
301 FFilePath := tmp;
302 FModule := inModule;
303
304 LoadPlugInAPI;
305
306 end;
307
308 // *************************************************************************
309 // 繝励Λ繧ー繧、繝ウ縺?豁」縺励¥)繝ュ繝シ繝峨&繧後◆
310 // *************************************************************************
311 procedure TBoardPlugIn.Loaded;
312 begin
313
314 if Assigned( FLoad ) then
315 FLoad( DWORD( Self ) );
316
317 end;
318
319 // *************************************************************************
320 // 繝舌?繧ク繝ァ繝ウ諠??ア
321 // *************************************************************************
322 procedure TBoardPlugIn.VersionInfo(
323 var outAgent : string; // 繝舌?繧ク繝ァ繝ウ繧剃ク?蛻?性縺セ縺ェ縺?エ皮イ九↑蜷咲ァー
324 var outMajor : DWORD; // 繝。繧ク繝」繝シ繝舌?繧ク繝ァ繝ウ
325 var outMinor : DWORD; // 繝槭う繝翫?繝舌?繧ク繝ァ繝ウ
326 var outRelease : string; // 繝ェ繝ェ繝シ繧ケ谿オ髫主錐
327 var outRevision : DWORD // 繝ェ繝薙ず繝ァ繝ウ繝翫Φ繝舌?
328 );
329 var
330 agent : PChar;
331 release : PChar;
332 begin
333
334 if Assigned( FVersionInfo ) then begin
335 FVersionInfo( agent, outMajor, outMinor, release, outRevision );
336 outAgent := string( agent );
337 outRelease := string( release );
338 DisposeResultString( agent );
339 DisposeResultString( release );
340 end;
341
342 end;
343
344 // *************************************************************************
345 // 謖?ョ壹@縺 URL 繧偵%縺ョ繝励Λ繧ー繧、繝ウ縺ァ蜿励¢莉倥¢繧九°縺ゥ縺?°
346 // *************************************************************************
347 function TBoardPlugIn.AcceptURL(
348 inURL : string
349 ) : TAcceptType;
350 begin
351
352 if Assigned( FAcceptURL ) then
353 Result := FAcceptURL( PChar( inURL ) )
354 else
355 Result := atNoAccept;
356
357 end;
358 // *************************************************************************
359 // 謖?ョ壹@縺 URL 縺九i菴ソ縺医kBoard縺ョURL繧貞ー弱″蜃コ縺?/span>
360 // *************************************************************************
361 function TBoardPlugIn.ExtractBoardURL(
362 inURL : string
363 ) : string;
364 var
365 URL : PChar;
366 // tmp : string;
367 begin
368 Result := inURL;
369 if Assigned( FExtractBoardURL ) then begin
370 FExtractBoardURL( PChar(inURL), URL);
371 Result := string(URL);
372 DisposeResultString(URL);
373 end;
374 end;
375 // *************************************************************************
376 // 繝。繝九Η繝シ繝上Φ繝峨Λ
377 // *************************************************************************
378 procedure TBoardPlugIn.PlugInMenu(
379 inHandle : HMENU // 繝。繝九Η繝シ繝上Φ繝峨Ν
380 );
381 begin
382
383 if Assigned( FPlugInMenu ) then
384 FPlugInMenu( inHandle );
385
386 end;
387
388 // *************************************************************************
389 // TThreadItem 縺檎函謌舌&繧後◆
390 // *************************************************************************
391 procedure TBoardPlugIn.CreateThreadItem(
392 threadItem : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
393 );
394 begin
395
396 if Assigned( FCreateThreadItem ) then
397 FCreateThreadItem( threadItem );
398
399 end;
400
401 // *************************************************************************
402 // TThreadItem 縺檎?エ譽?&繧後◆
403 // *************************************************************************
404 procedure TBoardPlugIn.DisposeThreadItem(
405 threadItem : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
406 );
407 begin
408
409 if Assigned( FDisposeThreadItem ) then
410 FDisposeThreadItem( threadItem );
411
412 end;
413
414 // *************************************************************************
415 // 繝?繧ヲ繝ウ繝ュ繝シ繝峨r謖?、コ
416 // *************************************************************************
417 function TBoardPlugIn.DownloadThread(
418 threadItem : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
419 ) : TDownloadState;
420 begin
421
422 if Assigned( FDownloadThread ) then
423 Result := FDownloadThread( threadItem )
424 else
425 Result := dsError;
426
427 end;
428
429 // *************************************************************************
430 // 譖ク縺崎セシ縺ソ繧呈欠遉コ
431 // *************************************************************************
432 function TBoardPlugIn.WriteThread(
433 threadItem : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
434 inName : string; // 蜷榊燕(繝上Φ繝峨Ν)
435 inMail : string; // 繝。繝シ繝ォ繧「繝峨Ξ繧ケ
436 inMessage : string // 譛ャ譁?/span>
437 ) : TDownloadState; // 譖ク縺崎セシ縺ソ縺梧?蜉溘@縺溘°縺ゥ縺?°
438 begin
439
440 if Assigned( FWriteThread ) then
441 Result := FWriteThread( threadItem, PChar( inName ), PChar( inMail ), PChar( inMessage ) )
442 else
443 Result := dsError;
444
445 end;
446
447 // *************************************************************************
448 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k html 繧定ヲ∵ア?/span>
449 // *************************************************************************
450 function TBoardPlugIn.GetRes(
451 threadItem : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
452 inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
453 ) : string; // 陦ィ遉コ縺吶k HTML
454 var
455 tmp : PChar;
456 begin
457
458 if Assigned( FGetRes ) then begin
459 tmp := FGetRes( threadItem, inNo );
460 try
461 Result := string( tmp );
462 finally
463 DisposeResultString( tmp );
464 end;
465 end;
466
467 end;
468
469 // *************************************************************************
470 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k Dat 繧定ヲ∵ア?/span>
471 // *************************************************************************
472 function TBoardPlugIn.GetDat(
473 threadItem : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
474 inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
475 ) : string; // ?偵■繧?s縺ュ繧九?dat蠖「蠑?/span>
476 var
477 tmp : PChar;
478 begin
479
480 if Assigned( FGetDat ) then begin
481 tmp := FGetDat( threadItem, inNo );
482 try
483 Result := string( tmp );
484 finally
485 DisposeResultString(tmp); end;
486 end;
487
488 end;
489
490 // *************************************************************************
491 // 繧ケ繝ャ繝?ラ縺ョ繝倥ャ繝? html 繧定ヲ∵ア?/span>
492 // *************************************************************************
493 function TBoardPlugIn.GetHeader(
494 threadItem : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
495 inOptionalHeader : string // 霑ス蜉?縺ョ繝倥ャ繝?
496 ) : string; // 謨エ蠖「縺輔l縺 HTML
497 var
498 tmp : PChar;
499 begin
500
501 if Assigned( FGetHeader ) then begin
502 tmp := FGetHeader( threadItem, PChar( inOptionalHeader ) );
503 try
504 Result := string( tmp );
505 finally
506 DisposeResultString( tmp );
507 end;
508 end;
509
510 end;
511
512 // *************************************************************************
513 // 繧ケ繝ャ繝?ラ縺ョ繝輔ャ繧ソ html 繧定ヲ∵ア?/span>
514 // *************************************************************************
515 function TBoardPlugIn.GetFooter(
516 threadItem : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
517 inOptionalFooter : string // 霑ス蜉?縺ョ繝輔ャ繧ソ
518 ) : string; // 謨エ蠖「縺輔l縺 HTML
519 var
520 tmp : PChar;
521 begin
522
523 if Assigned( FGetFooter ) then begin
524 tmp := FGetFooter( threadItem, PChar( inOptionalFooter ) );
525 Result := string( tmp );
526 DisposeResultString( tmp );
527 end;
528
529 end;
530
531 // *************************************************************************
532 // 縺薙? ThreadItem 縺悟ア槭☆繧区攸縺ョ URL 繧定ヲ∵ア?/span>
533 // *************************************************************************
534 function TBoardPlugIn.GetBoardURL(
535 threadItem : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
536 ) : string;
537 var
538 tmp : PChar;
539 begin
540
541 if Assigned( FGetBoardURL ) then begin
542 tmp := FGetBoardURL( threadItem );
543 Result := string( tmp );
544 DisposeResultString( tmp );
545 end;
546
547 end;
548
549 // *************************************************************************
550 // TBoardItem 縺檎函謌舌&繧後◆
551 // *************************************************************************
552 procedure TBoardPlugIn.CreateBoardItem(
553 boardItem : DWORD // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
554 );
555 begin
556
557 if Assigned( FCreateBoardItem ) then
558 FCreateBoardItem( boardItem );
559
560 end;
561
562 // *************************************************************************
563 // TBoardItem 縺檎?エ譽?&繧後◆
564 // *************************************************************************
565 procedure TBoardPlugIn.DisposeBoardItem(
566 boardItem : DWORD // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
567 );
568 begin
569
570 if Assigned( FDisposeBoardItem ) then
571 FDisposeBoardItem( boardItem );
572
573 end;
574
575 // *************************************************************************
576 // 繝?繧ヲ繝ウ繝ュ繝シ繝峨r謖?、コ
577 // *************************************************************************
578 function TBoardPlugIn.DownloadBoard(
579 boardItem : DWORD // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
580 ) : TDownloadState;
581 begin
582
583 if Assigned( FDownloadBoard ) then
584 Result := FDownloadBoard( boardItem )
585 else
586 Result := dsError;
587
588 end;
589
590 // *************************************************************************
591 // 繧ケ繝ャ遶九※繧呈欠遉コ
592 // *************************************************************************
593 function TBoardPlugIn.CreateThread(
594 boardItem : DWORD; // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
595 inSubject : string; // 繧ケ繝ャ繧ソ繧、
596 inName : string; // 蜷榊燕(繝上Φ繝峨Ν)
597 inMail : string; // 繝。繝シ繝ォ繧「繝峨Ξ繧ケ
598 inMessage : string // 譛ャ譁?/span>
599 ) : TDownloadState; // 譖ク縺崎セシ縺ソ縺梧?蜉溘@縺溘°縺ゥ縺?°
600 begin
601
602 if Assigned( FCreateThread ) then
603 Result := FCreateThread( boardItem, PChar( inSubject ), PChar( inName ), PChar( inMail ), PChar( inMessage ) )
604 else
605 Result := dsError;
606
607 end;
608
609 // *************************************************************************
610 // 縺薙?譚ソ縺ォ菫晄怏縺励※縺?k繧ケ繝ャ繧貞?謖?/span>
611 // *************************************************************************
612 procedure TBoardPlugIn.EnumThread(
613 boardItem : DWORD; // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
614 inCallBack : TBoardItemEnumThreadCallBack
615 );
616 begin
617
618 if Assigned( FEnumThread ) then
619 FEnumThread( boardItem, inCallBack );
620
621 end;
622
623 // *************************************************************************
624 // 繝輔ぃ繧、繝ォ蜷阪°繧峨せ繝ャ繝?ラ縺ョ URL 繧定ヲ∵ア?/span>
625 // *************************************************************************
626 function TBoardPlugIn.FileName2ThreadURL(
627 boardItem : DWORD; // BoardItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
628 inFileName : string
629 ) : string;
630 var
631 tmp : PChar;
632 begin
633
634 if Assigned( FFileName2ThreadURL ) then begin
635 tmp := FFileName2ThreadURL( boardItem, PChar( inFileName ) );
636 Result := string( tmp );
637 DisposeResultString( tmp );
638 end;
639
640 end;
641
642 // *************************************************************************
643 // 繝励Λ繧ー繧、繝ウ縺ョ API 繧貞叙蠕?/span>
644 // *************************************************************************
645 procedure TBoardPlugIn.LoadPlugInAPI;
646 begin
647
648 try
649 if Assigned( Pointer( FModule ) ) then begin
650 FLoad := GetProcAddress( FModule, 'OnLoad' );
651 FVersionInfo := GetProcAddress( FModule, 'OnVersionInfo' );
652 FAcceptURL := GetProcAddress( FModule, 'OnAcceptURL' );
653 FExtractBoardURL := GetProcAddress( FModule, 'OnExtractBoardURL' );
654 FPlugInMenu := GetProcAddress( FModule, 'OnPlugInMenu' );
655
656 FCreateThreadItem := GetProcAddress( FModule, 'ThreadItemCreate' );
657 FDisposeThreadItem := GetProcAddress( FModule, 'ThreadItemDispose' );
658 FDownloadThread := GetProcAddress( FModule, 'ThreadItemOnDownload' );
659 FWriteThread := GetProcAddress( FModule, 'ThreadItemOnWrite' );
660 FGetRes := GetProcAddress( FModule, 'ThreadItemOnGetRes' );
661 FGetDat := GetProcAddress( FModule, 'ThreadItemOnGetDat' );
662 FGetHeader := GetProcAddress( FModule, 'ThreadItemOnGetHeader' );
663 FGetFooter := GetProcAddress( FModule, 'ThreadItemOnGetFooter' );
664 FGetBoardURL := GetProcAddress( FModule, 'ThreadItemOnGetBoardURL' );
665
666 FCreateBoardItem := GetProcAddress( FModule, 'BoardItemCreate' );
667 FDisposeBoardItem := GetProcAddress( FModule, 'BoardItemDispose' );
668 FDownloadBoard := GetProcAddress( FModule, 'BoardItemOnDownload' );
669 FCreateThread := GetProcAddress( FModule, 'BoardItemOnCreateThread' );
670 FEnumThread := GetProcAddress( FModule, 'BoardItemOnEnumThread' );
671 FFileName2ThreadURL := GetProcAddress( FModule, 'BoardItemOnFileName2ThreadURL' );
672 end;
673 except
674 end;
675
676 end;
677
678 end.
679

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26