ÄúÏÖÔÚµÄλÖÃÊÇ£º Èí¼þ > ¿ª·¢ÕßÍøÂç > ÕýÎÄ
¡¤ËٳɵçÄÔ¾«Ó¢£¨°ü·ÖÅ䣩°×Áì¸ßнһ×å´ÓÕâÀ↑ʼ



-JavaÌ×½Ó×Ö±à³Ì£¨Ï£©
-MediaStudio Pro 6.5½Ì³Ì
-Èý¿îÐ¶ÔØÈí¼þ×îÐÂÊÔÓÃ
-»ùÓÚVisual C++µÄWinsock APIÑо¿

Delphi ²å¼þ´´½¨¡¢µ÷ÊÔÓëʹÓÃÓ¦ÓóÌÐòÀ©Õ¹
2000-10-08¡¤ ¡¤MiracleZ¡¤¡¤delphi¼¼ÊõÍø

ÓÐûÓÐʹÓùýAdobe PhotoshopÈç¹ûÓùý£¬Äã¾Í»á¶Ô²å¼þµÄ¸ÅÄî±È½ÏÊìϤ¡£¶ÔÍâÐÐÈËÀ´Ëµ£¬²å¼þ½ö½öÊÇ´ÓÍⲿÌṩ¸øÓ¦ÓóÌÐòµÄ´úÂë¿é¶øÒÑ£¨¾Ù¸öÀý×ÓÀ´Ëµ£¬ÔÚÒ»¸öDLLÖУ©¡£Ò»¸ö²å¼þºÍÒ»¸öÆÕͨDLLÖ®¼äµÄ²îÒìÔÚÓÚ²å¼þ¾ßÓÐÀ©Õ¹¸¸Ó¦ÓóÌÐò¹¦ÄܵÄÄÜÁ¦¡£ÀýÈ磬Photoshop±¾Éí²¢²»¾ß±¸½øÐдóÁ¿µÄͼÏñ´¦Àí¹¦ÄÜ¡£²å¼þµÄ¼ÓÈëʹÆä»ñµÃÁ˲úÉúÖîÈçÄ£ºý¡¢°ßµã£¬ÒÔ¼°ÆäËûËùÓзç¸ñµÄÆæ¹ÖЧ¹û£¬¶øÆäÖÐÈκÎÒ»ÏÄܶ¼²»ÊǸ¸Ó¦ÓóÌÐò×ÔÉíËù¾ßÓеġ£
¡¡¡¡¶ÔÓÚͼÏñ´¦Àí³ÌÐòÀ´ËµÕâºÜ²»´í£¬¿ÉÊÇΪʲôҪ»¨Ù¼´óµÄÁ¦ÆøÈ¥Íê³ÉÖ§³Ö²å¼þµÄÉÌÒµÓ¦ÓóÌÐòÄØ£¿¼ÙÉ裬ÎÒÃǾٸöÀý×Ó£¬ÄãµÄÓ¦ÓóÌÐòÒª²úÉúһЩ±¨±í¡£ÄãµÄ¿Í»§¿Ï¶¨»áÒ»Ö±ÒªÇó¸üлòÕßÔö¼Óеı¨±í¡£Äã¿ÉÒÔʹÓÃÒ»¸öÖîÈçReport SmithµÄÍⲿ±¨±íÉú³ÉÆ÷£¬ÕâÊǸö²»ÔõôÑùµÄ½â¾ö·½°¸£¬ÐèÒª·¢²¼¸½¼ÓµÄÎļþ£¬Òª¶ÔÓû§½øÐжîÍâµÄÅàѵ£¬µÈµÈ¡£ÄãÒ²¿ÉÒÔʹÓÃQuickReport£¬²»¹ýÕâ»áʹÄãÉí´¦°æ±¾¿ØÖÆµÄØ¬ÃÎÖ®ÖСª¡ªÈç¹ûÿ¸Ä±äÒ»´Î×ÖÌåÄã¾ÍÒªRebuildÄãµÄÓ¦ÓóÌÐòµÄ»°¡£
¡¡¡¡È»¶ø£¬Ö»ÒªÄã°Ñ±¨±í×öµ½²å¼þÖУ¬Äã¾Í¿ÉÒÔʹÓÃËü¡£ÐèÒªÒ»¸öеı¨±íÂð£¿Ã»ÎÊÌ⣬ֻҪ°²×°Ò»¸öDLL£¬Ï´ÎÓ¦ÓóÌÐòÆô¶¯Ê±¾Í»á¿´¼ûËüÁË¡£ÁíÍâÒ»¸öÀý×ÓÊÇ´¦ÀíÀ´×ÔÍⲿÉ豸£¨±ÈÈçÌõÐÎÂëɨÃèÆ÷£©µÄÊý¾ÝµÄÓ¦ÓóÌÐò£¬ÎªÁ˸øÓû§¸ü¶àµÄÑ¡Ôñ£¬Äã²»µÃ²»Ö§³Ö°ë´òµÄ¸÷ÖÖÉ豸¡£Í¨¹ý½«Ã¿ÖÖÉ豸½Ó¿Ú´¦ÀíÀý³Ìд³É²å¼þ£¬²»ÓöԸ¸Ó¦ÓóÌÐò×÷Èκα䶯¾Í¿ÉÒÔ»ñµÃ×î´ó³Ì¶ÈµÄ¿ÉÉìËõÐÔ¡£

