1 unit ExternalBoardManager;
6 Windows, Classes, SysUtils,
7 IdHTTP, IdComponent, IdGlobal, IdException,
8 ExternalBoardPlugInMain, ExternalFilePath, ExternalThreadItem, ExternalBoardItem;
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 )
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
20 FVersionInfo : TOnVersionInfo;
21 FAcceptURL : TOnAcceptURL;
22 FExtractBoardURL : TOnExtractBoardURL;
23 FPlugInMenu : TOnPlugInMenu;
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;
35 FCreateBoardItem : TBoardItemCreate;
36 FDisposeBoardItem : TBoardItemDispose;
37 FDownloadBoard : TBoardItemOnDownload;
38 FCreateThread : TBoardItemOnCreateThread;
39 FEnumThread : TBoardItemOnEnumThread;
40 FFileName2ThreadURL : TBoardItemOnFileName2ThreadURL;
43 //
\83R
\83\93\83X
\83g
\83\89\83N
\83^
45 //
\83v
\83\89\83O
\83C
\83\93\82Ì
\83p
\83X
\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
46 constructor CreateFromPath( inPath : string );
47 //
\83v
\83\89\83O
\83C
\83\93\96¼
\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
48 constructor CreateFromName( inName : string );
49 //
\83\82\83W
\83\85\81[
\83\8b\83n
\83\93\83h
\83\8b\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
50 constructor CreateFromModule( inModule : HMODULE );
51 //
\83f
\83X
\83g
\83\89\83N
\83^
52 destructor Destroy; override;
54 //
\83v
\83\89\83O
\83C
\83\93\82Ì
\83p
\83X
\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
55 procedure LoadFromPath( inPath : string );
56 //
\83v
\83\89\83O
\83C
\83\93\96¼
\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
57 procedure LoadFromName( inName : string );
58 //
\83\82\83W
\83\85\81[
\83\8b\83n
\83\93\83h
\83\8b\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
59 procedure LoadFromModule( inModule : HMODULE );
61 //===== PlugInMain
\8aÖ
\98A
62 //
\83v
\83\89\83O
\83C
\83\93\82ª(
\90³
\82µ
\82)
\83\8d\81[
\83h
\82³
\82ê
\82½
64 //
\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ
65 procedure VersionInfo( var outAgent : string;
66 var outMajor : DWORD; var outMinor : DWORD;
67 var outRelease : string; var outRevision : DWORD );
68 //
\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©
69 function AcceptURL( inURL : string ) : TAcceptType;
70 // URL
\82©
\82ç
\8eg
\82¦
\82éBoard
\82ÌURL
\82ð
\93±
\82«
\8fo
\82·
71 function ExtractBoardURL( inURL : string ): string;
72 //
\83\81\83j
\83\85\81[
\83n
\83\93\83h
\83\89
73 procedure PlugInMenu( inHandle : HMENU );
75 //===== TThreadItem
\8aÖ
\98A
76 // TThreadItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
77 procedure CreateThreadItem( threadItem : DWORD );
78 // TThreadItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
79 procedure DisposeThreadItem( threadItem : DWORD );
80 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
81 function DownloadThread( threadItem : DWORD ) : TDownloadState;
82 //
\8f\91\82«
\8d\9e\82Ý
\82ð
\8ew
\8e¦
83 function WriteThread( threadItem : DWORD; inName : string; inMail : string; inMessage : string ) : TDownloadState;
84 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é html
\82ð
\97v
\8b\81
85 function GetRes( threadItem : DWORD; inNo : DWORD ) : string;
86 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é Dat
\82ð
\97v
\8b\81
87 function GetDat( threadItem : DWORD; inNo : DWORD ) : string;
88 //
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_ html
\82ð
\97v
\8b\81
89 function GetHeader( threadItem : DWORD; inOptionalHeader : string ) : string;
90 //
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^ html
\82ð
\97v
\8b\81
91 function GetFooter( threadItem : DWORD; inOptionalFooter : string ) : string;
92 //
\82±
\82Ì ThreadItem
\82ª
\91®
\82·
\82é
\94Â
\82Ì URL
\82ð
\97v
\8b\81
93 function GetBoardURL( threadItem : DWORD ) : string;
95 //===== TBoardItem
\8aÖ
\98A
96 // TBoard
\82ª
\90¶
\90¬
\82³
\82ê
\82½
97 procedure CreateBoardItem( boardItem : DWORD );
98 // TBoardItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
99 procedure DisposeBoardItem( boardItem : DWORD );
100 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
101 function DownloadBoard( boardItem : DWORD ) : TDownloadState;
102 //
\83X
\83\8c\97§
\82Ä
\82ð
\8ew
\8e¦
103 function CreateThread( boardItem : DWORD; inSubject : string; inName : string; inMail : string; inMessage : string ) : TDownloadState;
104 //
\82±
\82Ì
\94Â
\82É
\95Û
\97L
\82µ
\82Ä
\82¢
\82é
\83X
\83\8c\82ð
\97ñ
\8b\93
105 procedure EnumThread( boardItem : DWORD; inCallBack : TBoardItemEnumThreadCallBack );
106 //
\83t
\83@
\83C
\83\8b\96¼
\82©
\82ç
\83X
\83\8c\83b
\83h
\82Ì URL
\82ð
\97v
\8b\81
107 function FileName2ThreadURL( boardItem : DWORD; inFileName : string ) : string;
110 procedure LoadPlugInAPI;
113 property FilePath : string read FFilePath;
114 property Module : HMODULE read FModule;
119 OnWorkBegin : TWorkBeginEvent;
120 OnWorkEnd : TWorkEndEvent;
122 BoardPlugIns : array of TBoardPlugIn;
124 procedure InitializeBoardPlugIns;
128 uses GikoSystem, BoardGroup;
130 // *************************************************************************
131 // BoardPlugin
\83t
\83H
\83\8b\83_
\82É
\82 \82é
\83v
\83\89\83O
\83C
\83\93\82ð
\91S
\82Ä
\83\8d\81[
\83h
132 // *************************************************************************
133 procedure InitializeBoardPlugIns;
136 pluginNames : TStringList;
139 pluginNames := TStringList.Create;
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 );
147 SetLength( BoardGroups, pluginNames.Count + 1 );
148 BoardGroups[0] := TBoardGroup.Create;
149 BoardGroups[0].Sorted := true;
150 BoardGroups[0].BoardPlugIn := nil;
152 bound := pluginNames.Count - 1;
153 for i := 0 to bound do begin
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 ];
170 // =========================================================================
171 //
\83v
\83\89\83O
\83C
\83\93\82ð
\8aÇ
\97\9d\82·
\82é TBoardPlugin
\83N
\83\89\83X
172 // =========================================================================
174 // *************************************************************************
175 //
\83R
\83\93\83X
\83g
\83\89\83N
\83^
176 // *************************************************************************
177 constructor TBoardPlugIn.Create;
185 FExtractBoardURL := nil;
188 FCreateThreadItem := nil;
189 FDisposeThreadItem := nil;
190 FDownloadThread := nil;
197 FCreateBoardItem := nil;
198 FDisposeBoardItem := nil;
199 FDownloadBoard := nil;
200 FCreateThread := nil;
202 FFileName2ThreadURL := nil;
206 // *************************************************************************
207 //
\83v
\83\89\83O
\83C
\83\93\82Ì
\83p
\83X
\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
208 // *************************************************************************
209 constructor TBoardPlugIn.CreateFromPath(
216 LoadFromPath( inPath );
220 // *************************************************************************
221 //
\83v
\83\89\83O
\83C
\83\93\96¼
\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
222 // *************************************************************************
223 constructor TBoardPlugIn.CreateFromName(
230 LoadFromName( inName );
234 // *************************************************************************
235 //
\83\82\83W
\83\85\81[
\83\8b\83n
\83\93\83h
\83\8b\82ð
\8ew
\92è
\82µ
\82Ä
\8dì
\90¬
236 // *************************************************************************
237 constructor TBoardPlugIn.CreateFromModule(
244 LoadFromModule( inModule );
248 // *************************************************************************
249 //
\83f
\83X
\83g
\83\89\83N
\83^
250 // *************************************************************************
251 destructor TBoardPlugIn.Destroy;
254 FreeLibrary( FModule );
260 // *************************************************************************
261 //
\83v
\83\89\83O
\83C
\83\93\82Ì
\83p
\83X
\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
262 // *************************************************************************
263 procedure TBoardPlugIn.LoadFromPath(
269 if FileExists( inPath ) then
270 FModule := LoadLibrary( PChar( inPath ) )
271 else if FileExists( inPath + '.dll' ) then
272 FModule := LoadLibrary( PChar( inPath + '.dll' ) );
278 // *************************************************************************
279 //
\83v
\83\89\83O
\83C
\83\93\96¼
\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
280 // *************************************************************************
281 procedure TBoardPlugIn.LoadFromName(
286 LoadFromPath( GikoSys.Setting.GetBoardPlugInDir + inName );
290 // *************************************************************************
291 //
\83\82\83W
\83\85\81[
\83\8b\83n
\83\93\83h
\83\8b\82ð
\8ew
\92è
\82µ
\82Ä
\83\8d\81[
\83h
292 // *************************************************************************
293 procedure TBoardPlugIn.LoadFromModule(
297 tmp : array [0..MAX_PATH] of Char;
300 GetModuleFileName( inModule, tmp, SizeOf( tmp ) );
308 // *************************************************************************
309 //
\83v
\83\89\83O
\83C
\83\93\82ª(
\90³
\82µ
\82)
\83\8d\81[
\83h
\82³
\82ê
\82½
310 // *************************************************************************
311 procedure TBoardPlugIn.Loaded;
314 if Assigned( FLoad ) then
315 FLoad( DWORD( Self ) );
319 // *************************************************************************
320 //
\83o
\81[
\83W
\83\87\83\93\8fî
\95ñ
321 // *************************************************************************
322 procedure TBoardPlugIn.VersionInfo(
323 var outAgent : string; //
\83o
\81[
\83W
\83\87\83\93\82ð
\88ê
\90Ø
\8aÜ
\82Ü
\82È
\82¢
\8f\83\90\88\82È
\96¼
\8fÌ
324 var outMajor : DWORD; //
\83\81\83W
\83\83\81[
\83o
\81[
\83W
\83\87\83\93
325 var outMinor : DWORD; //
\83}
\83C
\83i
\81[
\83o
\81[
\83W
\83\87\83\93
326 var outRelease : string; //
\83\8a\83\8a\81[
\83X
\92i
\8aK
\96¼
327 var outRevision : DWORD //
\83\8a\83r
\83W
\83\87\83\93\83i
\83\93\83o
\81[
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 );
344 // *************************************************************************
345 //
\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©
346 // *************************************************************************
347 function TBoardPlugIn.AcceptURL(
352 if Assigned( FAcceptURL ) then
353 Result := FAcceptURL( PChar( inURL ) )
355 Result := atNoAccept;
358 // *************************************************************************
359 //
\8ew
\92è
\82µ
\82½ URL
\82©
\82ç
\8eg
\82¦
\82éBoard
\82ÌURL
\82ð
\93±
\82«
\8fo
\82·
360 // *************************************************************************
361 function TBoardPlugIn.ExtractBoardURL(
369 if Assigned( FExtractBoardURL ) then begin
370 FExtractBoardURL( PChar(inURL), URL);
371 Result := string(URL);
372 DisposeResultString(URL);
375 // *************************************************************************
376 //
\83\81\83j
\83\85\81[
\83n
\83\93\83h
\83\89
377 // *************************************************************************
378 procedure TBoardPlugIn.PlugInMenu(
379 inHandle : HMENU //
\83\81\83j
\83\85\81[
\83n
\83\93\83h
\83\8b
383 if Assigned( FPlugInMenu ) then
384 FPlugInMenu( inHandle );
388 // *************************************************************************
389 // TThreadItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
390 // *************************************************************************
391 procedure TBoardPlugIn.CreateThreadItem(
392 threadItem : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
396 if Assigned( FCreateThreadItem ) then
397 FCreateThreadItem( threadItem );
401 // *************************************************************************
402 // TThreadItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
403 // *************************************************************************
404 procedure TBoardPlugIn.DisposeThreadItem(
405 threadItem : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
409 if Assigned( FDisposeThreadItem ) then
410 FDisposeThreadItem( threadItem );
414 // *************************************************************************
415 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
416 // *************************************************************************
417 function TBoardPlugIn.DownloadThread(
418 threadItem : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
422 if Assigned( FDownloadThread ) then
423 Result := FDownloadThread( threadItem )
429 // *************************************************************************
430 //
\8f\91\82«
\8d\9e\82Ý
\82ð
\8ew
\8e¦
431 // *************************************************************************
432 function TBoardPlugIn.WriteThread(
433 threadItem : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
434 inName : string; //
\96¼
\91O(
\83n
\83\93\83h
\83\8b)
435 inMail : string; //
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
436 inMessage : string //
\96{
\95¶
437 ) : TDownloadState; //
\8f\91\82«
\8d\9e\82Ý
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
440 if Assigned( FWriteThread ) then
441 Result := FWriteThread( threadItem, PChar( inName ), PChar( inMail ), PChar( inMessage ) )
447 // *************************************************************************
448 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é html
\82ð
\97v
\8b\81
449 // *************************************************************************
450 function TBoardPlugIn.GetRes(
451 threadItem : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
452 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
453 ) : string; //
\95\
\8e¦
\82·
\82é HTML
458 if Assigned( FGetRes ) then begin
459 tmp := FGetRes( threadItem, inNo );
461 Result := string( tmp );
463 DisposeResultString( tmp );
469 // *************************************************************************
470 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é Dat
\82ð
\97v
\8b\81
471 // *************************************************************************
472 function TBoardPlugIn.GetDat(
473 threadItem : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
474 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
475 ) : string; //
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\82Ìdat
\8c`
\8e®
480 if Assigned( FGetDat ) then begin
481 tmp := FGetDat( threadItem, inNo );
483 Result := string( tmp );
485 DisposeResultString(tmp); end;
490 // *************************************************************************
491 //
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_ html
\82ð
\97v
\8b\81
492 // *************************************************************************
493 function TBoardPlugIn.GetHeader(
494 threadItem : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
495 inOptionalHeader : string //
\92Ç
\89Á
\82Ì
\83w
\83b
\83_
496 ) : string; //
\90®
\8c`
\82³
\82ê
\82½ HTML
501 if Assigned( FGetHeader ) then begin
502 tmp := FGetHeader( threadItem, PChar( inOptionalHeader ) );
504 Result := string( tmp );
506 DisposeResultString( tmp );
512 // *************************************************************************
513 //
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^ html
\82ð
\97v
\8b\81
514 // *************************************************************************
515 function TBoardPlugIn.GetFooter(
516 threadItem : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
517 inOptionalFooter : string //
\92Ç
\89Á
\82Ì
\83t
\83b
\83^
518 ) : string; //
\90®
\8c`
\82³
\82ê
\82½ HTML
523 if Assigned( FGetFooter ) then begin
524 tmp := FGetFooter( threadItem, PChar( inOptionalFooter ) );
525 Result := string( tmp );
526 DisposeResultString( tmp );
531 // *************************************************************************
532 //
\82±
\82Ì ThreadItem
\82ª
\91®
\82·
\82é
\94Â
\82Ì URL
\82ð
\97v
\8b\81
533 // *************************************************************************
534 function TBoardPlugIn.GetBoardURL(
535 threadItem : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
541 if Assigned( FGetBoardURL ) then begin
542 tmp := FGetBoardURL( threadItem );
543 Result := string( tmp );
544 DisposeResultString( tmp );
549 // *************************************************************************
550 // TBoardItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
551 // *************************************************************************
552 procedure TBoardPlugIn.CreateBoardItem(
553 boardItem : DWORD // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
557 if Assigned( FCreateBoardItem ) then
558 FCreateBoardItem( boardItem );
562 // *************************************************************************
563 // TBoardItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
564 // *************************************************************************
565 procedure TBoardPlugIn.DisposeBoardItem(
566 boardItem : DWORD // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
570 if Assigned( FDisposeBoardItem ) then
571 FDisposeBoardItem( boardItem );
575 // *************************************************************************
576 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
577 // *************************************************************************
578 function TBoardPlugIn.DownloadBoard(
579 boardItem : DWORD // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
583 if Assigned( FDownloadBoard ) then
584 Result := FDownloadBoard( boardItem )
590 // *************************************************************************
591 //
\83X
\83\8c\97§
\82Ä
\82ð
\8ew
\8e¦
592 // *************************************************************************
593 function TBoardPlugIn.CreateThread(
594 boardItem : DWORD; // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
595 inSubject : string; //
\83X
\83\8c\83^
\83C
596 inName : string; //
\96¼
\91O(
\83n
\83\93\83h
\83\8b)
597 inMail : string; //
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
598 inMessage : string //
\96{
\95¶
599 ) : TDownloadState; //
\8f\91\82«
\8d\9e\82Ý
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
602 if Assigned( FCreateThread ) then
603 Result := FCreateThread( boardItem, PChar( inSubject ), PChar( inName ), PChar( inMail ), PChar( inMessage ) )
609 // *************************************************************************
610 //
\82±
\82Ì
\94Â
\82É
\95Û
\97L
\82µ
\82Ä
\82¢
\82é
\83X
\83\8c\82ð
\97ñ
\8b\93
611 // *************************************************************************
612 procedure TBoardPlugIn.EnumThread(
613 boardItem : DWORD; // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
614 inCallBack : TBoardItemEnumThreadCallBack
618 if Assigned( FEnumThread ) then
619 FEnumThread( boardItem, inCallBack );
623 // *************************************************************************
624 //
\83t
\83@
\83C
\83\8b\96¼
\82©
\82ç
\83X
\83\8c\83b
\83h
\82Ì URL
\82ð
\97v
\8b\81
625 // *************************************************************************
626 function TBoardPlugIn.FileName2ThreadURL(
627 boardItem : DWORD; // BoardItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
634 if Assigned( FFileName2ThreadURL ) then begin
635 tmp := FFileName2ThreadURL( boardItem, PChar( inFileName ) );
636 Result := string( tmp );
637 DisposeResultString( tmp );
642 // *************************************************************************
643 //
\83v
\83\89\83O
\83C
\83\93\82Ì API
\82ð
\8eæ
\93¾
644 // *************************************************************************
645 procedure TBoardPlugIn.LoadPlugInAPI;
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' );
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' );
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' );