Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.03;
Скачать: CL | DM;

Вниз

Постоянные программы   Найти похожие ветки 

 
UserUserov   (2004-09-16 20:45) [0]

Я хочу что-бы прога запускалась, как только я запущу WIN,
затем она была свернута в правый нижний угол. Вобщем работала
постоянно. Может кто знает как?


 
_student   (2004-09-16 20:53) [1]

1. Прописать программу в автозапуска в реестре
2. При запуске свернуть
3. Созадать иконку в трее для проги
4. Скрыть прогу, чтобы не было на панели
5. Наслаждаться программой


 
DVM ©   (2004-09-16 20:54) [2]

Если бы я начал собирать все варианты вопросов "Как запузырить туда где часики" за несколько лет получилась бы неплохая подборка. :)))


 
Anatoly Podgoretsky ©   (2004-09-16 20:57) [3]

DVM ©   (16.09.04 20:54) [2]
Форум не выдержит


 
Агент Х-СОМ ©   (2004-09-16 22:01) [4]

Ага, то есть типичный резидент. Ну в реестр адрес:

HKEY_LOCAL_MACHINE(HKEY_CURRENT_USER)/Software/Microsoft/Windows/CurrentVersion/Run

При запуске  - прописать frmMain.hide, а для эффекта свертывания - ShowWindow(Handle,SW_MINIMIZE);

Иконке в трее посвящено множество статей - долго описывать

А вообще всему этому посвящаются многие статьи, это несложно, просто объемно, и вариантов немало


 
icebeerg ©   (2004-09-17 11:53) [5]

> UserUserov   (16.09.04 20:45)
Про автозапуск уже сказали достаточно.
Про иконку к часикам читай FAQ или юзай RXLib
Про отображение (не отображение) формs Application.ShowMainForm=False в файле проекта


 
kukuikar ©   (2004-09-17 12:07) [6]

unit main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Menus;

const
 WM_MYICONNOTIFY = WM_USER + 123;

type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   RestoreItem: TMenuItem;
   FileExitItem1: TMenuItem;
   HideItem: TMenuItem;
   N1: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure RestoreItemClick(Sender: TObject);
   procedure HideItemClick(Sender: TObject);
   procedure FileExitItem1Click(Sender: TObject);
 private
   { Private declarations }
   ShownOnce: Boolean;
 public
   { Public declarations }
   procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
   procedure WMSYSCOMMAND(var msg: TMessage); message WM_SYSCOMMAND;
   procedure RestoreMainForm;
   procedure HideMainForm;
   procedure CreateTrayIcon(n: Integer);
   procedure DeleteTrayIcon(n: Integer);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}
uses ShellApi, shlobj, registry;

procedure TForm1.WMICON(var msg: TMessage);
var
 P: TPoint;
begin
 case msg.LParam of
   WM_RBUTTONUP://WM_LBUTTONUP
     begin
       GetCursorPos(p);
       SetForegroundWindow(Application.MainForm.Handle);
       PopupMenu1.Popup(P.X, P.Y);
     end;
   WM_LBUTTONDBLCLK: RestoreItemClick(Self); //Default
 end;
end;

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
 inherited;
 if (Msg.wParam = SC_MINIMIZE) then
   HideItemClick(Self);
end;

procedure TForm1.HideMainForm;
begin
 Application.ShowMainForm := False;
 ShowWindow(Application.Handle, SW_HIDE);
 ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;

procedure TForm1.RestoreMainForm;
var
 i, j: Integer;
begin
 Application.ShowMainForm := True;
 ShowWindow(Application.Handle, SW_RESTORE);
 ShowWindow(Application.MainForm.Handle, SW_RESTORE);
 if not ShownOnce then
 begin
   for I := 0 to Application.MainForm.ComponentCount - 1 do
     if Application.MainForm.Components[I] is TWinControl then
       with Application.MainForm.Components[I] as TWinControl do
         if Visible then
         begin
           ShowWindow(Handle, SW_SHOWDEFAULT);
           for J := 0 to ComponentCount - 1 do
             if Components[J] is TWinControl then
               ShowWindow((Components[J] as TWinControl).Handle,
                 SW_SHOWDEFAULT);
         end;
   ShownOnce := True;
 end;
//DeleteTrayIcon(1);end;

procedure TForm1.CreateTrayIcon(n: Integer);
var
 nidata: TNotifyIconData;
begin
 with nidata do
 begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle;
   uID := 1;
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
   uCallBackMessage := WM_MYICONNOTIFY;
   hIcon := Application.Icon.Handle;
ImageList è ò.ä.
   StrPCopy(szTip, Application.Title);
   
 end;
 Shell_NotifyIcon(NIM_ADD, @nidata); end;

procedure TForm1.DeleteTrayIcon(n: Integer);
var
 nidata: TNotifyIconData;
begin
 with nidata do
 begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle;
   uID := 1;
 end;
 Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ShownOnce := False;
 //CreateTrayIcon(1);
 HideItem.Enabled := False;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TForm1.RestoreItemClick(Sender: TObject);
begin
 RestoreMainForm;
 //DeleteTrayIcon(1);
 RestoreItem.Enabled := False;
 HideItem.Enabled := True;
end;

procedure TForm1.HideItemClick(Sender: TObject);
begin
 HideMainForm;
 CreateTrayIcon(1);
 HideItem.Enabled := False;
 RestoreItem.Enabled := True;
end;

