Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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 GetWindowText »ñÈ¡´°¿Ú±êÌâ

//ÉùÃ÷:
GetWindowText(
hWnd: HWND; {´°¿Ú¾ä±ú}
lpString: PChar; {½ÓÊÕÎı¾µÄ»º³åÇøµÄÖ¸Õë}
nMaxCount: Integer {Ö¸¶¨»º³åÇø´óС, ÆäÖаüº¬NULL×Ö·û; Èç¹ûÎı¾³¬³ö£¬»á±»±»½Ø¶Ï}
): Integer; {·µ»Ø×Ö·û¸öÊý, ²»°üÀ¨ÖжϵĿÕ×Ö·û; Èç¹û±êÌâΪ¿Õ»ò¾ä±úÎÞЧ, Ôò·µ»ØÁã}
//¾ÙÀý:
var
arr: ......

ÔÚDELPHIÖÐʵÏÖÎÞ±êÌâ´°ÌåµÄÒÆ¶¯×î¼òµ¥µÄ·½·¨

ÔÚ´°ÌåµÄOnMouseDownʼþÖмÓÈëÏÂÃæ¼¸ÐдúÂë¼´¿É
If Button = mbleft Then
begin
ReleaseCapture;
SendMessage(MainForm.Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
end;
Èô´°ÌåµÄ±íÃæ±»±ðµÄ¿Ø¼þÂĸǵô£¬ÔòÐèÒª°ÑÉÏÃæµÄ´úÂë¼ÓÈëÂĸǵĿؼþÀïÃæ¡£  ......

±ßÓñßѧDelphi±à³Ì

±¾Êéͨ¹ýµäÐ͵ÄʵÀý£¬ÏµÍ³µØ½éÉÜÁËDelphiµäÐÍ×é¼þµÄ»ù±¾Ê¹Ó÷½·¨ºÍһЩʹÓü¼ÇÉ¡£Ã¿Ò»¸öʵÀý¶¼ÌṩÁ˳ÌÐòµÄÔ´´úÂë¡¢²Ù×÷²½Ö裬²¢ÇÒÔÚÒ»Ð©ÌØÊâµÄʵÀýÖÐ×¢Ã÷ÁË֪ʶµã¡£Á¦Õùʹ¶ÁÕßͨ¹ýÔĶÁʵÀýºó£¬¿ÉÒԽϺõØÕÆÎÕÿһ¸ö֪ʶµã¡£ ±¾Êé·ÖΪÎåÕ£¬ÄÚÈÝÓÉdzÈëÉѭÐò½¥½ø£¬ÊÊÓÃÓÚ³õ¼¶Óû§ºÍԺУʦÉúѧϰ²Î¿¼¡£ ÏÂÔØÔĶÁ±ßÓñßѧD ......

Delphi 6.0¸ß¼¶±à³Ì

±¾ÊéÒÔʵÀýΪÖ÷Ïߣ¬¸¨ÒÔ±ØÒªµÄ¼¼Êõ±³¾°ÒªµãÀ´½²½âDelphi 6£®0±à³ÌµÄ¾«Ë裻±¾ÊéʵÀýÆ«ÖØÓÚ¶àýÌåºÍÍøÂç³ÌÐò¿ª·¢£¬ÆäÖÐÉæ¼°µ½OpenGL¡¢Indy×é¼þ¡¢XML¡¢Web BrokerºÍWebSnapµÈ¼¼Êõ¡£±¾Ê黹½²ÊöÁËDelphiÖеÄSQL±à³Ì£¬ÔÚÁ½¸ö¶ÌС¾«Á·µÄ³ÌÐòÖгä·ÖÔËÓÃÁËDelphiÊý¾Ý¿ª·¢¼¼Êõ£¬°üÀ¨BDE×é¼þµÄADO×é¼þµÄʹÓá£Í¨¹ý±¾Ê飬ÈöÁÕßÔÚ±à³Ì¹ ......

Delphi×ÔÊÊÓ¦·Ö±æÂÊ£¨±È½ÏÍêÃÀµÄÒ»¸ö·½·¨£©

procedure TfrmMain.FormCreate(Sender: TObject); //Ö÷´°ÌåFormCreateʼþ
var FWidth:integer;
begin
  if (screen.Width <> 1024) then  //¼ÙÉèÄãÉè¼Æ³ÌÐòʱµÄ·Ö±æÂÊΪ1024
  begin
    FWidth:=width;
    scaled:=true;
  & ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