Почему мой значок и информация на заставке Delphi отображаются только в первый раз? - PullRequest
3 голосов
/ 05 февраля 2012

Я разрабатываю пакет компонентов и хочу отобразить значок и некоторую информацию о лицензии на заставке Delphi XE, например, хорошие пакеты компонентов (TMS, CnPack и т. Д.).

На самом деле я собираюсь сделать это через OTA, но, как ни странно, только сразу после первой компиляции и установки эти вещи появляются на заставке. После закрытия Delphi и повторного открытия ничего не отображается.

Вот выдержка из моего кода, которая делает это.

unit Wizards.Information;

interface

implementation

{$R *.res}

uses
  ToolsAPI, Windows, Graphics, SysUtils;

const
  ICON_SPLASH = 'SPLASHICON';
  ICON_ABOUT = 'ABOUTICON';

var
  AboutBoxServices: IOTAAboutBoxServices = nil;
  AboutBoxIndex: Integer = 0;

resourcestring
  resPackageName = 'Delphi Framework v1.0';
  resLicense = 'Mozilla Public License 1.1';
  resAboutCopyright = 'Copyright My Company Ltd.';
  resAboutTitle = 'Delphi Framework';
  resAboutDescription = 'Good description here ;)';

procedure RegisterSplashScreen;
var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.LoadFromResourceName(HInstance, ICON_SPLASH);
    SplashScreenServices.AddPluginBitmap(resPackageName, bmp.Handle, False, resLicense);
  finally
    bmp.Free;
  end;
end;

procedure RegisterAboutBox;
var
  ProductImage: HBITMAP;
begin
  Supports(BorlandIDEServices,IOTAAboutBoxServices, AboutBoxServices);
  ProductImage := LoadBitmap(FindResourceHInstance(HInstance), ICON_ABOUT);
  AboutBoxIndex := AboutBoxServices.AddPluginInfo(resPackageName, resAboutCopyright + #13#10#13#10 + resAboutDescription, ProductImage, False, resLicense);
end;

procedure UnregisterAboutBox;
begin
  if (AboutBoxIndex <> 0) and Assigned(AboutBoxServices) then
  begin
    AboutBoxServices.RemovePluginInfo(AboutBoxIndex);
    AboutBoxIndex := 0;
    AboutBoxServices := nil;
  end;
end;

initialization
  RegisterSplashScreen;
  RegisterAboutBox;

finalization
  UnRegisterAboutBox;
end.

Как вы можете видеть, я пытаюсь отобразить некоторую информацию в окне About Box в Delphi XE, и я встаю, но эта информация страдает от той же проблемы, что и с заставкой, к сожалению.

Что не так?

Любая подсказка приветствуется!

Заранее спасибо

На вопрос дан ответ, и теперь все, кажется, работает, но любые другие соображения приветствуются, я имею в виду, что любой другой ответ, отличный от использования ForceDemandLoadState(dlDisable), приветствуется!

1 Ответ

1 голос
/ 06 февраля 2012

Я думаю, вы можете попробовать позвонить ForceDemandLoadState(dlDisable) в начале процедуры регистрации.

...