Autor Téma: Parametr z registru  (Přečteno 722 krát)

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 5
Parametr z registru
« kdy: 16-11-2021, 11:49:09 »
Zdravím.
Mám takový problém:

Pro spuštění aplikace po startu Windows používám zápis v registru:
Kód: Delphi [Vybrat]
  1.  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run jako hodnota: cesta k aplikaci\Aplikace.exe –hide
  2.  

V kódu aplikace parametr čtu:
Kód: Delphi [Vybrat]
  1. if (ParamStr(1)='-hide') then
  2. begin
  3. Application.ShowMainForm := False;
  4. Form1.Visible := False;
  5. ShowWindow(form1.Handle, SW_HIDE);
  6. end;
  7.  


Aplikace se po spuštění z registrů sama pustí a skryje se. Po spuštění poklepáním na exe soubor se pustí neskrytě.
Pro opětovné vyvolání do popředí mám dpr soubor takto:

Kód: Delphi [Vybrat]
  1. program MujProgram;
  2.  
  3. uses
  4.   Forms, windows, messages, tlhelp32,
  5.   Unit1 in 'Unit1.pas' {Form1};
  6.  
  7. {$R *.res}
  8.  
  9. var
  10. Wnd:thandle;
  11.  
  12.  
  13. begin
  14.  
  15. Wnd:=FindWindow(nil,'MujProgram');
  16. if Wnd = 0 then
  17.   begin
  18.   Application.Initialize;
  19.   Application.MainFormOnTaskbar := true;
  20.   Application.CreateForm(TForm1, Form1);
  21.      
  22.      //if ParamStr(1)='-hide' then
  23.      begin
  24.  
  25.      //Form1.Visible := False;
  26.      //Application.ShowMainForm := False;
  27.  
  28.      end;
  29. Application.Run;
  30.  
  31.  end
  32.  else
  33.  begin
  34.   ShowWindow(Wnd, SW_SHOWNORMAL);
  35.   Application.ShowMainForm := true;
  36.   setforegroundwindow(Wnd);
  37.   halt;
  38.  end;
  39. end.

Na normálním Windows vše funguje jak má. Ale ve Windows serveru se aplikace pustí a neskreje se.

Další problém je, že při odhlašování ze serveru se aplikace samy ukončí.



Vůbec netuším co s tím, s Windows serverem nemám zkušenosti.
D2007 Professional

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Parametr z registru
« Odpověď #1 kdy: 16-11-2021, 11:56:42 »
Na normálních Windows se ale ta aplikace při odhlášení uživatele ukončí taky, ne?

Programy, které mají běžet i bez přihlášeného uživatele, píšu jako služby (nemají žádné uživatelské rozhraní).


Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 5
Re:Parametr z registru
« Odpověď #2 kdy: 16-11-2021, 12:13:37 »
Ano máte pravdu, to mi nedošlo. A s tím parametrem v registrech je to jak?
D2007 Professional

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Parametr z registru
« Odpověď #3 kdy: 16-11-2021, 12:25:00 »
Ano máte pravdu, to mi nedošlo. A s tím parametrem v registrech je to jak?

S parametrem bohužel nevím, ale pokud to přepíšeš jako službu (která může s nějakou aplikací pro uživatelské rozhraní komunikovat třeba po TCP/IP), tak už parametr nebude třeba řešit, služba nebude vidět tak jako tak.

Online Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 256
  • Karma: 3
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Parametr z registru
« Odpověď #4 kdy: 16-11-2021, 20:53:05 »
A ta aplikace se ti skutecne sama skryje na desktop systému? K tomu by mel slouzit ten kod, ktery mas v DPR zakomentovany - precteni parametru a skryti okna.

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 5
Re:Parametr z registru
« Odpověď #5 kdy: 23-11-2021, 12:48:09 »
Zakomentovaný je, protože jej používám až při úplném vytvoření formu, jelikož tam jinak chyběly některé komponenty, když to bylo přímo v DPR.
To už teď není úplně důležité. Budu to muse nejspíš přepsat jako službu, což je to poslední co jsem chtěl :-( . Je tam spousta vizuálních věcí, nastavení atd... Takže asi pěkně znova.

S deplhi dělám jen několikrát do roka. Chápu to dobře, že v Delphi založím nový projekt jako service, vznikne mi exe soubor a ten pak nainstaluju jako službu? A co pak s těmi vizuelními věcmi, jaké řešení by bylo asi nejčistší? Je tam spoustu editů, checkboxů atd a jejich obsah se ukládá přímo do EEPROM námi vyrobeného zařízení pomocí TCP komunikace. Chápu to tak, že budu muset napsat nějakou aplikaci, která se bude ke službě připojovat a zkrze ní to sosat a zas ukládat? Služba mimo jiné za běhu průběžně načítá různá data a ukládá je do databáze.
D2007 Professional

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Parametr z registru
« Odpověď #6 kdy: 23-11-2021, 13:16:22 »
Chápu to tak, že budu muset napsat nějakou aplikaci, která se bude ke službě připojovat a zkrze ní to sosat a zas ukládat? Služba mimo jiné za běhu průběžně načítá různá data a ukládá je do databáze.

Kdyby to šlo, nechal bych ve službě jen to načítání a ukládání dat do databáze.

Do samostatné aplikace bych dal zobrazení dat.

Co se týče nastavení nových parametrů, pokud by mohla aplikace komunikovat přímo s tím zařízením (a nevadilo by, že se třeba aplikace pokusí poslat nové nastavení a zároveň služba zkusí vyčíst data), tak bych to nastavení řešil jen aplikace--zařízení, bez vazby na službu.

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 5
Re:Parametr z registru
« Odpověď #7 kdy: 23-11-2021, 15:36:42 »
To je to, co mě úplně irituje. Potřebuji program, který běží na pozadí, ale nesmí být vizuální, protože je to služba...

Ale dobrá, dejme tomu, že udělám službu, která zapisuje do databáze. Kam ale dám přístupové údaje? Odkud je má služba číst? Nyní je mám v ini souboru. Potřebuji také někde vidět, asi v té pomocné aplikaci, zda je db přístupná a zda je to k ní připojeno. . To udělám jak? Poradil by mi někdo, jak se toto řeší? Protože potřebuji nějakou kontrolu nad tou službou, zda se v ní odehrává vše jak má...
D2007 Professional

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1301
  • Karma: 51
    • Verze Delphi: 10.3
Re:Parametr z registru
« Odpověď #8 kdy: 23-11-2021, 16:00:09 »
Klidně bych to dal do .ini souboru té služby. (A aplikace bude zase u sebe mít svůj .ini soubor s obdobnými/stejnými údaji.)

Služba může do databáze zapisovat i log, ze kterého se pozná, jestli je vše ok, případně nějaké datum a čas posledního úspěšného zápisu apod.

Ono to není tak hrozné, jak to asi teď zní :-)

Offline jarex

  • Plnoletý
  • ***
  • Příspěvků: 225
  • Karma: 5
Re:Parametr z registru
« Odpověď #9 kdy: 09-12-2021, 15:42:53 »
Excellent
Rated 1 time
Předělal jsem to na službu a aplikaci používám pouze na nastavení parametrů. Alespoň jsem se zas něco nového naučil... Děkuji za rady.
D2007 Professional