Avatar billede safl Nybegynder
23. marts 2007 - 19:38 Der er 8 kommentarer og
2 løsninger

TTrayIcon chrasher min service

Hey,

Jeg bruger Turbo Delphi (http://www.turboexplorer.com/) aka den gratis Delphi 2006 med begrænsningen at der ikke kan installeres 3. parts komponenter.

Turbo Delphi har en rigtig lækker TTrayIcon komponent ligesom Delphi 2006.
Problemet er imidlertid at den chrasher min NT service, så snart jeg dropper min TTrayIcon ned i min service så chrasher min service når maskinen genstartes.
Problemet er altså at TTrayIcon ikke håndterer at servicen startes inden der er logget på windows og altså inden der er en taskbar/systray.

Servicen chrasher ikke hvis jeg har disabled TTrayIcon og servicen starter.
Og ja min service må gerne interagere med desktoppen.

Jeg vil altså gerne kunne styre TrayIcon.Visible true/false, så min service sætter TrayIcon.Visible := true; når der logges på maskinen og sætter den til false når der logges af maskinen.

Hvordan tilføjer jeg den logik til min service?

på forhånd tak,

Simon
Avatar billede a_nor Nybegynder
24. marts 2007 - 07:39 #1
Du kan studere følgende:

http://delphi.about.com/cs/adptips2000/a/bltip0500_4.htm  og

http://msdn2.microsoft.com/en-us/library/aa376890.aspx.

Og følgende om Vista Shutdown:

http://msdn2.microsoft.com/en-us/library/ms700677.aspx

Har testet Delphi eksemplet vedr. "Query". Det virker.
Avatar billede a_nor Nybegynder
24. marts 2007 - 07:51 #2
Iøvrigt er følgende også interessant for dig:

http://msdn2.microsoft.com/en-us/library/ms997634.aspx
Avatar billede martinlind Nybegynder
24. marts 2007 - 10:08 #3
En Service har en anden Application Class end en Win32-Form app som en TrayIcon er beregnet til. Din service går sikkert ned fordi trayicon laver noget som går fint med end alm. application, men det er en service ikke.

Du skal læse lidt mere op på hvad en NT-Service er :)
Avatar billede safl Nybegynder
24. marts 2007 - 18:04 #4
a_nor> Interessant det ser ud til at jeg kan lytte efter beskederne "WTS_SESSION_LOGON/WTS_SESSION_LOGOFF" og enable/disable trayicon efter dette men jeg er ikke helt sikker på om det vil være en bagud kompatibel metode altså om dette også vil virke med Win2k/2k3.

martinlind> Jeg har beskrevet i mit spørgsmål hvorfor min service går ned, så det behøver du ikke komme med et ukvalificeret bud på. Det er rimelig simpelt at der ikke er error handling i trayicon komponenten og det er det jeg har brug for at lave.
Så hvad med du kom med et bud på det, istedet for at komme med en ignorant kommentar?
Avatar billede martinlind Nybegynder
24. marts 2007 - 19:40 #5
Interessant spm. historik du har...........
Avatar billede tolderlund Nybegynder
26. marts 2007 - 10:28 #6
Jeg vil stærkt fraråde at bruge trayicon i en service.
Det har altid været en dårlig ide lave interaktive services og fra Vista er det ikke længere muligt.
http://msdn2.microsoft.com/en-us/library/ms683502.aspx
Du bør derfor opdele din service i 2 dele, en decideret service og en almindelig tray icon program.
Avatar billede martinlind Nybegynder
27. marts 2007 - 16:13 #7
tolderlund >> safl er vist lide undenfor "pædagoist" rækkevide, og 80 % af alle hans spm. tager han selv point tilbage resten gi'er han kun det halve af hvad han har udlovet..... så spar på de kloge ord :)
Avatar billede safl Nybegynder
27. marts 2007 - 16:30 #8
martinlind> Hvorfor kan du ikke finde ud af at holde en pæn tone og komme med saglige argumenter ligesom de andre? tolderlunds argumentation er ganske fin og tilstrækkeligt overbevisende.

Dog kan jeg generelt sige til min problemstilling at det kan løses vha. api kaldet Shell_Notify, det fungerer fint og kaldet pre-logon chrasher ikke en ntservice der melder kaldet simpelthen blot false... det kan så udvides med en app hook og lytte efter de korrekte beskeder så fungerer trayicons for interaktive services.

Konklusionen er at det fungerer fint med TrayIcons på interaktive services men ifølge tolderlunds argument så er det langt fra best practice. Tolderlund skriv et svar så deler dig og a_nor pointene.
Avatar billede martinlind Nybegynder
27. marts 2007 - 17:47 #9
Min tone fejler ikke noget :) ( men du kan ikke løbe fra at de 4 spm. jeg checkede der havde du udlovet 200 point og ikke uddelt dem, lide lige som du er igang med her, ikk' )
Avatar billede tolderlund Nybegynder
28. marts 2007 - 15:37 #10
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester