Исходные данные:
Программа следящая чтобы другая была загружена и при необходимости перегружающая её. Код не сложный см. ниже. Результат получился в 510кб EXE. В памяти оно при старте около 1,5Мб. При перегрузке программы накидывается еще несколько десятков Кб.
Подскажите пожалуйста где у меня возможна ошибка и как можно уменьшить занимаемое в памяти место. Если возможно решение не на Delphi, а на чем то другом с меньшими затратами памяти, подскажите в личку.
Код программы. Для скрытия основной программы используется RXTrayIcon.
| Код | unit UnitMain;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AppEvnts, ExtCtrls, Menus, ShellApi, StdCtrls, Buttons, ImgList, RXShell;
type TToonelCheck = class(TForm) PopupMenu: TPopupMenu; Timer: TTimer; ApplicationEvents: TApplicationEvents; btnExit: TBitBtn; Label1: TLabel; mRestore: TMenuItem; RxTrayIcon: TRxTrayIcon; ImageList: TImageList; mSeparator: TMenuItem; mExit: TMenuItem; procedure FormCreate(Sender: TObject); procedure btnExitClick(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure mRestoreClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure ApplicationEventsMinimize(Sender: TObject); private { Private declarations } procedure CheckAndLoadToonel; public { Public declarations } protected { Protected declarations } end;
var ToonelCheck : TToonelCheck; h : hwnd;
implementation
{$R *.dfm}
procedure TToonelCheck.CheckAndLoadToonel; begin if not (FindWindow(nil, 'toonel.net') <> 0) then begin if not FileExists(ExtractFilePath(Application.ExeName)+'toonel.jar') then ShowMessage('toonel.jar не найден в каталоге программы.') else begin ShellExecute(h, 'open', 'toonel.jar', nil, nil, SW_MINIMIZE); end; end else begin // ShowMessage('Окно найдено'); end; end;
procedure TToonelCheck.FormCreate(Sender: TObject); begin CheckAndLoadToonel; end;
procedure TToonelCheck.TimerTimer(Sender: TObject); begin CheckAndLoadToonel; end;
procedure TToonelCheck.btnExitClick(Sender: TObject); begin Application.Terminate; end;
procedure TToonelCheck.mRestoreClick(Sender: TObject); begin Application.Restore; end;
procedure TToonelCheck.FormShow(Sender: TObject); begin ShowWindow(Application.Handle,SW_HIDE); end;
procedure TToonelCheck.ApplicationEventsMinimize(Sender: TObject); begin ShowWindow(Application.Handle,SW_HIDE); end;
end.
|
|