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.13 - (hide annotations) (download) (as text)
Mon Sep 6 16:41:17 2004 UTC (19 years, 7 months ago) by h677
Branch: MAIN
CVS Tags: v1_49_0_540, v1_49_0_542, v1_49_0_545, v1_49_0_544, v1_49_0_546, v1_49_0_541
Changes since 1.12: +5 -1 lines
File MIME type: text/x-pascal
、キ、ソ、鬢ミJBBSヘム、ホイ盞??ー・チ・ァ・テ・ッ、ホ・ウ。シ・ノトノイテ

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 h677 1.11
64 yoffy 1.1 function CreateResultString(
65     resultStr : string
66     ) : PChar; stdcall;
67    
68     procedure DisposeResultString(
69     resultStr : PChar
70     ); stdcall;
71    
72 h677 1.11 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 h677 1.11 // httpSocket : TIdHTTP;
230 yoffy 1.2 resStream : TMemoryStream;
231     content : string;
232 h677 1.12
233 yoffy 1.2 begin
234    
235     {$IFDEF DEBUG}
236     Writeln('ExternalBoardManager.InternalDownload');
237     {$ENDIF}
238 h677 1.11 // Result := -1;
239 yoffy 1.2
240 h677 1.11 socket := TIdHTTP.Create( nil );
241 yoffy 1.2 try
242 h677 1.11 InitializeSocket( socket );
243 yoffy 1.1
244 h677 1.11 socket.Request.ContentRangeStart := inRangeStart;
245     socket.Request.ContentRangeEnd := inRangeEnd;
246 yoffy 1.1 if (ioModified <> 0) and (ioModified <> ZERO_DATE) then
247 h677 1.11 socket.Request.LastModified := ioModified - OffsetFromUTC;
248 yoffy 1.1 if inRangeStart = 0 then
249 h677 1.11 socket.Request.AcceptEncoding := 'gzip'
250 yoffy 1.1 else
251 h677 1.11 socket.Request.AcceptEncoding := '';
252     socket.Request.Accept := 'text/html';
253 yoffy 1.1
254     resStream := TMemoryStream.Create;
255     try
256     try
257     resStream.Clear;
258     {$IFDEF DEBUG}
259     Writeln('URL: ' + inURL);
260     {$ENDIF}
261 h677 1.11 socket.Get( inURL, resStream );
262 yoffy 1.1 {$IFDEF DEBUG}
263     Writeln('蜿門セ励〒萓句、悶↑縺?#39;);
264     {$ENDIF}
265    
266 h677 1.11 content := GikoSys.GzipDecompress( resStream, socket.Response.ContentEncoding );
267 yoffy 1.1
268 h677 1.11 ioModified := socket.Response.LastModified;
269    
270     Result := socket.ResponseCode;
271 yoffy 1.1 if (Length( content ) = 0) and (Result = 206) then
272     Result := 304;
273 h677 1.13 if ( AnsiPos('http://jbbs.livedoor.com/', inURL) > 0 ) and (Result = 200) then begin
274     if( AnsiPos('STORAGE IN', socket.Response.RawHeaders.Text) > 0 ) then begin
275     Result := 302;
276     end;
277     end;
278 yoffy 1.1 outResultData := CreateResultString( content );
279     except
280     on E: EIdSocketError do begin
281     ioModified := ZERO_DATE;
282     outResultData := nil;
283 h677 1.11 Result := socket.ResponseCode;
284 yoffy 1.1 end;
285     on E: EIdConnectException do begin
286     ioModified := ZERO_DATE;
287     outResultData := nil;
288 h677 1.11 Result := socket.ResponseCode;
289 yoffy 1.1 //Item.ErrText := E.Message;
290     end;
291 h677 1.11 //荳ュ譁ュ縺輔l縺溘→縺阪さ繧ウ縺ォ蜈・繧?/span>
292     on E: EIdClosedSocket do begin
293     ioModified := ZERO_DATE;
294     outResultData := nil;
295     Result := 408; //譌「縺ォ荳?驛ィDL謌仙粥縺励※縺?k縺ィ繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝峨′200縺ョ縺セ縺セ縺ォ
296     //縺ェ縺」縺ヲ縺励∪縺??縺ァ縲∵?遉コ逧?↓繧ィ繝ゥ繝シ繧ウ繝シ繝峨r霑斐☆
297     end;
298 yoffy 1.1 on E: Exception do begin
299     {$IFDEF DEBUG}
300     Writeln('蜿門セ励〒萓句、悶≠繧?#39;);
301     Writeln('E.Message: ' + E.Message);
302     {$ENDIF}
303     ioModified := ZERO_DATE;
304     outResultData := nil;
305 h677 1.11 Result := socket.ResponseCode;
306 yoffy 1.1 //Item.ErrText := E.Message;
307     end;
308     end;
309     finally
310     resStream.Free;
311     end;
312    
313     finally
314 h677 1.11 socket.Free;
315     socket := nil;
316 yoffy 1.1 end;
317    
318     end;
319    
320     // *************************************************************************
321 yoffy 1.2 // 謖?ョ壹@縺 URL 縺ク繝??繧ソ繧帝?∽ソ。縺吶k
322     // *************************************************************************
323     function InternalPost(
324     inURL : PChar; // 騾∽ソ。縺吶k URL
325     inSource : PChar; // 騾∽ソ。縺吶k蜀?ョケ
326     var outResultData : PChar // 霑斐▲縺ヲ縺阪◆譁?ュ怜?
327     ) : Longint; stdcall; // 繝ャ繧ケ繝昴Φ繧ケ繧ウ繝シ繝?/span>
328     var
329     httpSocket : TIdHTTP;
330     content : string;
331     resStream : TStringStream;
332     sourceStream : TStringStream;
333 h677 1.12 tmpURL, Protocol, Host, Path, Document, Port, Bookmark : string;
334 yoffy 1.2 begin
335    
336     {$IFDEF DEBUG}
337     Writeln('ExternalBoardManager.InternalPost');
338     {$ENDIF}
339     Result := -1;
340    
341     httpSocket := TIdHTTP.Create( nil );
342     try
343     InitializeSocket( httpSocket );
344 h677 1.12 tmpURL := string(inURL);
345     GikoSys.ParseURI(tmpURL, Protocol,Host, Path, Document, Port, Bookmark);
346 yoffy 1.2 httpSocket.Request.CustomHeaders.Add('Pragma: no-cache');
347     httpSocket.Request.AcceptLanguage := 'ja';
348     httpSocket.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
349     httpSocket.Request.ContentType := 'application/x-www-form-urlencoded';
350 h677 1.12 httpSocket.Request.Referer := Protocol + '://' + Host;
351 yoffy 1.2 resStream := TStringStream.Create( content );
352     sourceStream := TStringStream.Create( string( inSource ) );
353     try
354     try
355     {$IFDEF DEBUG}
356     Writeln('URL: ' + inURL);
357     Writeln('Source: ' + inSource);
358     {$ENDIF}
359     httpSocket.Post( string( inURL ), sourceStream, resStream );
360     {$IFDEF DEBUG}
361     Writeln('蜿門セ励〒萓句、悶↑縺?#39;);
362     {$ENDIF}
363    
364     Result := httpSocket.ResponseCode;
365    
366     outResultData := CreateResultString( resStream.DataString );
367     except
368     on E: EIdSocketError do begin
369     outResultData := nil;
370     end;
371     on E: EIdConnectException do begin
372     outResultData := nil;
373     end;
374     on E: Exception do begin
375     {$IFDEF DEBUG}
376     Writeln('蜿門セ励〒萓句、悶≠繧?#39;);
377     Writeln('E.Message: ' + E.Message);
378     {$ENDIF}
379 yoffy 1.6 outResultData := CreateResultString( resStream.DataString );
380 yoffy 1.2 Result := httpSocket.ResponseCode;
381     end;
382     end;
383     finally
384     resStream.Free;
385     sourceStream.Free;
386     end;
387     finally
388     httpSocket.Free;
389     end;
390    
391     end;
392    
393     // *************************************************************************
394 yoffy 1.1 // ?偵■繧?s縺ュ繧九? dat 蠖「蠑上r繝ュ繝シ繧ォ繝ォ縺ゅ⊂縲懊s縺ォ騾壹☆
395     // *************************************************************************
396 h677 1.5
397 yoffy 1.1 function InternalAbon(
398 yoffy 1.3 inDatText : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;>[謾ケ陦珪 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
399 h677 1.5 inDatPath : PChar // dat 繝輔ぃ繧、繝ォ縺ョ繝輔Ν繝代せ
400    
401 yoffy 1.7 ) : PChar; stdcall; // 縺ゅ⊂縲懊s貂医∩縺ョ dat 蠖「蠑上ユ繧ュ繧ケ繝?/span>
402 yoffy 1.1 var
403     datList : TStringList;
404 yoffy 1.6 FileName : String;
405 yoffy 1.1 begin
406    
407     datList := TStringList.Create;
408 h677 1.9 try
409     datList.Text := string( inDatText );
410     FileName := string( inDatPath );
411     GikoSys.FAbon.IndividualAbon( datList, ChangeFileExt(FileName,'.NG'));
412     GikoSys.FAbon.Execute( datList );
413     GikoSys.FSelectResFilter.Execute( datList );
414    
415     Result := CreateResultString( datList.Text );
416     finally
417     datList.Free;
418     end;
419 yoffy 1.1
420    
421     end;
422 h677 1.5 // *************************************************************************
423     // ?偵■繧?s縺ュ繧九? dat 蠖「蠑上r繝ュ繝シ繧ォ繝ォ縺ゅ⊂縲懊s縺ォ騾壹☆
424     // 縺溘□縺励??シ代Ξ繧ケ縺壹▽
425     // *************************************************************************
426    
427     function InternalAbonForOne(
428 yoffy 1.6 inDatText : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;>[謾ケ陦珪 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
429     inDatPath : PChar; // dat 繝輔ぃ繧、繝ォ縺ョ繝輔Ν繝代せ
430     inNo : Integer // 隕∵アゅ&繧後◆繝ャ繧ケ逡ェ蜿キ
431 h677 1.5 ) : PChar; stdcall; // 縺ゅ⊂縲懊s貂医∩縺ョ dat 蠖「蠑上ユ繧ュ繧ケ繝?/span>
432     var
433     datString : String;
434 yoffy 1.6 FileName : String;
435 h677 1.5 begin
436    
437     datString := string( inDatText );
438 yoffy 1.6 FileName := string( inDatPath );
439 h677 1.5 GikoSys.FAbon.IndividualAbon( datString, ChangeFileExt(FileName,'.NG'), inNo);
440     GikoSys.FAbon.Execute( datString , inNo);
441     GikoSys.FSelectResFilter.Execute( datString , inNo );
442    
443     Result := CreateResultString( datString );
444    
445     end;
446 yoffy 1.1
447     // *************************************************************************
448     // ?偵■繧?s縺ュ繧九? dat 蠖「蠑 1 陦後r HTML 縺ォ螟画鋤縺吶k
449     // *************************************************************************
450     function InternalDat2HTML(
451 yoffy 1.6 inDatRes : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;> 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
452     inResNo : DWORD; // 繝ャ繧ケ逡ェ蜿キ
453     inIsNew : Boolean // 譁ー逹?繝ャ繧ケ縺ェ繧 True
454 yoffy 1.1 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
455     var
456     board : TBoard;
457     threadItem : TThreadItem;
458     begin
459    
460     // 繝?繝溘?縺ョ繧ッ繝ゥ繧ケ
461 yoffy 1.7 board := TBoard.Create( nil, 'about://dummy/' );
462     threadItem := TThreadItem.Create( nil, 'about://dummy/test/read.cgi/dummy/' );
463 yoffy 1.1 try
464 yoffy 1.7 try
465     board.Add( threadItem );
466 yoffy 1.1
467 yoffy 1.7 Result := ThreadItemDat2HTML( DWORD( threadItem ), inDatRes, inResNo, inIsNew );
468     except
469     Result := nil;
470     end;
471     finally
472     board.Free;
473 yoffy 1.1 end;
474    
475     end;
476    
477 yoffy 1.8 // *************************************************************************
478     // 繝励Λ繧ー繧、繝ウ繝。繝九Η繝シ縺ォ鬆?岼繧定ソス蜉?
479     // *************************************************************************
480     function AddPlugInMenu(
481     inInstance : DWORD; // 繝励Λ繧ー繧、繝ウ縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
482     inCaption : PChar // 繝。繝九Η繝シ縺ォ陦ィ遉コ縺吶k譁?ュ怜?
483     ) : HMENU; stdcall; // 繝。繝九Η繝シ繝上Φ繝峨Ν縲∬ソス蜉?縺ォ螟ア謨励@縺溷?エ蜷医? NULL
484     var
485     newItem : TMenuItem;
486     begin
487    
488     try
489     newItem := TMenuItem.Create( nil );
490     newItem.Caption := inCaption;
491     newItem.Tag := inInstance;
492     newItem.OnClick := GikoForm.OnPlugInMenuItem;
493     GikoForm.PlugInMenu.Add( newItem );
494    
495     Result := newItem.Handle;
496     except
497 h677 1.10 Result := 0;
498 yoffy 1.8 end;
499    
500     end;
501    
502     // *************************************************************************
503     // 繝励Λ繧ー繧、繝ウ繝。繝九Η繝シ縺九i鬆?岼繧貞炎髯、
504     // *************************************************************************
505     procedure RemovePlugInMenu(
506     inHandle : HMENU // 繝。繝九Η繝シ繝上Φ繝峨Ν
507     ); stdcall;
508     var
509     i : Integer;
510     begin
511    
512     for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
513     if GikoForm.PlugInMenu.Items[ i ].Handle = inHandle then begin
514 h677 1.10 GikoForm.PlugInMenu.items[i].Free;
515     //GikoForm.PlugInMenu.Delete( i );
516 yoffy 1.8 Break;
517     end;
518     end;
519    
520     end;
521    
522 yoffy 1.1 exports
523     CreateResultString,
524     DisposeResultString,
525     VersionInfo,
526 yoffy 1.6 InternalPrint,
527     InternalDebugPrint,
528 yoffy 1.1 InternalDownload,
529 yoffy 1.2 InternalPost,
530 yoffy 1.1 InternalAbon,
531 yoffy 1.6 InternalAbonForOne,
532 yoffy 1.8 InternalDat2HTML,
533     AddPlugInMenu,
534     RemovePlugInMenu;
535 yoffy 1.1
536     end.

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