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.19 - (hide annotations) (download) (as text)
Sun Feb 18 08:09:21 2007 UTC (17 years, 2 months ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_56_0_715, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_60_0_788, v1_60_0_789, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_60_0_786, v1_60_0_787, v1_56_0_707, v1_59_0_767, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_720, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_57_0_719, v1_57_0_718, v1_56_0_716, v1_56_0_710, v1_56_0_711, v1_56_1_717, v1_56_1_716, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_55_0_696, v1_55_0_697, v1_55_0_694, v1_55_0_695, v1_56_2_724, v1_56_2_722, v1_55_1_697, v1_56_0_714, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_56_0_712, v1_62_0_803, v1_62_0_802, v1_56_0_713, v1_62_0_809, v1_56_0_721, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_59_2_785, marged_bRESPOPUP, v1_56_0_706, v1_60_1_793, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_56_0_709, v1_57_0_744, v1_56_0_708, v1_61_0_800, v1_56_0_699, v1_56_0_698, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb56, Bb55, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58, bRESPOPUP, bListSU
Changes since 1.18: +6 -2 lines
File MIME type: text/x-pascal
セキュリティソフトの誤反応対策機能を追加

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 h677 1.17 AbonUnit, IdAntiFreezeBase;
9 yoffy 1.1
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 // ?<???ャ?若??潟????/span>
19     TMenuHandler = procedure(
20     inHandle : HMENU // ?<???ャ?若??潟????/span>
21     ); stdcall;
22    
23     // *************************************************************************
24     // ?????違?ゃ?潟??(罩c???????若????????
25     // *************************************************************************
26     TOnLoad = procedure (
27     inInstance : DWORD // ?????違?ゃ?潟???ゃ?潟?鴻?帥?潟??/span>
28     ); stdcall;
29    
30 yoffy 1.1 // *************************************************************************
31     // ?????違?ゃ?潟?????若?吾?с??/span>
32     // *************************************************************************
33     TOnVersionInfo = procedure(
34     var outAgent : PChar; // ???若?吾?с?潟??筝??????障????膣?膕?????腱?/span>
35     var outMajor : DWORD; // ?<?吾?c?若???若?吾?с??/span>
36     var outMinor : DWORD; // ???ゃ???若???若?吾?с??/span>
37     var outRelease : PChar; // ?????若?号?????
38     var outRevision : DWORD // ?????吾?с?潟???潟????/span>
39     ); stdcall;
40    
41     // *************************************************************************
42     // ??絎????? URL ???????????違?ゃ?潟?у???篁?????????????
43     // *************************************************************************
44     TOnAcceptURL = function(
45     inURL : PChar // ?ゆ????篁違???с???? URL
46 yoffy 1.4 ): TAcceptType; stdcall; // URL ??┏蕁?
47 yoffy 1.1
48     // *************************************************************************
49 h677 1.16 // ??絎?????URL???上????RL?????????
50     // *************************************************************************
51     TOnExtractBoardURL = procedure(
52     inURL : PChar; // 紊???????URL;
53     var outURL: PChar // 紊?????????URL
54     ); stdcall; // 紊?????????URL
55    
56     // *************************************************************************
57 yoffy 1.8 // ?<???ャ?若??潟????/span>
58     // *************************************************************************
59     TOnPlugInMenu = procedure(
60     inInstance : DWORD // ?<???ャ?若??潟????/span>
61     ); stdcall;
62    
63     // *************************************************************************
64 yoffy 1.1 // ?鴻???荀с? URL ?????鴻??????? URL ??絨????冴??
65     // *************************************************************************
66     TOnListURL2ThreadURL = function(
67     inListURL : PChar; // ?鴻???荀с??腓冴???? URL
68     inFileName : PChar // ?鴻?????????<?ゃ????
69     ) : PChar; stdcall; // ?鴻??????? URL
70    
71 h677 1.11
72 yoffy 1.1 function CreateResultString(
73     resultStr : string
74     ) : PChar; stdcall;
75    
76     procedure DisposeResultString(
77     resultStr : PChar
78     ); stdcall;
79    
80 h677 1.11 var
81     socket : TIdHTTP;
82    
83 yoffy 1.1 implementation
84    
85 h677 1.19 uses ExternalBoardManager, ExternalThreadItem, GikoSystem, BoardGroup, Giko,
86     ReplaceDataModule;
87 yoffy 1.1
88     // *************************************************************************
89     // ?祉???ゃ?? PChar ?с???? API ???<?≪????腆坂?????
90     // *************************************************************************
91     function CreateResultString(
92     resultStr : string
93     ) : PChar; stdcall;
94     var
95     tmp : PChar;
96     begin
97    
98     tmp := PChar( resultStr );
99     GetMem( Result, Length( tmp ) + 1 );
100     Move( tmp^, Result^, Length( tmp ) + 1 );
101    
102     end;
103    
104     // *************************************************************************
105     // ?祉???ゃ?? PChar ?с???? API ???<?≪???????障????
106     // *************************************************************************
107     procedure DisposeResultString(
108     resultStr : PChar
109     ); stdcall;
110     begin
111    
112     FreeMem( resultStr );
113    
114     end;
115    
116     // *************************************************************************
117     // ?????違????????????若?吾?с?潟????緇?????
118     // *************************************************************************
119     procedure VersionInfo(
120     var outAgent : PChar; // ???若?吾?с?潟??筝??????障????膣?膕?????腱?/span>
121     var outMajor : DWORD; // ?<?吾?c?若???若?吾?с??/span>
122     var outMinor : DWORD; // ???ゃ???若???若?吾?с??/span>
123     var outRelease : PChar; // ?????若?号?????
124     var outRevision : DWORD // ?????吾?с?潟???潟????/span>
125     ); stdcall;
126     begin
127    
128     {$IFDEF DEBUG}
129     Writeln('ExternalBoardManager.VersionInfo');
130     {$ENDIF}
131     outAgent := CreateResultString( PChar( APP_NAME ) );
132     outMajor := 1;
133     outMinor := 0;
134     outRelease := CreateResultString( PChar( BETA_VERSION_NAME_E ) );
135     outRevision := BETA_VERSION;
136    
137     end;
138    
139     // *************************************************************************
140 yoffy 1.6 // ?<???祉?若?吾??茵?ず????
141     // *************************************************************************
142     procedure InternalPrint(
143     inMessage : PChar // ?<???祉?若??/span>
144     ); stdcall;
145     begin
146    
147     GikoForm.AddMessageList( inMessage, nil, gmiWhat );
148    
149     end;
150    
151     // *************************************************************************
152     // ???????違?<???祉?若?吾??茵?ず????
153     // *************************************************************************
154     procedure InternalDebugPrint(
155     inMessage : PChar // ?<???祉?若??/span>
156     ); stdcall;
157     begin
158    
159     {$IFDEF DEBUG}
160     Writeln( inMessage );
161     {$ENDIF}
162    
163     end;
164    
165     // *************************************************************************
166 yoffy 1.2 // ?純?宴????????????????(?????∽??
167 yoffy 1.1 // *************************************************************************
168 yoffy 1.2 procedure InitializeSocket(
169     inSocket : TIdHTTP
170     );
171 yoffy 1.1 begin
172    
173 yoffy 1.2 if inSocket <> nil then begin
174 yoffy 1.1 // ?ゃ???潟????┃絎?
175     if Assigned( OnWork ) then
176 yoffy 1.2 inSocket.OnWork := OnWork;
177 yoffy 1.1 if Assigned( OnWorkBegin ) then
178 yoffy 1.2 inSocket.OnWorkBegin := OnWorkBegin;
179 yoffy 1.1 if Assigned( OnWorkEnd ) then
180 yoffy 1.2 inSocket.OnWorkEnd := OnWorkEnd;
181 yoffy 1.1
182     // ??篆<???≪????荐??
183 yoffy 1.2 inSocket.Request.CustomHeaders.Clear;
184     inSocket.Response.Clear;
185     inSocket.Request.Clear;
186    
187     inSocket.Request.UserAgent := GikoSys.GetUserAgent;
188     inSocket.RecvBufferSize := Gikosys.Setting.RecvBufferSize;
189     inSocket.ProxyParams.BasicAuthentication := False;
190 h677 1.15 inSocket.ReadTimeout := GikoSys.Setting.ReadTimeOut;
191 yoffy 1.1 {$IFDEF DEBUG}
192     Writeln('------------------------------------------------------------');
193     {$ENDIF}
194 yoffy 1.2 //inSocket.AllowCookies := False;
195 yoffy 1.1 if GikoSys.Setting.ReadProxy then begin
196     if GikoSys.Setting.ProxyProtocol then
197 yoffy 1.2 inSocket.ProtocolVersion := pv1_1
198 yoffy 1.1 else
199 yoffy 1.2 inSocket.ProtocolVersion := pv1_0;
200     inSocket.ProxyParams.ProxyServer := GikoSys.Setting.ReadProxyAddress;
201     inSocket.ProxyParams.ProxyPort := GikoSys.Setting.ReadProxyPort;
202     inSocket.ProxyParams.ProxyUsername := GikoSys.Setting.ReadProxyUserID;
203     inSocket.ProxyParams.ProxyPassword := GikoSys.Setting.ReadProxyPassword;
204 yoffy 1.1 if GikoSys.Setting.ReadProxyUserID <> '' then
205 yoffy 1.2 inSocket.ProxyParams.BasicAuthentication := True;
206 yoffy 1.1 {$IFDEF DEBUG}
207     Writeln('???????決┃絎?????');
208     Writeln('???鴻??: ' + GikoSys.Setting.ReadProxyAddress);
209     Writeln('???若??: ' + IntToStr( GikoSys.Setting.ReadProxyPort ));
210     {$ENDIF}
211     end else begin
212     if GikoSys.Setting.Protocol then
213 yoffy 1.2 inSocket.ProtocolVersion := pv1_1
214 yoffy 1.1 else
215 yoffy 1.2 inSocket.ProtocolVersion := pv1_0;
216     inSocket.ProxyParams.ProxyServer := '';
217     inSocket.ProxyParams.ProxyPort := 80;
218     inSocket.ProxyParams.ProxyUsername := '';
219     inSocket.ProxyParams.ProxyPassword := '';
220 yoffy 1.1 {$IFDEF DEBUG}
221     Writeln('???????決┃絎?????');
222     {$ENDIF}
223     end;
224 yoffy 1.2 end;
225    
226     end;
227    
228     // *************************************************************************
229     // ??絎????? URL ???????潟???若?????????
230     // *************************************************************************
231     function InternalDownload(
232     inURL : PChar; // ?????潟???若?????? URL
233     var ioModified : Double; // ??緇??????????ユ??
234     var outResultData : PChar; // ?????潟???若??????????絖???
235     inRangeStart : DWORD; // ??紮?篏?臀?/span>
236     inRangeEnd : DWORD // 腟?篋?篏?臀?/span>
237     ) : Longint; stdcall; // ???鴻???潟?鴻?潟?若??
238     var
239 h677 1.11 // httpSocket : TIdHTTP;
240 yoffy 1.2 resStream : TMemoryStream;
241     content : string;
242 h677 1.14 const
243     LIVEDOOR_URL = 'http://jbbs.livedoor.jp/';
244 yoffy 1.2 begin
245    
246 h677 1.17
247 yoffy 1.2 {$IFDEF DEBUG}
248     Writeln('ExternalBoardManager.InternalDownload');
249     {$ENDIF}
250 h677 1.11 // Result := -1;
251 yoffy 1.2
252 h677 1.11 socket := TIdHTTP.Create( nil );
253 yoffy 1.2 try
254 h677 1.11 InitializeSocket( socket );
255     socket.Request.ContentRangeStart := inRangeStart;
256     socket.Request.ContentRangeEnd := inRangeEnd;
257 yoffy 1.1 if (ioModified <> 0) and (ioModified <> ZERO_DATE) then
258 h677 1.11 socket.Request.LastModified := ioModified - OffsetFromUTC;
259 yoffy 1.1 if inRangeStart = 0 then
260 h677 1.11 socket.Request.AcceptEncoding := 'gzip'
261 yoffy 1.1 else
262 h677 1.11 socket.Request.AcceptEncoding := '';
263     socket.Request.Accept := 'text/html';
264 yoffy 1.1
265     resStream := TMemoryStream.Create;
266     try
267     try
268     resStream.Clear;
269     {$IFDEF DEBUG}
270     Writeln('URL: ' + inURL);
271     {$ENDIF}
272 h677 1.18 //AntiFreeze??DL?????炊???鴻???????????с???潟?潟?с?????с?????荀?
273     socket.Get( inURL, resStream );
274 yoffy 1.1 {$IFDEF DEBUG}
275     Writeln('??緇??т?紊?????');
276     {$ENDIF}
277 h677 1.11 content := GikoSys.GzipDecompress( resStream, socket.Response.ContentEncoding );
278 h677 1.19 // 臀??????
279     if GikoSys.Setting.ReplaceDat then begin
280     content := ReplaceDM.Replace(content);
281     end;
282 yoffy 1.1
283 h677 1.11 ioModified := socket.Response.LastModified;
284    
285     Result := socket.ResponseCode;
286 yoffy 1.1 if (Length( content ) = 0) and (Result = 206) then
287     Result := 304;
288 h677 1.17 //????????BBS???????????????惹???宴??莠????????????с???????с???с????/span>
289 h677 1.14 if ( AnsiPos(LIVEDOOR_URL, inURL) > 0 ) and (Result = 200) then begin
290 h677 1.13 if( AnsiPos('STORAGE IN', socket.Response.RawHeaders.Text) > 0 ) then begin
291     Result := 302;
292     end;
293     end;
294 yoffy 1.1 outResultData := CreateResultString( content );
295     except
296     on E: EIdSocketError do begin
297     ioModified := ZERO_DATE;
298     outResultData := nil;
299 h677 1.11 Result := socket.ResponseCode;
300 yoffy 1.1 end;
301     on E: EIdConnectException do begin
302     ioModified := ZERO_DATE;
303     outResultData := nil;
304 h677 1.11 Result := socket.ResponseCode;
305 yoffy 1.1 //Item.ErrText := E.Message;
306     end;
307 h677 1.11 //筝??????????????潟?潟???ャ??
308     on E: EIdClosedSocket do begin
309     ioModified := ZERO_DATE;
310     outResultData := nil;
311     Result := 408; //?≪?????L?????????????????鴻???潟?鴻?潟?若????200???障?障??/span>
312     //???c?????障?????с????ず?????????若?潟?若????菴???
313     end;
314 yoffy 1.1 on E: Exception do begin
315     {$IFDEF DEBUG}
316     Writeln('??緇??т?紊?????');
317     Writeln('E.Message: ' + E.Message);
318     {$ENDIF}
319     ioModified := ZERO_DATE;
320     outResultData := nil;
321 h677 1.11 Result := socket.ResponseCode;
322 yoffy 1.1 //Item.ErrText := E.Message;
323     end;
324     end;
325     finally
326     resStream.Free;
327     end;
328    
329     finally
330 h677 1.11 socket.Free;
331     socket := nil;
332 yoffy 1.1 end;
333    
334     end;
335    
336     // *************************************************************************
337 yoffy 1.2 // ??絎????? URL ?吾???若?帥????篆<????
338     // *************************************************************************
339     function InternalPost(
340     inURL : PChar; // ??篆<???? URL
341     inSource : PChar; // ??篆<??????絎?/span>
342 h677 1.16 inReferer : PChar; // Referer
343 yoffy 1.2 var outResultData : PChar // 菴??c????????絖???
344     ) : Longint; stdcall; // ???鴻???潟?鴻?潟?若??
345     var
346     httpSocket : TIdHTTP;
347     content : string;
348     resStream : TStringStream;
349     sourceStream : TStringStream;
350 h677 1.16
351 yoffy 1.2 begin
352    
353     {$IFDEF DEBUG}
354     Writeln('ExternalBoardManager.InternalPost');
355     {$ENDIF}
356     Result := -1;
357    
358     httpSocket := TIdHTTP.Create( nil );
359     try
360     InitializeSocket( httpSocket );
361     httpSocket.Request.CustomHeaders.Add('Pragma: no-cache');
362     httpSocket.Request.AcceptLanguage := 'ja';
363     httpSocket.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
364     httpSocket.Request.ContentType := 'application/x-www-form-urlencoded';
365 h677 1.16 httpSocket.Request.Referer := string(inReferer);
366 yoffy 1.2 resStream := TStringStream.Create( content );
367     sourceStream := TStringStream.Create( string( inSource ) );
368     try
369     try
370     {$IFDEF DEBUG}
371     Writeln('URL: ' + inURL);
372     Writeln('Source: ' + inSource);
373     {$ENDIF}
374     httpSocket.Post( string( inURL ), sourceStream, resStream );
375     {$IFDEF DEBUG}
376     Writeln('??緇??т?紊?????');
377     {$ENDIF}
378    
379     Result := httpSocket.ResponseCode;
380    
381     outResultData := CreateResultString( resStream.DataString );
382     except
383     on E: EIdSocketError do begin
384     outResultData := nil;
385     end;
386     on E: EIdConnectException do begin
387     outResultData := nil;
388     end;
389     on E: Exception do begin
390     {$IFDEF DEBUG}
391     Writeln('??緇??т?紊?????');
392     Writeln('E.Message: ' + E.Message);
393     {$ENDIF}
394 yoffy 1.6 outResultData := CreateResultString( resStream.DataString );
395 yoffy 1.2 Result := httpSocket.ResponseCode;
396     end;
397     end;
398     finally
399     resStream.Free;
400     sourceStream.Free;
401     end;
402     finally
403     httpSocket.Free;
404     end;
405    
406     end;
407    
408     // *************************************************************************
409 yoffy 1.1 // 鐚??<????????? dat 綵√??????若???????若??????????
410     // *************************************************************************
411 h677 1.5
412 yoffy 1.1 function InternalAbon(
413 yoffy 1.3 inDatText : PChar; // ????<>?<?若??lt;>?ヤ?ID<>????<>[?壕?] ?ф??????????????鴻??
414 h677 1.5 inDatPath : PChar // dat ???<?ゃ????????????/span>
415    
416 yoffy 1.7 ) : PChar; stdcall; // ???若????羝??帥? dat 綵√??????鴻??
417 yoffy 1.1 var
418     datList : TStringList;
419 yoffy 1.6 FileName : String;
420 yoffy 1.1 begin
421    
422     datList := TStringList.Create;
423 h677 1.9 try
424     datList.Text := string( inDatText );
425     FileName := string( inDatPath );
426     GikoSys.FAbon.IndividualAbon( datList, ChangeFileExt(FileName,'.NG'));
427     GikoSys.FAbon.Execute( datList );
428     GikoSys.FSelectResFilter.Execute( datList );
429    
430     Result := CreateResultString( datList.Text );
431     finally
432     datList.Free;
433     end;
434 yoffy 1.1
435    
436     end;
437 h677 1.5 // *************************************************************************
438     // 鐚??<????????? dat 綵√??????若???????若??????????
439     // ????????鐚????鴻????/span>
440     // *************************************************************************
441    
442     function InternalAbonForOne(
443 yoffy 1.6 inDatText : PChar; // ????<>?<?若??lt;>?ヤ?ID<>????<>[?壕?] ?ф??????????????鴻??
444     inDatPath : PChar; // dat ???<?ゃ????????????/span>
445     inNo : Integer // 荀?羆??????????合???/span>
446 h677 1.5 ) : PChar; stdcall; // ???若????羝??帥? dat 綵√??????鴻??
447     var
448     datString : String;
449 yoffy 1.6 FileName : String;
450 h677 1.5 begin
451    
452     datString := string( inDatText );
453 yoffy 1.6 FileName := string( inDatPath );
454 h677 1.5 GikoSys.FAbon.IndividualAbon( datString, ChangeFileExt(FileName,'.NG'), inNo);
455     GikoSys.FAbon.Execute( datString , inNo);
456     GikoSys.FSelectResFilter.Execute( datString , inNo );
457    
458     Result := CreateResultString( datString );
459    
460     end;
461 yoffy 1.1
462     // *************************************************************************
463     // 鐚??<????????? dat 綵√? 1 茵??? HTML ?????????
464     // *************************************************************************
465     function InternalDat2HTML(
466 yoffy 1.6 inDatRes : PChar; // ????<>?<?若??lt;>?ヤ?ID<>????<> ?ф??????????????鴻??
467     inResNo : DWORD; // ???合???/span>
468     inIsNew : Boolean // ?亥?????鴻???? True
469 yoffy 1.1 ) : PChar; stdcall; // ?翫就?????? HTML
470     var
471     board : TBoard;
472     threadItem : TThreadItem;
473     begin
474    
475     // ?????若????????/span>
476 yoffy 1.7 board := TBoard.Create( nil, 'about://dummy/' );
477 h677 1.16 threadItem := TThreadItem.Create( nil, board, 'about://dummy/test/read.cgi/dummy/' );
478 yoffy 1.1 try
479 yoffy 1.7 try
480     board.Add( threadItem );
481 yoffy 1.1
482 yoffy 1.7 Result := ThreadItemDat2HTML( DWORD( threadItem ), inDatRes, inResNo, inIsNew );
483     except
484     Result := nil;
485     end;
486     finally
487     board.Free;
488 yoffy 1.1 end;
489    
490     end;
491    
492 yoffy 1.8 // *************************************************************************
493     // ?????違?ゃ?潟?<???ャ?若????????菴遵??
494     // *************************************************************************
495     function AddPlugInMenu(
496     inInstance : DWORD; // ?????違?ゃ?潟???ゃ?潟?鴻?帥?潟??/span>
497     inCaption : PChar // ?<???ャ?若??;腓冴??????絖???
498     ) : HMENU; stdcall; // ?<???ャ?若??潟??????菴遵????け???????翫??? NULL
499     var
500     newItem : TMenuItem;
501     begin
502    
503     try
504     newItem := TMenuItem.Create( nil );
505     newItem.Caption := inCaption;
506     newItem.Tag := inInstance;
507     newItem.OnClick := GikoForm.OnPlugInMenuItem;
508     GikoForm.PlugInMenu.Add( newItem );
509    
510     Result := newItem.Handle;
511     except
512 h677 1.10 Result := 0;
513 yoffy 1.8 end;
514    
515     end;
516    
517     // *************************************************************************
518     // ?????違?ゃ?潟?<???ャ?若??????????????/span>
519     // *************************************************************************
520     procedure RemovePlugInMenu(
521     inHandle : HMENU // ?<???ャ?若??潟????/span>
522     ); stdcall;
523     var
524     i : Integer;
525     begin
526    
527     for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
528     if GikoForm.PlugInMenu.Items[ i ].Handle = inHandle then begin
529 h677 1.10 GikoForm.PlugInMenu.items[i].Free;
530     //GikoForm.PlugInMenu.Delete( i );
531 yoffy 1.8 Break;
532     end;
533     end;
534    
535     end;
536    
537 yoffy 1.1 exports
538     CreateResultString,
539     DisposeResultString,
540     VersionInfo,
541 yoffy 1.6 InternalPrint,
542     InternalDebugPrint,
543 yoffy 1.1 InternalDownload,
544 yoffy 1.2 InternalPost,
545 yoffy 1.1 InternalAbon,
546 yoffy 1.6 InternalAbonForOne,
547 yoffy 1.8 InternalDat2HTML,
548     AddPlugInMenu,
549     RemovePlugInMenu;
550 yoffy 1.1
551     end.

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