ÈëÃÅ

¡¡¡¡ÔÚ¿ªÊ¼Ð´´úÂë֮ǰ×îÖØÒªµÄÊÂÇé¾ÍÊǸãÇå³þÄãµÄÓ¦ÓóÌÐòµ½µ×ÐèÒªÀ©Õ¹ÄÄЩ¹¦ÄÜ¡£ÕâÊÇÒòΪ²å¼þÊÇͨ¹ýÒ»¸öÌØ¶¨µÄ½Ó¿ÚÓ븸ӦÓóÌÐò½»»¥µÄ£¬¶øÕâ¸ö½Ó¿Ú½«¸ù¾ÝÄãµÄÐèÒªÀ´¶¨Òå¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«½¨Á¢3¸ö²å¼þ£¬ÒÔ±ãչʾ²å¼þÓ븸ӦÓóÌÐòÏཻ»¥µÄ¼¸ÖÖ·½Ê½¡£
¡¡¡¡ÎÒÃǽ«°Ñ²å¼þÖÆ×÷³ÉDLL¡£²»¹ý£¬ÔÚ×öÕâÏ×÷֮ǰ£¬ÎÒÃǵÃÏÈÖÆ×÷Ò»¸öÍâ¿Ç³ÌÐòÀ´ÔØÈëºÍ²âÊÔËüÃÇ¡£Í¼1ÏÔʾµÄÊǼÓÔØÁ˵ÚÒ»¸ö²å¼þÒÔºóµÄ²âÊÔ³ÌÐò¡£µÚÒ»¸ö²å¼þûÓÐÍê³Éʲô´ó²»Á˵ŦÄÜ£¬Êµ¼ÊÉÏ£¬ËüËù×öµÄÖ»ÊÇ·µ»ØÒ»¸öÃèÊö×Ô¼ºµÄ×Ö·û´®¡£²»¹ý£¬ËüÖ¤Ã÷Á˺ÜÖØÒªµÄÒ»µã¡ª¡ª²»¹ÜÓÐûÓвå¼þÓ¦ÓóÌÐò¶¼¿ÉÒÔÕý³£ÔËÐС£Èç¹ûûÓвå¼þ£¬Ëü¾Í²»»á³öÏÖÔÚÒѰ²×°µÄ²å¼þÁбíÖУ¬µ«ÊÇÓ¦ÓóÌÐòÈÔÈ»¿ÉÒÔÕý³£µÄÐÐʹ¹¦ÄÜ¡£

