OSDN Git Service

(none)
[gikonavigoeson/gikonavi.git] / ExternalBoardManager.pas
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         // \83v\83\89\83O\83C\83\93\82ð\8aÇ\97\9d\82·\82é TBoardPlugin \83N\83\89\83X
13         // =========================================================================
14         TBoardPlugIn = class( TObject )
15         private
16                 FFilePath                                               : string;               // \83v\83\89\83O\83C\83\93\82ð\8e¦\82·\83p\83X
17                 FModule                                                 : HMODULE;      // \83v\83\89\83O\83C\83\93\82Ì\83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b
18
19                 FLoad                                                           : TOnLoad;
20                 FVersionInfo                            : TOnVersionInfo;
21                 FAcceptURL                                      : TOnAcceptURL;
22                 FPlugInMenu                                     : TOnPlugInMenu;
23
24                 FCreateThreadItem               : TThreadItemCreate;
25                 FDisposeThreadItem      : TThreadItemDispose;
26                 FDownloadThread                 : TThreadItemOnDownload;
27                 FWriteThread                            : TThreadItemOnWrite;
28                 FGetRes                                                 : TThreadItemOnGetRes;
29                 FGetDat                                                 : TThreadItemOnGetDat;
30                 FGetHeader                                      : TThreadItemOnGetHeader;
31                 FGetFooter                                      : TThreadItemOnGetFooter;
32                 FGetBoardURL                            : TThreadItemOnGetBoardURL;
33
34                 FCreateBoardItem                : TBoardItemCreate;
35                 FDisposeBoardItem               : TBoardItemDispose;
36                 FDownloadBoard                  : TBoardItemOnDownload;
37                 FCreateThread                           : TBoardItemOnCreateThread;
38                 FEnumThread                                     : TBoardItemOnEnumThread;
39                 FFileName2ThreadURL     : TBoardItemOnFileName2ThreadURL;
40
41         public
42                 // \83R\83\93\83X\83g\83\89\83N\83^
43                 constructor     Create;
44                 // \83v\83\89\83O\83C\83\93\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ä\8dì\90¬
45                 constructor     CreateFromPath( inPath : string );
46                 // \83v\83\89\83O\83C\83\93\96¼\82ð\8ew\92è\82µ\82Ä\8dì\90¬
47                 constructor     CreateFromName( inName : string );
48                 // \83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b\82ð\8ew\92è\82µ\82Ä\8dì\90¬
49                 constructor     CreateFromModule( inModule : HMODULE );
50                 // \83f\83X\83g\83\89\83N\83^
51                 destructor      Destroy; override;
52
53                 // \83v\83\89\83O\83C\83\93\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
54                 procedure       LoadFromPath( inPath : string );
55                 // \83v\83\89\83O\83C\83\93\96¼\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
56                 procedure       LoadFromName( inName : string );
57                 // \83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
58                 procedure       LoadFromModule( inModule : HMODULE );
59
60                 //===== PlugInMain \8aÖ\98A
61                 // \83v\83\89\83O\83C\83\93\82ª(\90³\82µ\82­)\83\8d\81[\83h\82³\82ê\82½
62                 procedure       Loaded;
63                 // \83o\81[\83W\83\87\83\93\8fî\95ñ
64                 procedure       VersionInfo(    var outAgent : string;
65                         var outMajor : DWORD; var outMinor : DWORD;
66                         var outRelease : string; var outRevision : DWORD );
67                 // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
68                 function        AcceptURL( inURL : string ) : TAcceptType;
69                 // \83\81\83j\83\85\81[\83n\83\93\83h\83\89
70                 procedure       PlugInMenu( inHandle : HMENU );
71
72                 //===== TThreadItem \8aÖ\98A
73                 // TThreadItem \82ª\90\90¬\82³\82ê\82½
74                 procedure       CreateThreadItem( threadItem : DWORD );
75                 // TThreadItem \82ª\94j\8aü\82³\82ê\82½
76                 procedure       DisposeThreadItem( threadItem : DWORD );
77                 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
78                 function        DownloadThread( threadItem : DWORD ) : TDownloadState;
79                 // \8f\91\82«\8d\9e\82Ý\82ð\8ew\8e¦
80                 function        WriteThread( threadItem : DWORD; inName : string; inMail : string; inMessage : string ) : TDownloadState;
81                 // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81
82                 function        GetRes( threadItem : DWORD; inNo : DWORD ) : string;
83                 // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é Dat \82ð\97v\8b\81
84                 function        GetDat( threadItem : DWORD; inNo : DWORD ) : string;
85                 // \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81
86                 function        GetHeader( threadItem : DWORD; inOptionalHeader : string ) : string;
87                 // \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81
88                 function        GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string;
89                 // \82±\82Ì ThreadItem \82ª\91®\82·\82é\94Â\82Ì URL \82ð\97v\8b\81
90                 function        GetBoardURL( threadItem : DWORD ) : string;
91
92                 //===== TBoardItem \8aÖ\98A
93                 // TBoard \82ª\90\90¬\82³\82ê\82½
94                 procedure       CreateBoardItem( boardItem : DWORD );
95                 // TBoardItem \82ª\94j\8aü\82³\82ê\82½
96                 procedure       DisposeBoardItem( boardItem : DWORD );
97                 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
98                 function        DownloadBoard( boardItem : DWORD ) : TDownloadState;
99                 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦
100                 function        CreateThread( boardItem : DWORD; inSubject : string; inName : string; inMail : string; inMessage : string ) : TDownloadState;
101                 // \82±\82Ì\94Â\82É\95Û\97L\82µ\82Ä\82¢\82é\83X\83\8c\82ð\97ñ\8b\93
102                 procedure EnumThread( boardItem : DWORD; inCallBack : TBoardItemEnumThreadCallBack );
103                 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81
104                 function        FileName2ThreadURL( boardItem : DWORD; inFileName : string ) : string;
105
106         private
107                 procedure       LoadPlugInAPI;
108
109         public
110                 property        FilePath        : string        read FFilePath;
111                 property        Module          : HMODULE       read FModule;
112         end;
113
114 var
115         OnWork                          : TWorkEvent;
116         OnWorkBegin             : TWorkBeginEvent;
117         OnWorkEnd                       : TWorkEndEvent;
118
119         BoardPlugIns    : array of TBoardPlugIn;
120
121 procedure InitializeBoardPlugIns;
122
123 implementation
124
125 uses GikoSystem;
126
127 // *************************************************************************
128 // BoardPlugin \83t\83H\83\8b\83_\82É\82 \82é\83v\83\89\83O\83C\83\93\82ð\91S\82Ä\83\8d\81[\83h
129 // *************************************************************************
130 procedure InitializeBoardPlugIns;
131 var
132         i, bound                : Integer;
133         pluginNames     : TStringList;
134 begin
135
136         pluginNames := TStringList.Create;
137         try
138                 //GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False, False );
139                 GikoSys.GetFileList( GikoSys.Setting.GetBoardPlugInDir, '*', pluginNames, False );
140                 SetLength( BoardPlugIns, pluginNames.Count );
141
142                 bound := pluginNames.Count - 1;
143                 for i := 0 to bound do begin
144                         try
145                                 BoardPlugIns[ i ] := TBoardPlugIn.CreateFromName( pluginNames.Strings[ i ] );
146                                 BoardPlugIns[ i ].Loaded;
147                         except end;
148                 end;
149         finally
150                 pluginNames.Free;
151         end;
152
153 end;
154
155
156
157 // =========================================================================
158 // \83v\83\89\83O\83C\83\93\82ð\8aÇ\97\9d\82·\82é TBoardPlugin \83N\83\89\83X
159 // =========================================================================
160
161 // *************************************************************************
162 // \83R\83\93\83X\83g\83\89\83N\83^
163 // *************************************************************************
164 constructor     TBoardPlugIn.Create;
165 begin
166
167         inherited;
168
169         FLoad                                                           := nil;
170         FVersionInfo                            := nil;
171         FAcceptURL                                      := nil;
172         FPlugInMenu                                     := nil;
173
174         FCreateThreadItem               := nil;
175         FDisposeThreadItem      := nil;
176         FDownloadThread                 := nil;
177         FWriteThread                            := nil;
178         FGetRes                                                 := nil;
179         FGetDat                                                 := nil;
180         FGetHeader                                      := nil;
181         FGetFooter                                      := nil;
182
183         FCreateBoardItem                := nil;
184         FDisposeBoardItem               := nil;
185         FDownloadBoard                  := nil;
186         FCreateThread                           := nil;
187         FEnumThread                                     := nil;
188         FFileName2ThreadURL     := nil;
189
190 end;
191
192 // *************************************************************************
193 // \83v\83\89\83O\83C\83\93\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ä\8dì\90¬
194 // *************************************************************************
195 constructor     TBoardPlugIn.CreateFromPath(
196         inPath : string
197 );
198 begin
199
200         Create;
201
202         LoadFromPath( inPath );
203
204 end;
205
206 // *************************************************************************
207 // \83v\83\89\83O\83C\83\93\96¼\82ð\8ew\92è\82µ\82Ä\8dì\90¬
208 // *************************************************************************
209 constructor     TBoardPlugIn.CreateFromName(
210         inName : string
211 );
212 begin
213
214         Create;
215
216         LoadFromName( inName );
217
218 end;
219
220 // *************************************************************************
221 // \83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b\82ð\8ew\92è\82µ\82Ä\8dì\90¬
222 // *************************************************************************
223 constructor     TBoardPlugIn.CreateFromModule(
224         inModule : HMODULE
225 );
226 begin
227
228         inherited Create;
229
230         LoadFromModule( inModule );
231
232 end;
233
234 // *************************************************************************
235 // \83f\83X\83g\83\89\83N\83^
236 // *************************************************************************
237 destructor      TBoardPlugIn.Destroy;
238 begin
239
240         FreeLibrary( FModule );
241
242         inherited;
243
244 end;
245
246 // *************************************************************************
247 // \83v\83\89\83O\83C\83\93\82Ì\83p\83X\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
248 // *************************************************************************
249 procedure TBoardPlugIn.LoadFromPath(
250         inPath : string
251 );
252 begin
253
254         FFilePath := inPath;
255         if FileExists( inPath ) then
256                 FModule := LoadLibrary( PChar( inPath ) )
257         else if FileExists( inPath + '.dll' ) then
258                 FModule := LoadLibrary( PChar( inPath + '.dll' ) );
259
260         LoadPlugInAPI;
261
262 end;
263
264 // *************************************************************************
265 // \83v\83\89\83O\83C\83\93\96¼\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
266 // *************************************************************************
267 procedure TBoardPlugIn.LoadFromName(
268         inName : string
269 );
270 begin
271
272         LoadFromPath( GikoSys.Setting.GetBoardPlugInDir + inName );
273
274 end;
275
276 // *************************************************************************
277 // \83\82\83W\83\85\81[\83\8b\83n\83\93\83h\83\8b\82ð\8ew\92è\82µ\82Ä\83\8d\81[\83h
278 // *************************************************************************
279 procedure TBoardPlugIn.LoadFromModule(
280         inModule        : HMODULE
281 );
282 var
283         tmp                             : array [0..MAX_PATH] of Char;
284 begin
285
286         GetModuleFileName( inModule, tmp, SizeOf( tmp ) );
287         FFilePath       := tmp;
288         FModule         := inModule;
289
290         LoadPlugInAPI;
291
292 end;
293
294 // *************************************************************************
295 // \83v\83\89\83O\83C\83\93\82ª(\90³\82µ\82­)\83\8d\81[\83h\82³\82ê\82½
296 // *************************************************************************
297 procedure TBoardPlugIn.Loaded;
298 begin
299
300         if Assigned( FLoad ) then
301                 FLoad( DWORD( Self ) );
302
303 end;
304
305 // *************************************************************************
306 // \83o\81[\83W\83\87\83\93\8fî\95ñ
307 // *************************************************************************
308 procedure TBoardPlugIn.VersionInfo(
309         var outAgent            : string;               // \83o\81[\83W\83\87\83\93\82ð\88ê\90Ø\8aÜ\82Ü\82È\82¢\8f\83\90\88\82È\96¼\8fÌ
310         var outMajor            : DWORD;                // \83\81\83W\83\83\81[\83o\81[\83W\83\87\83\93
311         var outMinor            : DWORD;                // \83}\83C\83i\81[\83o\81[\83W\83\87\83\93
312         var outRelease  : string;               // \83\8a\83\8a\81[\83X\92i\8aK\96¼
313         var outRevision : DWORD                 // \83\8a\83r\83W\83\87\83\93\83i\83\93\83o\81[
314 );
315 var
316         agent                                           : PChar;
317         release                                 : PChar;
318 begin
319
320         if Assigned( FVersionInfo ) then begin
321                 FVersionInfo( agent, outMajor, outMinor, release, outRevision );
322                 outAgent                := string( agent );
323                 outRelease      := string( release );
324                 DisposeResultString( agent );
325                 DisposeResultString( release );
326         end;
327
328 end;
329
330 // *************************************************************************
331 // \8ew\92è\82µ\82½ URL \82ð\82±\82Ì\83v\83\89\83O\83C\83\93\82Å\8eó\82¯\95t\82¯\82é\82©\82Ç\82¤\82©
332 // *************************************************************************
333 function        TBoardPlugIn.AcceptURL(
334         inURL : string
335 ) : TAcceptType;
336 begin
337
338         if Assigned( FAcceptURL ) then
339                 Result := FAcceptURL( PChar( inURL ) )
340         else
341                 Result := atNoAccept;
342
343 end;
344
345 // *************************************************************************
346 // \83\81\83j\83\85\81[\83n\83\93\83h\83\89
347 // *************************************************************************
348 procedure TBoardPlugIn.PlugInMenu(
349         inHandle : HMENU                                        // \83\81\83j\83\85\81[\83n\83\93\83h\83\8b
350 );
351 begin
352
353         if Assigned( FPlugInMenu ) then
354                 FPlugInMenu( inHandle );
355
356 end;
357
358 // *************************************************************************
359 // TThreadItem \82ª\90\90¬\82³\82ê\82½
360 // *************************************************************************
361 procedure       TBoardPlugIn.CreateThreadItem(
362         threadItem : DWORD      // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
363 );
364 begin
365
366         if Assigned( FCreateThreadItem ) then
367                 FCreateThreadItem( threadItem );
368
369 end;
370
371 // *************************************************************************
372 // TThreadItem \82ª\94j\8aü\82³\82ê\82½
373 // *************************************************************************
374 procedure       TBoardPlugIn.DisposeThreadItem(
375         threadItem : DWORD      // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
376 );
377 begin
378
379         if Assigned( FDisposeThreadItem ) then
380                 FDisposeThreadItem( threadItem );
381
382 end;
383
384 // *************************************************************************
385 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
386 // *************************************************************************
387 function        TBoardPlugIn.DownloadThread(
388         threadItem : DWORD      // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
389 ) : TDownloadState;
390 begin
391
392         if Assigned( FDownloadThread ) then
393                 Result := FDownloadThread( threadItem )
394         else
395                 Result := dsError;
396
397 end;
398
399 // *************************************************************************
400 // \8f\91\82«\8d\9e\82Ý\82ð\8ew\8e¦
401 // *************************************************************************
402 function        TBoardPlugIn.WriteThread(
403         threadItem      : DWORD;        // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
404         inName                  : string;       // \96¼\91O(\83n\83\93\83h\83\8b)
405         inMail                  : string;       // \83\81\81[\83\8b\83A\83h\83\8c\83X
406         inMessage               : string        // \96{\95
407 ) : TDownloadState;                     // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
408 begin
409
410         if Assigned( FWriteThread ) then
411                 Result := FWriteThread( threadItem, PChar( inName ), PChar( inMail ), PChar( inMessage ) )
412         else
413                 Result := dsError;
414
415 end;
416
417 // *************************************************************************
418 // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é html \82ð\97v\8b\81
419 // *************************************************************************
420 function TBoardPlugIn.GetRes(
421         threadItem      : DWORD;                // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
422         inNo                            : DWORD                 // \95\\8e¦\82·\82é\83\8c\83X\94Ô\8d\86
423 ) : string;                                                     // \95\\8e¦\82·\82é HTML
424 var
425         tmp                                     : PChar;
426 begin
427
428         if Assigned( FGetRes ) then begin
429                 tmp                     := FGetRes( threadItem, inNo );
430                 try
431                         Result  := string( tmp );
432                 finally
433                         DisposeResultString( tmp );
434                 end;
435         end;
436
437 end;
438
439 // *************************************************************************
440 // \83\8c\83X\94Ô\8d\86 n \82É\91Î\82·\82é Dat \82ð\97v\8b\81
441 // *************************************************************************
442 function TBoardPlugIn.GetDat(
443         threadItem      : DWORD;                // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
444         inNo                            : DWORD                 // \95\\8e¦\82·\82é\83\8c\83X\94Ô\8d\86
445 ) : string; // \82Q\82¿\82á\82ñ\82Ë\82é\82Ìdat\8c`\8e®
446 var
447         tmp :   PChar;
448 begin
449
450         if Assigned( FGetDat ) then begin
451                 tmp := FGetDat( threadItem, inNo );
452                 try
453                         Result := string( tmp );
454                 finally
455                         DisposeResultString(tmp);  end;
456         end;
457
458 end;
459
460 // *************************************************************************
461 // \83X\83\8c\83b\83h\82Ì\83w\83b\83_ html \82ð\97v\8b\81
462 // *************************************************************************
463 function TBoardPlugIn.GetHeader(
464         threadItem                              : DWORD;        // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
465         inOptionalHeader        : string        // \92Ç\89Á\82Ì\83w\83b\83_
466 ) : string;                                                                             // \90®\8c`\82³\82ê\82½ HTML
467 var
468         tmp                                                             : PChar;
469 begin
470
471         if Assigned( FGetHeader ) then begin
472                 tmp                     := FGetHeader( threadItem, PChar( inOptionalHeader ) );
473                 try
474                         Result  := string( tmp );
475                 finally
476                         DisposeResultString( tmp );
477                 end;
478         end;
479
480 end;
481
482 // *************************************************************************
483 // \83X\83\8c\83b\83h\82Ì\83t\83b\83^ html \82ð\97v\8b\81
484 // *************************************************************************
485 function TBoardPlugIn.GetFooter(
486         threadItem                              : DWORD;        // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
487         inOptionalFooter        : string        // \92Ç\89Á\82Ì\83t\83b\83^
488 ) : string;                                                                             // \90®\8c`\82³\82ê\82½ HTML
489 var
490         tmp                                                             : PChar;
491 begin
492
493         if Assigned( FGetFooter ) then begin
494                 tmp                     := FGetFooter( threadItem, PChar( inOptionalFooter ) );
495                 Result  := string( tmp );
496                 DisposeResultString( tmp );
497         end;
498
499 end;
500
501 // *************************************************************************
502 // \82±\82Ì ThreadItem \82ª\91®\82·\82é\94Â\82Ì URL \82ð\97v\8b\81
503 // *************************************************************************
504 function        TBoardPlugIn.GetBoardURL(
505         threadItem      : DWORD // ThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
506 ) : string;
507 var
508         tmp                                     : PChar;
509 begin
510
511         if Assigned( FGetBoardURL ) then begin
512                 tmp                     := FGetBoardURL( threadItem );
513                 Result  := string( tmp );
514                 DisposeResultString( tmp );
515         end;
516
517 end;
518
519 // *************************************************************************
520 // TBoardItem \82ª\90\90¬\82³\82ê\82½
521 // *************************************************************************
522 procedure       TBoardPlugIn.CreateBoardItem(
523         boardItem : DWORD       // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
524 );
525 begin
526
527         if Assigned( FCreateBoardItem ) then
528                 FCreateBoardItem( boardItem );
529
530 end;
531
532 // *************************************************************************
533 // TBoardItem \82ª\94j\8aü\82³\82ê\82½
534 // *************************************************************************
535 procedure       TBoardPlugIn.DisposeBoardItem(
536         boardItem : DWORD       // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
537 );
538 begin
539
540         if Assigned( FDisposeBoardItem ) then
541                 FDisposeBoardItem( boardItem );
542
543 end;
544
545 // *************************************************************************
546 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦
547 // *************************************************************************
548 function        TBoardPlugIn.DownloadBoard(
549         boardItem : DWORD       // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
550 ) : TDownloadState;
551 begin
552
553         if Assigned( FDownloadBoard ) then
554                 Result := FDownloadBoard( boardItem )
555         else
556                 Result := dsError;
557
558 end;
559
560 // *************************************************************************
561 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦
562 // *************************************************************************
563 function        TBoardPlugIn.CreateThread(
564         boardItem               : DWORD;        // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
565         inSubject               : string;       // \83X\83\8c\83^\83C
566         inName                  : string;       // \96¼\91O(\83n\83\93\83h\83\8b)
567         inMail                  : string;       // \83\81\81[\83\8b\83A\83h\83\8c\83X
568         inMessage               : string        // \96{\95
569 ) : TDownloadState;                     // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
570 begin
571
572         if Assigned( FCreateThread ) then
573                 Result := FCreateThread( boardItem, PChar( inSubject ), PChar( inName ), PChar( inMail ), PChar( inMessage ) )
574         else
575                 Result := dsError;
576
577 end;
578
579 // *************************************************************************
580 // \82±\82Ì\94Â\82É\95Û\97L\82µ\82Ä\82¢\82é\83X\83\8c\82ð\97ñ\8b\93
581 // *************************************************************************
582 procedure TBoardPlugIn.EnumThread(
583         boardItem               : DWORD;        // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
584         inCallBack      : TBoardItemEnumThreadCallBack
585 );
586 begin
587
588         if Assigned( FEnumThread ) then
589                 FEnumThread( boardItem, inCallBack );
590
591 end;
592
593 // *************************************************************************
594 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81
595 // *************************************************************************
596 function        TBoardPlugIn.FileName2ThreadURL(
597         boardItem               : DWORD;        // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
598         inFileName      : string
599 ) : string;
600 var
601         tmp                                                             : PChar;
602 begin
603
604         if Assigned( FFileName2ThreadURL ) then begin
605                 tmp                     := FFileName2ThreadURL( boardItem, PChar( inFileName ) );
606                 Result  := string( tmp );
607                 DisposeResultString( tmp );
608         end;
609
610 end;
611
612 // *************************************************************************
613 // \83v\83\89\83O\83C\83\93\82Ì API \82ð\8eæ\93¾
614 // *************************************************************************
615 procedure TBoardPlugIn.LoadPlugInAPI;
616 begin
617
618         try
619                 if Assigned( Pointer( FModule ) ) then begin
620                         FLoad                                                           := GetProcAddress( FModule, 'OnLoad' );
621                         FVersionInfo                            := GetProcAddress( FModule, 'OnVersionInfo' );
622                         FAcceptURL                                      := GetProcAddress( FModule, 'OnAcceptURL' );
623                         FPlugInMenu                                     := GetProcAddress( FModule, 'OnPlugInMenu' );
624
625                         FCreateThreadItem               := GetProcAddress( FModule, 'ThreadItemCreate' );
626                         FDisposeThreadItem      := GetProcAddress( FModule, 'ThreadItemDispose' );
627                         FDownloadThread                 := GetProcAddress( FModule, 'ThreadItemOnDownload' );
628                         FWriteThread                            := GetProcAddress( FModule, 'ThreadItemOnWrite' );
629                         FGetRes                                                 := GetProcAddress( FModule, 'ThreadItemOnGetRes' );
630                         FGetDat                                                 := GetProcAddress( FModule, 'ThreadItemOnGetDat' );
631                         FGetHeader                                      := GetProcAddress( FModule, 'ThreadItemOnGetHeader' );
632                         FGetFooter                                      := GetProcAddress( FModule, 'ThreadItemOnGetFooter' );
633                         FGetBoardURL                            := GetProcAddress( FModule, 'ThreadItemOnGetBoardURL' );
634
635                         FCreateBoardItem                := GetProcAddress( FModule, 'BoardItemCreate' );
636                         FDisposeBoardItem               := GetProcAddress( FModule, 'BoardItemDispose' );
637                         FDownloadBoard                  := GetProcAddress( FModule, 'BoardItemOnDownload' );
638                         FCreateThread                           := GetProcAddress( FModule, 'BoardItemOnCreateThread' );
639                         FEnumThread                                     := GetProcAddress( FModule, 'BoardItemOnEnumThread' );
640                         FFileName2ThreadURL     := GetProcAddress( FModule, 'BoardItemOnFileName2ThreadURL' );
641                 end;
642         except
643         end;
644
645 end;
646
647 end.
648