procedure TForm1.FileExitItem1Click(Sender: TObject);
begin
 Close;
end;

end.


 
kukuikar ©   (2004-09-17 12:08) [7]

object Form1: TForm1
 Left = 192
 Top = 107
 Width = 696
 Height = 480
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 OnDestroy = FormDestroy
 PixelsPerInch = 96
 TextHeight = 13
 object PopupMenu1: TPopupMenu
   Left = 176
   Top = 120
   object RestoreItem: TMenuItem
     Caption = ""
     OnClick = RestoreItemClick
   end
   object HideItem: TMenuItem
     Caption = ""
     OnClick = HideItemClick
   end
   object N1: TMenuItem
     Caption = "-"
   end
   object FileExitItem1: TMenuItem
     Caption = ""
     OnClick = FileExitItem1Click
   end
 end
end


 
kukuikar ©   (2004-09-17 12:08) [8]

program TrayForm;

uses
 Forms,
 main in "main.pas" {Form1};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.


 
kukuikar ©   (2004-09-17 12:09) [9]

еще вопросы?


 
GuAV ©   (2004-09-17 12:34) [10]


> Ага, то есть типичный резидент.

Какие нафиг резиденты, это же win32, а резиденты были в ДОСе ?


 
JK   (2004-09-17 13:04) [11]

Кстати, классное название темы.


 
kukuikar ©   (2004-09-17 13:05) [12]


> Какие нафиг резиденты, это же win32, а резиденты были в
> ДОСе ?

а мы ваших резидентах на прерываниях перевешаем:)


 
icebeerg ©   (2004-09-17 15:33) [13]

Ну kukuikar ты сподобился, и делать нечего было чтоли? Это же по факам собирается в 5 минут... А вообще молодец. (что-то я ваще разленился)


 
kukuikar ©   (2004-09-17 16:27) [14]


> Ну kukuikar ты сподобился, и делать нечего было чтоли? Это
> же по факам собирается в 5 минут... А вообще молодец. (что-то
> я ваще разленился)

а с моего винта это собирается за минуту.
по моему это проще сделать чем написать:
юзай TNotifyIconData. все равно он не поймет с первого раза, а мы тут будем брызгать слюной и говорить о том что все очень устали и им некогда помогать чайникам...
Правильно?


 
kukuikar ©   (2004-09-17 16:28) [15]


> icebeerg ©   (17.09.04 15:33) [13]
> Ну kukuikar ты сподобился, и делать нечего было чтоли? Это
> же по факам собирается в 5 минут... А вообще молодец. (что-то
> я ваще разленился)


а с моего винта это собирается за минуту.
по моему это проще сделать чем написать:
юзай TNotifyIconData. все равно он не поймет с первого раза, а мы тут будем брызгать слюной и говорить о том что все очень устали и им некогда помогать чайникам...
Правильно?


 
kukuikar ©   (2004-09-17 16:30) [16]


> icebeerg ©   (17.09.04 15:33) [13]
> Ну kukuikar ты сподобился, и делать нечего было чтоли? Это
> же по факам собирается в 5 минут... А вообще молодец. (что-то
> я ваще разленился)


а с моего винта это собирается за минуту.
по моему это проще сделать чем написать:
юзай TNotifyIconData. все равно он не поймет с первого раза, а мы тут будем брызгать слюной и говорить о том что все очень устали и им некогда помогать чайникам...
Правильно?


 
Алхимик ©   (2004-09-17 20:06) [17]


> [14] kukuikar ©   (17.09.04 16:27)

Правильно.

> [15] kukuikar ©   (17.09.04 16:28)

Правильно.

> [16] kukuikar ©   (17.09.04 16:30)

Правильно.


 
olookin ©   (2004-09-17 20:08) [18]

--------------------------------------------------------------------------------
[17] Алхимик ©   (17.09.04 20:06)

Правильно!


 
GuAV ©   (2004-09-17 21:21) [19]

for I:=0 to 19 do
 MyPoys:=MyPost+Format("[%d] - Правильно."+sLineBreak, [I]);


 
UserUserov   (2004-09-17 21:46) [20]

!!!!!!Я не чайник!!!!!!!


 
Алхимик ©   (2004-09-18 12:21) [21]


> [20] UserUserov   (17.09.04 21:46)
> !!!!!!Я не чайник!!!!!!!

Правильно.


 
kukuikar ©   (2004-09-20 09:12) [22]


> GuAV ©   (17.09.04 21:21) [19]
> for I:=0 to 19 do
>  MyPoys:=MyPost+Format("[%d] - Правильно."+sLineBreak, [I]);

прикольно!


 
KSergey ©   (2004-09-20 09:45) [23]

> [20] UserUserov   (17.09.04 21:46)
> !!!!!!Я не чайник!!!!!!!

Типа обиделся?



Страницы: 1 вся ветка

Текущий архив: 2004.10.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.042 c
14-1094898124
Delpher
2004-09-11 14:22
2004.10.03
Изучение Delphi


9-1086760482
*John*1987*
2004-06-09 09:54
2004.10.03
Delphix для Delphi6


1-1095334252
Delph1
2004-09-16 15:30
2004.10.03
Как по закрытию формы освободить память из под нее?


1-1095355017
slaviq
2004-09-16 21:16
2004.10.03
Есть такая ф-я для парсинга строки - напомните кто знает плз.


14-1095164179
TohaNik
2004-09-14 16:16
2004.10.03
Прогнозы на лигу чемпионов 1-й тур