¡¡¡¡ÎÒÃǵIJå¼þÍâ¿Ç³ÌÐòÓëÆÕͨӦÓóÌÐòÖ®¼äµÄΨһ²»Í¬¾ÍÔÚÓÚ¹¤³ÌÔ´ÎļþÖгöÏÖÔÚuses×Ó¾äÖеÄSharememµ¥ÔªºÍ¼ÓÔØ²å¼þÎļþµÄ´úÂë¡£ÈκÎÔÚ×ÔÉíÓë×ÓDLLÖ®¼ä´«µÝ×Ö·û´®²ÎÊýµÄÓ¦Óó ¶¼ÐèÒªSharememµ¥Ôª£¬ËüÊÇDelphiMM.dll£¨DelphiÌṩ¸ÃÎļþ£©µÄ½Ó¿Ú¡£Òª²âÊÔÕâ¸öÍâ¿Ç£¬ÐèÒª½«DelphiMM.dllÎļþ´ÓDelphi\BinĿ¼¸´ÖƵ½path»·¾³±äÁ¿Ëù°üº¬µÄ·¾¶»òÕßÓ¦ÓóÌÐòËùÔÚĿ¼ÖС£·¢²¼×îÖհ汾ʱҲÐèҪͬʱ·Ö·¢¸ÃÎļþ¡£
²å¼þͨ¹ýLoadPlugins¹ý³ÌÔØÈëµ½Õâ¸ö²âÊÔÍâ¿ÇÖУ¬Õâ¸ö¹ý³ÌÔÚÖ÷´°¿ÚµÄFormCreateʼþÖе÷Ó㬼ûͼ2¡£¸Ã¹ý³ÌʹÓÃFindFirstºÍFindNextº¯ÊýÔÚÓ¦ÓóÌÐòËùÔÚĿ¼ÖвéÕÒ²å¼þÎļþ¡£ÕÒµ½Ò»¸öÎļþÒԺ󣬾ÍʹÓÃͼ3ËùʾµÄLoadPlugins¹ý³Ì½«ÆäÔØÈë¡£
{ ÔÚÓ¦ÓóÌÐòĿ¼Ï²éÕÒ²å¼þÎļþ }
procedure TfrmMain.LoadPlugins;
var
¡¡¡¡sr: TSearchRec;
¡¡¡¡path: string;
¡¡¡¡Found: Integer;
begin
¡¡¡¡path := ExtractFilePath(Application.Exename);
¡¡¡¡try
¡¡¡¡Found := FindFirst(path + cPLUGIN_MASK, 0, sr);
¡¡¡¡while Found = 0 do begin
¡¡¡¡LoadPlugin(sr);
¡¡¡¡Found := FindNext(sr);
end;
¡¡¡¡finally
¡¡¡¡FindClose(sr);
end;
end;


