[delphi] tray

0

mam cos takiego co zmienić aby program odpalał sie w trayu

Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
Reg.WriteString('Architekt pulpitu',ParamStr(0));
end else......................coś tam

wszystko dziala więc jest oki... ale ma ię odpalać w trayu jak to zrobić
--Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

Musisz zmienić wpisy w programie, nie w rejestrze. Było już o tym na forum, jak zrobić program, który nie będzie pokazywany na pasku menu i było też jak umieścić w trayu ikonkę (jedno i drugie jest też w FAQ)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Program dziala w trayu normalnie. Tak to jest w porządku ale chodzi o to aby przy uruchamianiu przy starcie kompa odpalał sie w trayu a nie normalnie przeciez nie dam mu w
Procedure Tform1.onacitve (sender:Tobject)
var cos:TCloseAction
begin
onclose(sender, cos);
...........
.........
end;
Bo nie o to chodzi on musi sie odpalać z kompem ale w trayu. Mam wszystko zrobione że program działa w trayu chodzi tylko o ten kawałek rejestru

Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
Reg.WriteString('Architekt pulpitu',ParamStr(0));

Żeby coś tu zmienic aby odpalał sie w tray'u
--Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

Waldi napisał:
Program dziala w trayu normalnie. Tak to jest w porządku ale chodzi o to aby przy uruchamianiu przy starcie kompa odpalał sie w trayu a nie normalnie.

Czyli normalnie jak uruchomisz to uruchamia się w trayu, ale jak uruchamiasz przez wpis w rejestrze to uruchamia się tobie na pasku (albo jeszcze gorzej, jak zminimalizowane okno na styl Win 3.1)?

To prawdopodobnie dlatego, że uruchamiasz za wcześnie. Nie możesz przenieść tego do Autostartu?

Jak zerkniesz do rejestru, to zobaczysz, że różne programy uruchamiają się z różnymi przełącznikami (GG z /tray, Yahoo z -quiet, MSMessanger z /background, AVGuard z /min), ale to raczej nie zależy od wpisu w rejestrze.--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Wydaje mi sie ze Waldiemu chodzi o to, ze program sie uruchamia, jest w tray-u, ale do tego jest widoczny, a ma nie byc (jesli zle zrozumialem to sorry ;) ).

Wystarczy wtedy w OnCreate dac Form1.Visible := False; i już :)--- - -
Roszi

0

Roszi napisał:
Wydaje mi sie ze Waldiemu chodzi o to, ze program sie uruchamia, jest w tray-u, ale do tego jest widoczny, a ma nie byc (jesli zle zrozumialem to sorry ;) ).

&gtWystarczy wtedy w OnCreate dac Form1.Visible := False; i już :)

Nie nie nie

  1. Program sie odpala jest widoczny na pulpicie ikona w tray'u też jest
  2. klikam na krzyzyk na pasku tytułowym program jest już tylko w trayu
    Reg := TRegistry.Create;
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
    Reg.WriteString('Architekt pulpitu',ParamStr(0));

Co tu dopisać aby program od razu lądował w tray'u
Albo jeśli jest skrót np,: w autostarcie to z jakim parametrem sie go odpala żeby był w tray'u getright tak ma
W on close mam coś takiego
Action := caNone;
Form1.Hide;
Ale nie chce tego odpalać w onactive bo wtedy jak ktoś uruchomi program to nic nie zobaczy i może sie okazać ze nawet go nie zauważy. Chodzi o to
aby jak odpalam pierwszy raz nie chował sie w trayu a inne już moze ale znowu nie chce robić pępli i zapisu np do ini albo rejestru. Chociaz teraz sobie mysle że to bedzie jedyne wyjście jak sie nie dowiem co tam dopisać

Nie wiem czy mnei zrozumiano :-) Ale już mnei palce bolą od klawy:-)
Wraz ze startem windowsa ma sie uruchomić w trayu jak ktoś go odpali już po starcie windy tzn uruchomi exe'ca to ma sie pojawić na pulpicie

Inaczj już nie potrafie

--Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

no mi sie daley wydaje ze Ci chodzi o to co napisalem :]--- - -
Roszi

0

Roszi napisał:
no mi sie daley wydaje ze Ci chodzi o to co napisalem :]

Napisałeś
Wystarczy wtedy w OnCreate dac Form1.Visible := False; i już
No i tak bedzie na pulpicie tylko tyle że nie widoczna
hmm... ja już nie wiem jak mam napisać.hmm...

Zrobie tak do ini bo i tak on jest zapisze sobie pierwsze uruchomienie jakąś zmienną i bede sprawdzał czy to pierwszy raz jak nie to do traya wtedy zastosuje to
Action := caNone;
Form1.Hide;
A jak nie to zostawie gona pulpicie chociaż to i tak nie o to mi chodzi ale cóż hmm...
--Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

no łał, na pulpicie, ale nie widoczna :) czyli efekt osiagniety :D.

