DelphiÖÐDLL³õʼ»¯ºÍÍ˳ö´¦Àí
DelphiÖÐDLL³õʼ»¯ºÍÍ˳ö´¦Àí
choysan
2010-01-08 8:56:43
<1>ÀûÓÃUnitµÄInitalizationÓëFinalizationÕâÁ½¸öС½Ú
¡¡¡¡¿ÉÒÔÔÚUnitµÄÕâÁ½¸öС½ÚÖа²ÅÅUnitµÄ½øÈëºÍÍ˳ö£¬µ«ÊÇ
ProgramÓëLibrary²¢Ã»ÓÐÕâÁ½¸ö²¿·Ö£¬ËùÒÔÖ»ÄÜдÔÚUnitÖС£
<2>ÀûÓÃExitProc±äÁ¿
¡¡¡¡ÔÚLibraryµÄbegin..end.ÖмäÊÇ¿ÉÒÔд´úÂëµÄ£¬ÕâÀï¿ÉÒÔ·ÅÖÃ
DLL³õʼ»¯´úÂë¡£Èç¹ûÏëÒª×öÉÆºó¹¤×÷£¬Ôò¿ÉÒÔÀûÓÃExitProc±äÁ¿¡£
ÎÒÃÇÊ×ÏÈÔÚ³õʼ»¯´úÂëÖаÑExitProcÖаüº¬µÄĬÈϵÄÉÆºó¹ý³ÌµØÖ·±£
´æÏÂÀ´£¬È»ºó°Ñ×Ô¶¨ÒåµÄ¹ý³ÌµÄµØÖ·¸³¸øËü£¬ÕâÑùDLLÍ˳öʱ¾Í»áÖ´
ÐÐÎÒÃÇÖÆ¶¨µÄ³ÌÐò£»ÔÚ×Ô¶¨ÒåµÄ¹ý³ÌµÄ×îºó£¬°ÑExitProc»Ö¸´ÔÀ´µÄ
ĬÈÏÖµ£¬ÒÔ±ãDLLÄܹ»¼ÌÐøÍê³ÉÔÀ´Ä¬ÈϵÄÉÆºó¹¤×÷¡£ÏÂÃæÊÇʾÀý£º
¡¡¡¡library MyDLL;
¡¡¡¡...
¡¡¡¡OldExitProc: pointer;
¡¡¡¡...
¡¡¡¡procedure MyExitProc;
¡¡¡¡begin
¡¡¡¡... //ÉÆºó³ÌÐò
¡¡¡¡ExitProc := OldExitProc;
¡¡¡¡end;
¡¡¡¡...
¡¡¡¡begin
¡¡¡¡... //³õʼ»¯³ÌÐò
¡¡¡¡OldExitProc := ExitProc;
¡¡¡¡ExitProc := @MyExitProc;
¡¡¡¡end.
<3>ÀûÓÃDllProc±äÁ¿
¡¡¡¡ºÍExitProcÒ»Ñù£¬DllProcÒ²ÊÇÒ»¸öÔÚSystemdµ¥ÔªÖÐÔ¤¶¨ÒåµÄ±ä
Á¿¡£ÔÚʹÓÃDLLProcʱ, ±ØÐëÏÈдºÃÒ»¸ö¾ßÓÐÒÔÏÂÔÐ͵ijÌÐò:
¡¡¡¡procedure DLLHandler(Reason: integer);
²¢ÔÚlibraryµÄbegin..end.Ö®¼ä, ½«Õâ¸öDLLHandler³ÌÐòµÄÖ´ÐеØ
Ö·¸³¸øDLLProcÖÐ, Õâʱ¾Í¿ÉÒÔ¸ù¾Ý²ÎÊýReasonµÄÖµ·Ö±ð×÷³öÏàÓ¦µÄ
´¦Àí¡£ÁíÍâ×¢ÒâÒª½«Windowsµ¥Ôª¼ÓÈëuses×Ӿ䡣ʾÀýÈçÏÂ:
¡¡¡¡library TestDLL;
¡¡¡¡...
procedure MyDLLHandler(Reason: integer);
begin
case Reason of
DLL_PROCESS_DETACH:
begin
ShowMessage('Õû¸öDLLµÄÉÆáá³ÌÐò');
end;
DLL_Process_Attach:
begin
ShowMessage('Õû¸öDLLµÄ³õʼ»¯´úÂë');
end;
DLL_Thread_Attach:
begin
ShowMessage('µ±Ö÷½Ð¶Ë¿ªÊ¼Ò»¸öThreadʱ');
end;
DLL_Thread_Detach:
Ïà¹ØÎĵµ£º
²Î¿¼×ÊÁÏ
ÀîÕ½.¡¶Îò͸delphi¡·£¬µÚ1Õ“DELPHIµÄÔ×ÓÊÀ½ç”
“̽Ë÷DelphiÀàÓë¶ÔÏóµÄÄÚ´æ½á¹¹”
»ù±¾ÖªÊ¶
¶¯Ì¬ÄÚ´æÓ뾲̬ÄÚ´æ
µ±³ÌÐòÔËÐÐʱ£¬ÏµÍ³Ê×ÏȽ«ËùÓÐÊý¾Ý×°ÔØÈëÄڴ棬Íê³É³õʼ»¯£¬È»ºó´ÓÈë¿ÚµØÖ·¿ªÊ¼Ö´ÐдúÂë¡£
³ÌÐò×°ÔØºó¼´´æÔÚÓÚÄÚ´æ¿Õ¼äÖеÄÊý¾ÝÎÒÃdzÆÖ®Îª¾²Ì¬Äڴ棬ÔËÐйý³ÌÖÐ ......
ÔÚÌÖÂÛÕâ¸ö»°Ìâ֮ǰ£¬±ØÐëҪ˵Ã÷µÄÊÇ£¬Èç¹ûÄã¸Õѧϰdelphi£¬Ç벻Ҫģ·Â£¬ÒòΪ̸²»ÉÏתÐÍ£»Èç¹ûÄãÓÃdelphiÒѾ³Éϰ¹ß£¬²¢ÇÒÊìϤhtmlÓïÑÔ¡¢ÓÐBS½á¹¹»ù´¡¡¢¶ÔJAVAÓ﷨ûÓÐÕϰ£¨Èç¹ûÄã¿´²»¶®¼òµ¥µÄ»ù´¡JAVA´úÂ룬½¨ÒéÄ㻹ÊǼÌÐøÄãµÄd°É£©£¬Ï£ÍûÕâ¶ÎÄÚÈݶÔÄãÓÐËù°ïÖú£¬´Ë»°Ìâ²»ÌÖÂÛ¾ßÌå¼¼Êõ£¬Ö»ËµËµÎÒµÄѧϰ²½ÖèºÍÐĵá£
1¡¢ ² ......
Delphi ÖÐÁ÷µÄʹÓÃ(1) Óà TMemoryStream(ÄÚ´æÁ÷) ÈëÃÅ
ǰÑÔ:
Ëùν"Á÷", ¾ÍÊÇÒ»¶ÎÊý¾Ý»òÊÇÒ»¿éÄÚ´æ;
ÔÚ½øÐÐÁ÷²Ù×÷ʱ, ÎÒÃDz»±Ø¹ØÐÄÁ÷ÖеÄÊý¾Ýµ½µ×ÊÇʲô; Ö»ÐèÒªÖªµÀÁ÷µÄ´óСºÍµ±Ç°µÄÖ¸ÕëλÖÃ. ËùÒÔÁ÷Ö»ÓÐÁ½¸öÊôÐÔ:
Size¡¢Position.
¶ÔÁ÷µÄ²Ù×÷, ²»¹ý¾ÍÊǶÁÈ¡ºÍдÈë. ËùÒÔÁ÷×îÖ÷ÒªµÄ·½·¨¾ÍÊÇ Read ºÍ Write.
Ôںܶ࿠......
(Ò») ʹÓö¯Ì¬´´½¨µÄ·½·¨
Ê×ÏÈ´´½¨ Excel ¶ÔÏó£¬Ê¹ÓÃComObj:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( 'Excel.Application' );
1) ÏÔʾµ±Ç°´°¿Ú£º
ExcelApp.Visible := True;
2) ¸ü¸Ä Excel ±êÌâÀ¸£º
ExcelApp.Caption := 'Ó¦ÓóÌÐòµ÷Óà Microsoft Excel';
3) Ìí¼Óй¤×÷²¾£º
ExcelApp.WorkBooks.Add ......
Êý×éÊÇ¿ÉÒÔͨ¹ýË÷ÒýÀ´ÒýÓõÄͬÀàÐÍÊý¾ÝµÄÁÐ±í¡£°´ÕÕ´æ´¢¿Õ¼äµÄ»ñÈ¡·½Ê½£¬Delphi
Ö§³ÖµÄÊý×éÀàÐÍÓÐÁ½ÖÖ£¬¼´¾²Ì¬Êý×éºÍ¶¯Ì¬Êý×é¡£Ëùν¾²Ì¬Êý×é¾ÍÊÇÔÚÉùÃ÷ʱ¾ÍÒѾȷ¶¨´óСµÄÊý×éÀàÐÍ£¬¶ø¶¯Ì¬Êý×éÊÇÖ¸Æä´óСÔÚÉùÃ÷ʱ²»ÄÜÈ·¶¨µÄÊý×飬¶¯Ì¬Êý×éµÄ´óСÔÚʹÓÃʱȷ¶¨¡£
ÉùÃ÷¾²Ì¬Êý×éµÄ·½Ê½·Ç³£¼òµ¥£¬Ö»ÒªÖ¸Ã÷Êý×鳤¶ÈºÍÊý¾ÝÀàÐÍ ......