给你个例子这里不要SetWindowLong它自然就在任务栏没有标题
{Dll}
{
Copyright ?1998 by Delphi 4 Developer's Guide - Xavier Pacheco and Steve Teixeira
}
unit DLLFrm;
interface
uses
; SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
; Forms, Dialogs, Grids, Calendar;
type
; TDLLForm = class(TForm)
; ; calDllCalendar: TCalendar;
; ; procedure calDllCalendarDblClick(Sender: TObject);
; end;
{ Declare the export function }
function ShowCalendar(AHandle: THandle; ACaption: String): TDateTime; StdCall;
implementation
{$R *.DFM}
function ShowCalendar(AHandle: THandle; ACaption: String): TDateTime;
var
; DLLForm: TDllForm;
begin
; // Copy application handle to DLL's TApplication object
; Application.Handle := AHandle;
; DLLForm := TDLLForm.Create(Application);
; try
; ; DLLForm.Caption := ACaption;
; ; DLLForm.ShowModal;
; ; Result := DLLForm.calDLLCalendar.CalendarDate; // Pass the date back in Result
; finally
; ; DLLForm.Free;
; end;
end;
procedure TDLLForm.calDllCalendarDblClick(Sender: TObject);
begin
; Close;
end;
end.
{Load Form}
{
Copyright ?1998 by Delphi 4 Developer's Guide - Xavier Pacheco and Steve Teixeira
}
unit MainFfm;
interface
uses
; SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
; Forms, Dialogs, StdCtrls;
type
; { First, define a procedural data type, this should reflect the
; ; procedure that is exported from the DLL. }
; TShowCalendar = function (AHandle: THandle; ACaption: String): TDateTime; StdCall;
; { Create a new exception class to refect a failed DLL load }
; EDLLLoadError = class(Exception);
; TMainForm = class(TForm)
; ; lblDate: TLabel;
; ; btnGetCalendar: TButton;
; ; procedure btnGetCalendarClick(Sender: TObject);
; end;
var
; MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.btnGetCalendarClick(Sender: TObject);
var
; LibHandle ; : THandle;
; ShowCalendar: TShowCalendar;
begin
; { Attempt to load the DLL }
; LibHandle := LoadLibrary('CALENDARLIB.DLL');
; try
; ; { If the load failed, LibHandle will be zero.
; ; ; If this occurs, raise an exception. }
; ; if LibHandle = 0 then
; ; ; raise EDLLLoadError.Create('Unable to Load DLL');
; ; { If the code makes it here, the DLL loaded successfully, now obtain
; ; ; the link to the DLL's exported function so that it can be called. }
; ; @ShowCalendar := GetProcAddress(LibHandle, 'ShowCalendar');
; ; { If the function is imported successfully, then set lblDate.Caption to reflect
; ; ; the returned date from the function. Otherwise, show the return raise
; ; ; an exception. }
; ; if not (@ShowCalendar = nil) then
; ; ; lblDate.Caption := DateToStr(ShowCalendar(Application.Handle, Caption))
; ; else
; ; ; RaiseLastWin32Error; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
; finally
; ; FreeLibrary(LibHandle); // Unload the DLL.
; end;
end;
end.