Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/ExternalBoardPlugInMain.pas

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


Revision 1.10.2.3 - (hide annotations) (download) (as text)
Fri Oct 8 05:44:48 2004 UTC (19 years, 6 months ago) by yoffy
Branch: stable
Changes since 1.10.2.2: +8 -2 lines
File MIME type: text/x-pascal
b49 、ヒ・゙。シ・ク。」

1 yoffy 1.1 unit ExternalBoardPlugInMain;
2    
3     interface
4    
5     uses
6 yoffy 1.8 Windows, Classes, SysUtils, Menus,
7 yoffy 1.1 IdHTTP, IdComponent, IdGlobal, IdException,
8     AbonUnit;
9    
10     type
11    
12     // 繝?繧ヲ繝ウ繝ュ繝シ繝峨′謌仙粥縺励◆縺九←縺?°
13     TDownloadState = (dsWait, dsWork, dsComplete, dsDiffComplete, dsNotModify, dsAbort, dsError);
14    
15 yoffy 1.4 // 謖?ョ壹@縺 URL 繧偵%縺ョ繝励Λ繧ー繧、繝ウ縺ァ蜿励¢莉倥¢繧九°縺ゥ縺?°
16     TAcceptType = (atNoAccept, atBBS, atBoard, atThread);
17    
18 yoffy 1.8 // 繝。繝九Η繝シ繝上Φ繝峨Λ
19     TMenuHandler = procedure(
20     inHandle : HMENU // 繝。繝九Η繝シ繝上Φ繝峨Ν
21     ); stdcall;
22    
23     // *************************************************************************
24     // 繝励Λ繧ー繧、繝ウ縺?豁」縺励¥)繝ュ繝シ繝峨&繧後◆
25     // *************************************************************************
26     TOnLoad = procedure (
27     inInstance : DWORD // 繝励Λ繧ー繧、繝ウ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
28     ); stdcall;
29    
30 yoffy 1.1 // *************************************************************************
31     // 繝励Λ繧ー繧、繝ウ縺ョ繝舌?繧ク繝ァ繝ウ
32     // *************************************************************************
33     TOnVersionInfo = procedure(
34     var outAgent : PChar; // 繝舌?繧ク繝ァ繝ウ繧剃ク?蛻?性縺セ縺ェ縺?エ皮イ九↑蜷咲ァー
35     var outMajor : DWORD; // 繝。繧ク繝」繝シ繝舌?繧ク繝ァ繝ウ
36     var outMinor : DWORD; // 繝槭う繝翫?繝舌?繧ク繝ァ繝ウ
37     var outRelease : PChar; // 繝ェ繝ェ繝シ繧ケ谿オ髫主錐
38     var outRevision : DWORD // 繝ェ繝薙ず繝ァ繝ウ繝翫Φ繝舌?
39     ); stdcall;
40    
41     // *************************************************************************
42     // 謖?ョ壹@縺 URL 繧偵%縺ョ繝励Λ繧ー繧、繝ウ縺ァ蜿励¢莉倥¢繧九°縺ゥ縺?°
43     // *************************************************************************
44     TOnAcceptURL = function(
45     inURL : PChar // 蛻、譁ュ繧剃サー縺?〒縺?k URL
46 yoffy 1.4 ): TAcceptType; stdcall; // URL 縺ョ遞ョ鬘?/span>
47 yoffy 1.1
48     // *************************************************************************
49 yoffy 1.8 // 繝。繝九Η繝シ繝上Φ繝峨Λ
50     // *************************************************************************
51     TOnPlugInMenu = procedure(
52     inInstance : DWORD // 繝。繝九Η繝シ繝上Φ繝峨Ν
53     ); stdcall;
54    
55     // *************************************************************************
56 yoffy 1.1 // 繧ケ繝ャ荳?隕ァ縺ョ URL 縺九i繧ケ繝ャ繝?ラ縺ョ URL 繧貞ー弱″蜃コ縺?/span>
57     // *************************************************************************
58     TOnListURL2ThreadURL = function(
59     inListURL : PChar; // 繧ケ繝ャ荳?隕ァ繧堤、コ縺励◆ URL
60     inFileName : PChar // 繧ケ繝ャ繝?ラ繝輔ぃ繧、繝ォ蜷?/span>
61     ) : PChar; stdcall; // 繧ケ繝ャ繝?ラ縺ョ URL
62    
63 yoffy 1.10.2.2
64 yoffy 1.1 function CreateResultString(
65     resultStr : string
66     ) : PChar; stdcall;
67    
68     procedure DisposeResultString(
69     resultStr : PChar
70     ); stdcall;
71    
72 yoffy 1.10.2.2 var
73     socket : TIdHTTP;
74    
75 yoffy 1.1 implementation
76    
77 yoffy 1.6 uses ExternalBoardManager, ExternalThreadItem, GikoSystem, BoardGroup, Giko;
78 yoffy 1.1
79     // *************************************************************************
80     // 謌サ繧雁?、縺 PChar 縺ァ縺ゅk API 縺ョ繝。繝「繝ェ繧堤「コ菫昴☆繧?/span>
81     // *************************************************************************
82     function CreateResultString(
83     resultStr : string
84     ) : PChar; stdcall;
85     var
86     tmp : PChar;
87     begin
88    
89     tmp := PChar( resultStr );
90     GetMem( Result, Length( tmp ) + 1 );
91     Move( tmp^, Result^, Length( tmp ) + 1 );
92    
93     end;
94    
95     // *************************************************************************
96     // 謌サ繧雁?、縺 PChar 縺ァ縺ゅk API 縺ョ繝。繝「繝ェ繧帝幕謾セ縺吶k
97     // *************************************************************************
98     procedure DisposeResultString(
99     resultStr : PChar
100     ); stdcall;
101     begin
102    
103     FreeMem( resultStr );
104    
105     end;
106    
107     // *************************************************************************
108     // 繝励Ο繧ー繝ゥ繝?譛ャ菴薙?繝舌?繧ク繝ァ繝ウ繧貞叙蠕励☆繧?/span>
109     // *************************************************************************
110     procedure VersionInfo(
111     var outAgent : PChar; // 繝舌?繧ク繝ァ繝ウ繧剃ク?蛻?性縺セ縺ェ縺?エ皮イ九↑蜷咲ァー
112     var outMajor : DWORD; // 繝。繧ク繝」繝シ繝舌?繧ク繝ァ繝ウ
113     var outMinor : DWORD; // 繝槭う繝翫?繝舌?繧ク繝ァ繝ウ
114     var outRelease : PChar; // 繝ェ繝ェ繝シ繧ケ谿オ髫主錐
115     var outRevision : DWORD // 繝ェ繝薙ず繝ァ繝ウ繝翫Φ繝舌?
116     ); stdcall;
117     begin
118    
119     {$IFDEF DEBUG}
120     Writeln('ExternalBoardManager.VersionInfo');
121     {$ENDIF}
122     outAgent := CreateResultString( PChar( APP_NAME ) );
123     outMajor := 1;
124     outMinor := 0;
125     outRelease := CreateResultString( PChar( BETA_VERSION_NAME_E ) );
126     outRevision := BETA_VERSION;
127    
128     end;
129    
130     // *************************************************************************
131 yoffy 1.6 // 繝。繝?そ繝シ繧ク繧定。ィ遉コ縺吶k
132     // *************************************************************************
133     procedure InternalPrint(
134     inMessage : PChar // 繝。繝?そ繝シ繧ク
135     ); stdcall;
136     begin
137    
138     GikoForm.AddMessageList( inMessage, nil, gmiWhat );
139    
140     end;
141    
142     // *************************************************************************
143     // 繝?ヰ繝?げ繝。繝?そ繝シ繧ク繧定。ィ遉コ縺吶k
144     // *************************************************************************
145     procedure InternalDebugPrint(
146     inMessage : PChar // 繝。繝?そ繝シ繧ク
147     ); stdcall;
148     begin
149    
150     {$IFDEF DEBUG}
151     Writeln( inMessage );
152     {$ENDIF}
153    
154     end;
155    
156     // *************************************************************************
157 yoffy 1.2 // 繧ス繧ア繝?ヨ繧貞?譛溷喧縺吶k(髮醍畑髢「謨ー)
158 yoffy 1.1 // *************************************************************************
159 yoffy 1.2 procedure InitializeSocket(
160     inSocket : TIdHTTP
161     );
162 yoffy 1.1 begin
163    
164 yoffy 1.2 if inSocket <> nil then begin
165 yoffy 1.1 // 繧、繝吶Φ繝医?險ュ螳?/span>
166     if Assigned( OnWork ) then
167 yoffy 1.2 inSocket.OnWork := OnWork;
168 yoffy 1.1 if Assigned( OnWorkBegin ) then
169 yoffy 1.2 inSocket.OnWorkBegin := OnWorkBegin;
170 yoffy 1.1 if Assigned( OnWorkEnd ) then
171 yoffy 1.2 inSocket.OnWorkEnd := OnWorkEnd;
172 yoffy 1.1
173     // 騾壻ソ。縺ォ髢「縺吶k險ュ螳?/span>
174 yoffy 1.2 inSocket.Request.CustomHeaders.Clear;
175     inSocket.Response.Clear;
176     inSocket.Request.Clear;
177    
178     inSocket.Request.UserAgent := GikoSys.GetUserAgent;
179     inSocket.RecvBufferSize := Gikosys.Setting.RecvBufferSize;
180     inSocket.ProxyParams.BasicAuthentication := False;
181 yoffy 1.1 {$IFDEF DEBUG}
182     Writeln('------------------------------------------------------------');
183     {$ENDIF}
184 yoffy 1.2 //inSocket.AllowCookies := False;
185 yoffy 1.1 if GikoSys.Setting.ReadProxy then begin
186     if GikoSys.Setting.ProxyProtocol then
187 yoffy 1.2 inSocket.ProtocolVersion := pv1_1
188 yoffy 1.1 else
189 yoffy 1.2 inSocket.ProtocolVersion := pv1_0;
190     inSocket.ProxyParams.ProxyServer := GikoSys.Setting.ReadProxyAddress;
191     inSocket.ProxyParams.ProxyPort := GikoSys.Setting.ReadProxyPort;
192     inSocket.ProxyParams.ProxyUsername := GikoSys.Setting.ReadProxyUserID;
193     inSocket.ProxyParams.ProxyPassword := GikoSys.Setting.ReadProxyPassword;
194 yoffy 1.1 if GikoSys.Setting.ReadProxyUserID <> '' then
195 yoffy 1.2 inSocket.ProxyParams.BasicAuthentication := True;
196 yoffy 1.1 {$IFDEF DEBUG}
197     Writeln('繝励Ο繧ュ繧キ險ュ螳壹≠繧?#39;);
198     Writeln('繝帙せ繝? ' + GikoSys.Setting.ReadProxyAddress);
199     Writeln('繝昴?繝? ' + IntToStr( GikoSys.Setting.ReadProxyPort ));
200     {$ENDIF}
201     end else begin
202     if GikoSys.Setting.Protocol then
203 yoffy 1.2 inSocket.ProtocolVersion := pv1_1
204 yoffy 1.1 else
205 yoffy 1.2 inSocket.ProtocolVersion := pv1_0;
206     inSocket.ProxyParams.ProxyServer := '';
207     inSocket.ProxyParams.ProxyPort := 80;
208     inSocket.ProxyParams.ProxyUsername := '';
209     inSocket.ProxyParams.ProxyPassword := '';
210 yoffy 1.1 {$IFDEF DEBUG}
211     Writeln('繝励Ο繧ュ繧キ險ュ螳壹↑縺?#39;);
212     {$ENDIF}
213     end;
214 yoffy 1.2 end;
215    
216     end;
217    
218     // *************************************************************************
219     // 謖?ョ壹@縺 URL 繧偵ム繧ヲ繝ウ繝ュ繝シ繝峨@縺ヲ霑斐☆
220     // *************************************************************************
221     function InternalDownload(
222     inURL : PChar; // 繝?繧ヲ繝ウ繝ュ繝シ繝峨☆繧 URL
223     var ioModified : Double; // 譛?蠕後↓蜿門セ励@縺滓律譎?/span>
224     var outResultData : PChar; // 繝?繧ヲ繝ウ繝ュ繝シ繝峨&繧後◆譁?ュ怜?
225     inRangeStart : DWORD; // 髢句ァ倶ス咲スョ
226     inRangeEnd : DWORD // 邨ゆコ?ス咲スョ
227     ) : Longint; stdcall; // 繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝?/span>
228     var
229 yoffy 1.10.2.2 // httpSocket : TIdHTTP;
230 yoffy 1.2 resStream : TMemoryStream;
231     content : string;
232 yoffy 1.10.2.3 const
233     LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
234 yoffy 1.2 begin
235    
236     {$IFDEF DEBUG}
237     Writeln('ExternalBoardManager.InternalDownload');
238     {$ENDIF}
239 yoffy 1.10.2.2 // Result := -1;
240 yoffy 1.2
241 yoffy 1.10.2.2 socket := TIdHTTP.Create( nil );
242 yoffy 1.2 try
243 yoffy 1.10.2.2 InitializeSocket( socket );
244 yoffy 1.1
245 yoffy 1.10.2.2 socket.Request.ContentRangeStart := inRangeStart;
246     socket.Request.ContentRangeEnd := inRangeEnd;
247 yoffy 1.1 if (ioModified <> 0) and (ioModified <> ZERO_DATE) then
248 yoffy 1.10.2.2 socket.Request.LastModified := ioModified - OffsetFromUTC;
249 yoffy 1.1 if inRangeStart = 0 then
250 yoffy 1.10.2.2 socket.Request.AcceptEncoding := 'gzip'
251 yoffy 1.1 else
252 yoffy 1.10.2.2 socket.Request.AcceptEncoding := '';
253     socket.Request.Accept := 'text/html';
254 yoffy 1.1
255     resStream := TMemoryStream.Create;
256     try
257     try
258     resStream.Clear;
259     {$IFDEF DEBUG}
260     Writeln('URL: ' + inURL);
261     {$ENDIF}
262 yoffy 1.10.2.2 socket.Get( inURL, resStream );
263 yoffy 1.1 {$IFDEF DEBUG}
264     Writeln('蜿門セ励〒萓句、悶↑縺?#39;);
265     {$ENDIF}
266    
267 yoffy 1.10.2.2 content := GikoSys.GzipDecompress( resStream, socket.Response.ContentEncoding );
268 yoffy 1.1
269 yoffy 1.10.2.2 ioModified := socket.Response.LastModified;
270    
271     Result := socket.ResponseCode;
272 yoffy 1.1 if (Length( content ) = 0) and (Result = 206) then
273     Result := 304;
274 yoffy 1.10.2.3 //縺励◆繧峨?JBBS縺ッ繝倥ャ繝?縺ォ繧ィ繝ゥ繝シ諠??ア縺瑚シ峨k繧峨@縺??縺ァ縲√%縺薙〒繝√ぉ繝?け
275     if ( AnsiPos(LIVEDOOR_URL, inURL) > 0 ) and (Result = 200) then begin
276     if( AnsiPos('STORAGE IN', socket.Response.RawHeaders.Text) > 0 ) then begin
277     Result := 302;
278     end;
279     end;
280 yoffy 1.1 outResultData := CreateResultString( content );
281     except
282     on E: EIdSocketError do begin
283     ioModified := ZERO_DATE;
284     outResultData := nil;
285 yoffy 1.10.2.2 Result := socket.ResponseCode;
286 yoffy 1.1 end;
287     on E: EIdConnectException do begin
288     ioModified := ZERO_DATE;
289     outResultData := nil;
290 yoffy 1.10.2.2 Result := socket.ResponseCode;
291 yoffy 1.1 //Item.ErrText := E.Message;
292     end;
293 yoffy 1.10.2.2 //荳ュ譁ュ縺輔l縺溘→縺阪さ繧ウ縺ォ蜈・繧?/span>
294     on E: EIdClosedSocket do begin
295     ioModified := ZERO_DATE;
296     outResultData := nil;
297     Result := 408; //譌「縺ォ荳?驛ィDL謌仙粥縺励※縺?k縺ィ繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝峨′200縺ョ縺セ縺セ縺ォ
298     //縺ェ縺」縺ヲ縺励∪縺??縺ァ縲∵?遉コ逧?↓繧ィ繝ゥ繝シ繧ウ繝シ繝峨r霑斐☆
299     end;
300 yoffy 1.1 on E: Exception do begin
301     {$IFDEF DEBUG}
302     Writeln('蜿門セ励〒萓句、悶≠繧?#39;);
303     Writeln('E.Message: ' + E.Message);
304     {$ENDIF}
305     ioModified := ZERO_DATE;
306     outResultData := nil;
307 yoffy 1.10.2.2 Result := socket.ResponseCode;
308 yoffy 1.1 //Item.ErrText := E.Message;
309     end;
310     end;
311     finally
312     resStream.Free;
313     end;
314    
315     finally
316 yoffy 1.10.2.2 socket.Free;
317     socket := nil;
318 yoffy 1.1 end;
319    
320     end;
321    
322     // *************************************************************************
323 yoffy 1.2 // 謖?ョ壹@縺 URL 縺ク繝??繧ソ繧帝?∽ソ。縺吶k
324     // *************************************************************************
325     function InternalPost(
326     inURL : PChar; // 騾∽ソ。縺吶k URL
327     inSource : PChar; // 騾∽ソ。縺吶k蜀?ョケ
328     var outResultData : PChar // 霑斐▲縺ヲ縺阪◆譁?ュ怜?
329     ) : Longint; stdcall; // 繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝?/span>
330     var
331     httpSocket : TIdHTTP;
332     content : string;
333     resStream : TStringStream;
334     sourceStream : TStringStream;
335 yoffy 1.10.2.2 tmpURL, Protocol, Host, Path, Document, Port, Bookmark : string;
336 yoffy 1.2 begin
337    
338     {$IFDEF DEBUG}
339     Writeln('ExternalBoardManager.InternalPost');
340     {$ENDIF}
341     Result := -1;
342    
343     httpSocket := TIdHTTP.Create( nil );
344     try
345     InitializeSocket( httpSocket );
346 yoffy 1.10.2.2 tmpURL := string(inURL);
347     GikoSys.ParseURI(tmpURL, Protocol,Host, Path, Document, Port, Bookmark);
348 yoffy 1.2 httpSocket.Request.CustomHeaders.Add('Pragma: no-cache');
349     httpSocket.Request.AcceptLanguage := 'ja';
350     httpSocket.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
351     httpSocket.Request.ContentType := 'application/x-www-form-urlencoded';
352 yoffy 1.10.2.2 httpSocket.Request.Referer := Protocol + '://' + Host;
353 yoffy 1.2 resStream := TStringStream.Create( content );
354     sourceStream := TStringStream.Create( string( inSource ) );
355     try
356     try
357     {$IFDEF DEBUG}
358     Writeln('URL: ' + inURL);
359     Writeln('Source: ' + inSource);
360     {$ENDIF}
361     httpSocket.Post( string( inURL ), sourceStream, resStream );
362     {$IFDEF DEBUG}
363     Writeln('蜿門セ励〒萓句、悶↑縺?#39;);
364     {$ENDIF}
365    
366     Result := httpSocket.ResponseCode;
367    
368     outResultData := CreateResultString( resStream.DataString );
369     except
370     on E: EIdSocketError do begin
371     outResultData := nil;
372     end;
373     on E: EIdConnectException do begin
374     outResultData := nil;
375     end;
376     on E: Exception do begin
377     {$IFDEF DEBUG}
378     Writeln('蜿門セ励〒萓句、悶≠繧?#39;);
379     Writeln('E.Message: ' + E.Message);
380     {$ENDIF}
381 yoffy 1.6 outResultData := CreateResultString( resStream.DataString );
382 yoffy 1.2 Result := httpSocket.ResponseCode;
383     end;
384     end;
385     finally
386     resStream.Free;
387     sourceStream.Free;
388     end;
389     finally
390     httpSocket.Free;
391     end;
392    
393     end;
394    
395     // *************************************************************************
396 yoffy 1.1 // ?偵■繧?s縺ュ繧九? dat 蠖「蠑上r繝ュ繝シ繧ォ繝ォ縺ゅ⊂縲懊s縺ォ騾壹☆
397     // *************************************************************************
398 h677 1.5
399 yoffy 1.1 function InternalAbon(
400 yoffy 1.3 inDatText : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;>[謾ケ陦珪 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
401 h677 1.5 inDatPath : PChar // dat 繝輔ぃ繧、繝ォ縺ョ繝輔Ν繝代せ
402    
403 yoffy 1.7 ) : PChar; stdcall; // 縺ゅ⊂縲懊s貂医∩縺ョ dat 蠖「蠑上ユ繧ュ繧ケ繝?/span>
404 yoffy 1.1 var
405     datList : TStringList;
406 yoffy 1.6 FileName : String;
407 yoffy 1.1 begin
408    
409     datList := TStringList.Create;
410 h677 1.9 try
411     datList.Text := string( inDatText );
412     FileName := string( inDatPath );
413     GikoSys.FAbon.IndividualAbon( datList, ChangeFileExt(FileName,'.NG'));
414     GikoSys.FAbon.Execute( datList );
415     GikoSys.FSelectResFilter.Execute( datList );
416    
417     Result := CreateResultString( datList.Text );
418     finally
419     datList.Free;
420     end;
421 yoffy 1.1
422    
423     end;
424 h677 1.5 // *************************************************************************
425     // ?偵■繧?s縺ュ繧九? dat 蠖「蠑上r繝ュ繝シ繧ォ繝ォ縺ゅ⊂縲懊s縺ォ騾壹☆
426     // 縺溘□縺励??シ代Ξ繧ケ縺壹▽
427     // *************************************************************************
428    
429     function InternalAbonForOne(
430 yoffy 1.6 inDatText : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;>[謾ケ陦珪 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
431     inDatPath : PChar; // dat 繝輔ぃ繧、繝ォ縺ョ繝輔Ν繝代せ
432     inNo : Integer // 隕∵アゅ&繧後◆繝ャ繧ケ逡ェ蜿キ
433 h677 1.5 ) : PChar; stdcall; // 縺ゅ⊂縲懊s貂医∩縺ョ dat 蠖「蠑上ユ繧ュ繧ケ繝?/span>
434     var
435     datString : String;
436 yoffy 1.6 FileName : String;
437 h677 1.5 begin
438    
439     datString := string( inDatText );
440 yoffy 1.6 FileName := string( inDatPath );
441 h677 1.5 GikoSys.FAbon.IndividualAbon( datString, ChangeFileExt(FileName,'.NG'), inNo);
442     GikoSys.FAbon.Execute( datString , inNo);
443     GikoSys.FSelectResFilter.Execute( datString , inNo );
444    
445     Result := CreateResultString( datString );
446    
447     end;
448 yoffy 1.1
449     // *************************************************************************
450     // ?偵■繧?s縺ュ繧九? dat 蠖「蠑 1 陦後r HTML 縺ォ螟画鋤縺吶k
451     // *************************************************************************
452     function InternalDat2HTML(
453 yoffy 1.6 inDatRes : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;> 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
454     inResNo : DWORD; // 繝ャ繧ケ逡ェ蜿キ
455     inIsNew : Boolean // 譁ー逹?繝ャ繧ケ縺ェ繧 True
456 yoffy 1.1 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
457     var
458     board : TBoard;
459     threadItem : TThreadItem;
460     begin
461    
462     // 繝?繝溘?縺ョ繧ッ繝ゥ繧ケ
463 yoffy 1.7 board := TBoard.Create( nil, 'about://dummy/' );
464     threadItem := TThreadItem.Create( nil, 'about://dummy/test/read.cgi/dummy/' );
465 yoffy 1.1 try
466 yoffy 1.7 try
467     board.Add( threadItem );
468 yoffy 1.1
469 yoffy 1.7 Result := ThreadItemDat2HTML( DWORD( threadItem ), inDatRes, inResNo, inIsNew );
470     except
471     Result := nil;
472     end;
473     finally
474     board.Free;
475 yoffy 1.1 end;
476    
477     end;
478    
479 yoffy 1.8 // *************************************************************************
480     // 繝励Λ繧ー繧、繝ウ繝。繝九Η繝シ縺ォ鬆?岼繧定ソス蜉?
481     // *************************************************************************
482     function AddPlugInMenu(
483     inInstance : DWORD; // 繝励Λ繧ー繧、繝ウ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
484     inCaption : PChar // 繝。繝九Η繝シ縺ォ陦ィ遉コ縺吶k譁?ュ怜?
485     ) : HMENU; stdcall; // 繝。繝九Η繝シ繝上Φ繝峨Ν縲∬ソス蜉?縺ォ螟ア謨励@縺溷?エ蜷医? NULL
486     var
487     newItem : TMenuItem;
488     begin
489    
490     try
491     newItem := TMenuItem.Create( nil );
492     newItem.Caption := inCaption;
493     newItem.Tag := inInstance;
494     newItem.OnClick := GikoForm.OnPlugInMenuItem;
495     GikoForm.PlugInMenu.Add( newItem );
496    
497     Result := newItem.Handle;
498     except
499 h677 1.10 Result := 0;
500 yoffy 1.8 end;
501    
502     end;
503    
504     // *************************************************************************
505     // 繝励Λ繧ー繧、繝ウ繝。繝九Η繝シ縺九i鬆?岼繧貞炎髯、
506     // *************************************************************************
507     procedure RemovePlugInMenu(
508     inHandle : HMENU // 繝。繝九Η繝シ繝上Φ繝峨Ν
509     ); stdcall;
510     var
511     i : Integer;
512     begin
513    
514     for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
515     if GikoForm.PlugInMenu.Items[ i ].Handle = inHandle then begin
516 h677 1.10 GikoForm.PlugInMenu.items[i].Free;
517     //GikoForm.PlugInMenu.Delete( i );
518 yoffy 1.8 Break;
519     end;
520     end;
521    
522     end;
523    
524 yoffy 1.1 exports
525     CreateResultString,
526     DisposeResultString,
527     VersionInfo,
528 yoffy 1.6 InternalPrint,
529     InternalDebugPrint,
530 yoffy 1.1 InternalDownload,
531 yoffy 1.2 InternalPost,
532 yoffy 1.1 InternalAbon,
533 yoffy 1.6 InternalAbonForOne,
534 yoffy 1.8 InternalDat2HTML,
535     AddPlugInMenu,
536     RemovePlugInMenu;
537 yoffy 1.1
538     end.

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