ja tak zawsze robie tray'owe ukrywanie i nie widze roznicy.--- - -
Roszi

0

Roszi napisał:
&gtno łał, na pulpicie, ale nie widoczna :) czyli efekt osiagniety :D.

Być morze ale za każdym razem będzie właśnie tak wtedy w onshow musiałbym dać visible:true.

Ponadto Roszi napisał:
&gtja tak zawsze robie tray'owe ukrywanie i nie widze roznicy.

Ale to zamula:D :D :D

Dobra zrobie tak jak napisałem wcześniej no chyba że ktoś napisze mi jaki parametr albo dokończy mi wpis do rejestru.:D

--
Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

Waldi napisal:
Dobra zrobie tak jak napisałem wcześniej no chyba że ktoś napisze mi jaki parametr albo dokończy mi wpis do rejestru.

nie ma takiego paramertu, dzieki ktoremu program od razu ladowalby sie w tray'u, sam musisz to oprogramowac :)

--
-=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

Waldi napisał:

  1. Program sie odpala jest widoczny na pulpicie ikona w tray'u też jest
  2. klikam na krzyzyk na pasku tytułowym program jest już tylko w trayu

Co tu dopisać aby program od razu lądował w tray'u
Ale nie chce tego odpalać w onactive bo wtedy jak ktoś uruchomi program to nic nie zobaczy i może sie okazać ze nawet go nie zauważy. Chodzi o to
aby jak odpalam pierwszy raz nie chował sie w trayu a inne już moze ale znowu nie chce robić pępli i zapisu np do ini albo rejestru. Chociaz teraz sobie mysle że to bedzie jedyne wyjście jak sie nie dowiem co tam dopisać

Nie można było tak od razu? W OnCreate piszesz:
if ParamCount &gt 0 then
if ParamStr(1) = '/tray' then
Form1.Hide;

A w rejestrze piszesz:
Reg.WriteString('Architekt pulpitu',ParamStr(0)+' /tray');

Nie wiem czy mnei zrozumiano :-) Ale już mnei palce bolą od klawy:-)

Co tak słabo? Ćwicz palce. :D

--
Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

LKS napisał:

nie ma takiego paramertu, dzieki ktoremu program od razu ladowalby sie w tray'u, sam musisz to oprogramowac :)

Jeśliktoś widział kiedyś proram Riv chat to wie że w jego konfiguracji było napisane aby odpalać z /-y takim parametrem(chyab takim). Może ktoś wie jak to oprogramować.

Dryobates napisał:

Nie można było tak od razu? W OnCreate piszesz:
if ParmCount > 0 then
if ParamStr(1) = '/tray' then
Form1.Hide;

A w rejestrze piszesz:
Reg.WriteString('Architekt pulpitu',ParamStr(0)+' /tray');

No właśnie o to chodziło na Dryobatesa zawsze można liczyć
Nigdy jeszcze mój post nie miał ponad 10 odpowiedzi
Wielkie dzięki

Co tak słabo? Ćwicz palce.
Od rana non stop na klawie pisze już mam dość najpierw jakiś polski niemiec potem kilka innych osób na gg no i na forum czasami trzeba trochę odpocząć

--
Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

Waldi napisal:
LKS napisał:

nie ma takiego paramertu, dzieki ktoremu program od razu ladowalby sie w tray'u, sam musisz to oprogramowac

Jeśliktoś widział kiedyś proram Riv chat to wie że w jego konfiguracji było napisane aby odpalać z /-y takim parametrem(chyab takim). Może ktoś wie jak to oprogramować.

heh trzeba bylo pisac od razu ze nie wiesz jak "obslugiwac" parametry :)

--
-=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

To jest moje oncreate

procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamCount &gt 0 then
if ParamStr(1) = '/tray' then
Form1.Hide; *minimalizacja traya
*OD TRAYA
with IconNotifyData do
begin
hIcon:=Application.Icon.Handle;
uCallbackMessage:=WM_USER+1;
cbSize:=SizeOf(IconNotifyData);
Wnd:=Handle;
uID:=100;
uFlags:=NIF_MESSAGE+NIF_ICON+NIF_TIP;
end;

  • Kopiujemy tytuł aplikacji jako "dymek"
    StrPCopy(IconNotifyData.szTip, Application.Title{+'Do zmany tapety pozostało '+inttostr(ilec)});
  • Dodajemy ikonę do traya
    Shell_NotifyIcon(NIM_ADD,@IconNotifyData);
    //------------KONIEC TRAYA------------------------