{ ¼ÓÔØÖ¸¶¨µÄ²å¼þ DLL. }
procedure TfrmMain.LoadPlugin(sr: TSearchRec);
var
¡¡¡¡Description: string;
¡¡¡¡LibHandle: Integer;
¡¡¡¡DescribeProc: TPluginDescribe;
begin
¡¡¡¡LibHandle := LoadLibrary(Pchar(sr.Name));
¡¡¡¡if LibHandle $#@60;$#@62; 0 then
begin
¡¡¡¡DescribeProc := GetProcAddress(LibHandle, cPLUGIN_DESCRIBE);
if Assigned(DescribeProc) then
begin
¡¡DescribeProc(Description);
¡¡memPlugins.Lines.Add(Description);
end
else
begin
¡¡MessageDlg(¡¯File "¡¯ + sr.Name + ¡¯" is not a valid plug-in.¡¯,
mtInformation, [mbOK], 0);
end;
end
else
MessageDlg(¡¯An error occurred loading the plug-in "¡¯ +
sr.Name + ¡¯".¡¯, mtError, [mbOK], 0);
end;


¡¡¡¡LoadPlugin·½·¨Õ¹Ê¾Á˲å¼þ»úÖÆµÄºËÐÄ¡£Ê×ÏÈ£¬²å¼þ±»Ð´³ÉDLL¡£Æä´Î£¬Í¨¹ýLoadLibrary APIËü±»¶¯Ì¬µÄ¼ÓÔØ¡£Ò»µ©DLL±»¼ÓÔØ£¬ÎÒÃǾÍÐèÒªÒ»¸ö·ÃÎÊËüËù°üº¬µÄ¹ý³ÌºÍº¯ÊýµÄ;¾¶¡£APIµ÷ÓÃGetProcAddressÌṩÕâÖÖ»úÖÆ£¬Ëü·µ»ØÒ»¸öÖ¸ÏòËùÐèÀý³ÌµÄÖ¸Õë¡£ÔÚÎÒÃÇÕâ¸ö¼òµ¥µÄÑÝʾÖУ¬²å¼þ½ö½ö°üº¬Ò»¸öÃûΪDescribePluginµÄ¹ý³Ì£¬Óɳ£ÊýcPLUGIN_DESCRIBEÖ¸¶¨£¨¹ý³ÌÃûµÄ´óСд·Ç³£ÖØÒª£¬´«µÝµ½GetProcAddressµÄÃû³Æ±ØÐëÓë°üº¬ÔÚDLLÖеÄÀý³ÌÃû³ÆÍêȫһÖ£©¡£Èç¹ûÔÚDLLÖÐûÓÐÕÒµ½ÇëÇóµÄÀý³Ì£¬GetProcAddree½«·µ»Ønil£¬ÕâÑù¾ÍÔÊÐíʹÓÃAssignedº¯Êý²â¶¨·µ»ØÖµ¡£
¡¡¡¡ÎªÁËÒÔÒ»ÖÖÒ×Óõķ½Ê½´æ´¢Ö¸ÏòÒ»¸öº¯ÊýµÄÖ¸Õ룬ÓбØÒªÎªÓõ½µÄ±äÁ¿´´½¨Ò»¸öÌØ¶¨µÄÀàÐÍ¡£×¢Ò⣬GetProcAddressµÄ·µ»ØÖµ±»´æ´¢ÔÚÒ»¸ö±äÁ¿ÖУ¬DescribeProc£¬ÊôÓÚTpluginDescribeÀàÐÍ¡£ÏÂÃæÊÇËüµÄÉùÃ÷£º
type
TPluginDescribe = procedure(var Desc: string); stdcall;
¡¡¡¡ÓÉÓÚ¹ý³Ì´æÔÚÓÚDLLÄÚ²¿£¬Ëüͨ¹ý±ê×¼µ÷ÓÃת»»±àÒëËùÓе¼³öÀý³Ì£¬Òò´ËÐèҪʹÓÃstdcallָʾ×Ö¡£Õâ¸ö¹ý³ÌʹÓÃÒ»¸övar²ÎÊý£¬µ±¹ý³Ì·µ»ØµÄʱºòËü°üº¬²å¼þµÄÃèÊö¡£
¡¡¡¡Òªµ÷ÓøոջñµÃµÄ¹ý³Ì£¬Ö»ÐèҪʹÓñ£´æµØÖ·µÄ±äÁ¿×÷Ϊ¹ý³ÌÃû£¬ºóÃæ¸úÉÏÈκβÎÊý¡£¾ÍÎÒÃǵÄÀý×Ó¶øÑÔ£¬ÉùÃ÷£º
DescribeProc(Description)
¡¡¡¡½«»áµ÷ÓÃÔÚ²å¼þÖлñµÃµÄÃèÊö¹ý³Ì£¬²¢ÇÒÓÃÃèÊö²å¼þ¹¦ÄܵÄ×Ö·û´®Ìî³äDescription±äÁ¿¡£

¹¹Ôì²å¼þ

¡¡¡¡ÎÒÃÇÒѾ­´´½¨ºÃÁ˸¸Ó¦ÓóÌÐò£¬ÏÖÔÚ¸ÃÂÖµ½´´½¨ÎÒÃÇÏ£Íû¼ÓÔØµÄ²å¼þÁË¡£²å¼þÎļþÊÇÒ»¸ö±ê×¼µÄDelphi DLL£¬ËùÒÔÎÒÃÇ´ÓDelphi IDEÖд´½¨Ò»¸öÐÂDLL¹¤³Ì£¬±£´æËü¡£ÓÉÓÚµ¼³öµÄ²å¼þº¯Êý½«Óõ½×Ö·û´®²ÎÊý£¬ËùÒÔÒªÔÚ¹¤³ÌµÄuses×Ó¾äÖаÑSharemenµ¥Ôª·ÅÔÚ×îÇ°Ãæ¡£Í¼4ÁгöµÄ¾ÍÊÇÎÒÃÇÕâ¸ö¼òµ¥²å¼þµÄ¹¤³ÌÔ´Îļþ¡£
uses
Sharemem, SysUtils, Classes,
main in ¡¯main.pas¡¯;

{$E plg.}

exports
DescribePlugin;

begin

end.


¡¡¡¡ËäÈ»²å¼þÊÇÒ»¸öDLLÎļþ£¬µ«ÊÇûÓбØÒªÒ»¶¨Òª¸øËüÒ»¸ö.DLLµÄÀ©Õ¹Ãû¡£Êµ¼ÊÉÏ£¬Ò»¸öÔ­Òò¾Í×ãÒÔÈÃÎÒÃÇÓÐÀíÓɸıäÀ©Õ¹Ãû£ºµ±¸¸Ó¦ÓóÌÐòѰÕÒÒª¼ÓÔØµÄÎļþʱ£¬ÐµÄÀ©Õ¹Ãû¿ÉÒÔ×÷ÎªÌØ¶¨µÄÎļþÑÚÄ£¡£Í¨¹ýʹÓñðµÄÀ©Õ¹Ãû£¨ÎÒÃǵÄÀý×ÓʹÓÃÁË*.plg£©£¬Äã¿ÉÒÔÔÚÒ»¶¨³Ì¶ÈÉÏÈ·ÐÅÓ¦ÓóÌÐòÖ»»áÔØÈëÏàÓ¦µÄÎļþ¡£±àÒëָʾ×Ö$X¿ÉÒÔʵÏÖÕâ¸ö¸Ä±ä£¬Ò²¿ÉÒÔͨ¹ýProject Options¶Ô»°¿òµÄApplicationÒ³À´ÉèÖÃÀ©Õ¹Ãû¡£
¡¡¡¡µÚÒ»¸öÀý×Ó²å¼þµÄ´úÂëÊǺܼòµ¥µÄ¡£Í¼5ÏÔʾÁ˰üº¬ÔÚÒ»¸öе¥ÔªÖеĴúÂë¡£×¢Ò⣬DescribePluginÔ­ÐÍÓëÍâ¿ÇÓ¦ÓóÌÐòÖеÄTpluginDescribeÀàÐÍÏàÒ»Ö£¬Ê¹Óø½¼ÓµÄexport±£Áô×ÖÖ¸¶¨¸Ã¹ý³Ì½«±»µ¼³ö¡£±»µ¼³öµÄ¹ý³ÌÃû³ÆÒ²½«»á³öÏÖÔÚÖ÷¹¤³ÌÔ´´úÂëµÄexports¶ÎÖУ¨ÔÚͼ4ÖÐÁгö£©¡£
unit main;

interface

procedure DescribePlugin(var Desc: string);
export; stdcall;

implementation

procedure DescribePlugin(var Desc: string);
begin
Desc := ¡¯Test plugin v1.00¡¯;
end;

end.


¡¡¡¡ÔÚ²âÊÔÕâ¸ö²å¼þ֮ǰ£¬ÒªÏȰÑËü¸´ÖƵ½Ö÷Ó¦ÓóÌÐòµÄ·¾¶Ï¡£×î¼òµ¥µÄ°ì·¨¾ÍÊÇÔÚÖ÷Ŀ¼µÄ×ÓĿ¼Ï´´½¨²å¼þ£¬È»ºó°ÑÊä³ö·¾¶ÉèÖÃΪÖ÷·¾¶£¨Project Options¶Ô»°¿òµÄDirectories/ConditionalsÒ²¿ÉÒÔ×÷Õâ¸öÉèÖã©¡£

µ÷ÊÔ

¡¡¡¡ÏÖÔÚ½éÉÜÒ»ÏÂDelphi 3ÖÐÒ»¸ö½ÏºÃµÄ¹¦ÄÜ£º´ÓIDEÖе÷ÊÔDLLµÄÄÜÁ¦¡£ÔÚDLL¹¤³ÌÖпÉÒÔͨ¹ýRun paramaters¶Ô»°¿òÖ¸¶¨Ä³³ÌÐòΪËÞÖ÷Ó¦ÓóÌÐò£¬Õâ¾ÍÊÇÖ¸Ïò½«µ÷ÓÃDLLµÄÓ¦ÓóÌÐòµÄ·¾¶£¨ÔÚÎÒÃÇÕâ¸öÀý×ÓÖУ¬¾ÍÊǸոմ´½¨µÄ²âÊÔÍâ¿Ç³ÌÐò£©¡£È»ºóÄã¾Í¿ÉÒÔÔÚDLL´úÂëÖÐÉèÖöϵ㲢ÇÒ°´F9ÔËÐÐËü¡ª¡ª¾ÍÏñÔÚÒ»¸öÆÕͨӦÓóÌÐòÖÐ×öµÄÄÇÑù¡£Delphi»áÔËÐÐÖ¸¶¨µÄËÞÖ÷³ÌÐò£¬²¢ÇÒ£¬Í¨¹ý±àÒë´øÓе÷ÊÔÐÅÏ¢µÄDLL£¬°ÑÄãÖ¸Òýµ½DLL´úÂëÄڵĶϵ㴦¡£
¡ö Ïà¹ØÄÚÈÝ
¡¡Delphi3ÈçºÎµ÷ÓÃExcel
¸Ðл ·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