pobieranie(sender);
plik:=TIniFile.Create(temp+'\Architekt.ini');
tablica[1]:=plik.ReadString('Sciezki','pos1',(tablica[1]));
tablica[2]:=plik.ReadString('Sciezki','pos2',(tablica[2]));
tablica[3]:=plik.ReadString('Sciezki','pos3',(tablica[3]));
tablica[4]:=plik.ReadString('Sciezki','pos4',(tablica[4]));
tablica[5]:=plik.ReadString('Sciezki','pos5',(tablica[5]));
tablica[6]:=plik.ReadString('Sciezki','pos6',(tablica[6]));
tablica[7]:=plik.ReadString('Sciezki','pos7',(tablica[7]));
tablica[8]:=plik.ReadString('Sciezki','pos8',(tablica[8]));
tablica[9]:=plik.ReadString('Sciezki','pos9',(tablica[9]));
tablica[10]:=plik.ReadString('Sciezki','pos10',(tablica[10]));
tablica[11]:=plik.ReadString('Sciezki','pos11',(tablica[11]));
tablica[12]:=plik.ReadString('Sciezki','pos12',(tablica[12]));

end;

a tu dodaje do rejestru

procedure TForm2.BitBtn1Click(Sender: TObject);
begin
if form2.ComboBox1.ItemIndex=0 then
begin
showmessage('Nie ustawiles czasu');
end;
if form2.ComboBox1.ItemIndex&lt&gt0 then
form2.close;
form1.pobieranie(sender);
plik:=TIniFile.Create(temp+'\Architekt.ini');
plik.WriteInteger('Czas','po',combobox1.itemindex);
jaka:=tablica[1]; t:=1;
czasy(Sender);
form1.pobieranie(sender);
plik:=TIniFile.Create(temp+'\Architekt.ini');
plik.WriteInteger('Czas','t',t);
plik.WriteInteger('Czas','ilec',ilec);
if form2.CheckBox1.Checked=true then
begin
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
Reg.WriteString('Architekt pulpitu',ParamStr(0)+'/tray');
end else
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);
Reg.DeleteValue('Architekt pulpitu');
plik.WriteBool('start','tak',form2.CheckBox1.Checked);
end;

i tak nie dziala
jak jest Reg.WriteString('Architekt pulpitu',ParamStr(0)+'/tray');
if ParamStr(1) = '/tray' then
to program teraz wcale nieodpala ja wymiękam
a jak jest Reg.WriteString('Architekt pulpitu',ParamStr(0)+' /tray');
if ParamStr(1) = ' /tray' then
to odpala sie normalnie,a różnie sie tylko spacją przed /tray
Co by tu zrobić???

--
Pozrowienia {hello}
Waldi Koronowo
[email protected]

0

W rejestrze trzeba umieścić wartość ze spacją ' /tray', a w OnCreate musi być bez spacji '/tray'. Trzeba wykorzystać zmienną pomocniczą (w OnCreate, OnShow i OnActivate nie można ukrywać formy, trzeba to zrobić w OnPaint)

var
Form1: TForm1;
schowaj : boolean;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamCount &gt 0 then
if ParamStr(1) = '/tray' then
schowaj := true;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
if schowaj then
begin
Form1.Hide;
schowaj := false;
end;
end;
--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Super dziala mrugnie na ekranie i chowa sie w trayu i o to chodziło. Jak zwykle Dryobates nie zawiódł {brawo} dla niego {brawo}. {browar} Albo skrzynka
Wielkie dzięki
a jak by ktoś chciał to wykorzystać to w procedurze Tform1.paint jest literówka
powinno być
if schowaj=true then
zresztą po co mówie każdy pewnie to wie, chociaż bez =true też skąpiluje.
Jescze raz dzięki--Pozdrowienia {hello}
Waldi Koronowo
[email protected]

0

Waldi napisał:
Super dziala mrugnie na ekranie i chowa sie w trayu i o to chodziło.
U mnie nie mruga :)

a jak by ktoś chciał to wykorzystać to w procedurze Tform1.paint jest literówka
powinno być
if schowaj=true then
zresztą po co mówie każdy pewnie to wie, chociaż bez =true też skąpiluje.

Nie trzeba porównywać wartość true z wartością true. To (teoretycznie) zwalnia wykonywanie programu (teoretycznie, bo kompilator i tak to wykryje i zostawi bez porównywania)--Jest jeszcze jeden błąd ... :)

Apel: Piszcie w tematach o jaki język programowania chodzi np. : [Delphi], [C++], itp.

Pomoc do Delphi po polsku. http://www.4programmers.net/forum/index.php?action=show&id=21335&c=2

Oficjalny kanał IRC serwisu 4programers:
serwer: warszawa.ircnet.pl sieć: POLNet kanał: #4programmers.net

0

Dryobates napisał:

&gtU mnie nie mruga :)
To zależy co masz za program i ile on pozera zasobów.:(

&gtNie trzeba porównywać wartość true z wartością true. To (teoretycznie) zwalnia wykonywanie programu (teoretycznie, bo kompilator i tak to wykryje i zostawi bez porównywania)
Dobrze wiedzieć :-) --Pozdrowienia {hello}
Waldi Koronowo
[email protected]

1 użytkowników online, w tym zalogowanych: 0, gości: 1