Avatar billede hugopedersen Nybegynder
10. august 2010 - 15:10 Der er 14 kommentarer og
1 løsning

Skrivning i Windows eventlog

Problemet har været vendt før uden at blive løst, så nu prøver jeg igen.
Jeg forsøger at skrive i Windows eventloggen med funktionen LogMessage fra SvcMgr, men jeg får konsekvent en meddelelse i eventloggen som nedenfor.
LogMessage('Program started OK', EVENTLOG_SUCCESS, 0, 1);

Jeg har en service.mc fil som jeg fik kompileret til en service.res fil efter råd fra en. Men det har ikke gjort nogen forskel.

Nogen der har ideer til hvad der skal til for at det retter sig?

The description for Event ID ( 1 ) in Source ( frmMain ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: Program started OK.
Avatar billede Slettet bruger
11. august 2010 - 09:35 #1
Du kan se hvordan du gør det her:
http://www.tolderlund.eu/delphi/service/service.htm
Avatar billede hugopedersen Nybegynder
11. august 2010 - 10:12 #2
Ja og sidste gang jeg prøvede virkede det ikke!

Men denne gang gør det så enten har jeg ikke læst rigtig sidst eller også er der noget andet galt :-)
Avatar billede hugopedersen Nybegynder
11. august 2010 - 10:14 #3
Det eneste issue er at der i stedet for mit programnavn står frmMain som er navnet på min form.
Det er i kolonnen Source i eventvieweren
Avatar billede hugopedersen Nybegynder
11. august 2010 - 11:29 #4
Det vil sige at det rent faktisk stadig ikke virker - jeg var kommet til at kigge et forkert sted i eventloggen :-)
Avatar billede tolderlund Nybegynder
11. august 2010 - 12:34 #5
Jeg ved det virker, for jeg har selv prøvet det da jeg skrev den tutorial.
Avatar billede hugopedersen Nybegynder
11. august 2010 - 12:42 #6
Det virker åbenbart en gang i mellem.  Det er som om resourcen ikke altid kommer med i .exe filen af en eller anden grund.
Men jeg kan ikke se nogen tråd i hvornår den gør og ikke gør.
Avatar billede hugopedersen Nybegynder
11. august 2010 - 12:45 #7
Jeg har lavet en lille fil som jeg kører for at lave resourcen.
Kan det mon være fordi den mc.exe jeg har en meget gammel?

@ECHO OFF
CLS
ECHO ******************************************************
ECHO  First create the message resource file
ECHO ******************************************************
ECHO.
D:\Documents\Delphi\_Resources\MC.EXE WatchdogMessages.mc
ECHO.
ECHO.
PAUSE
ECHO ******************************************************
ECHO  Now we compile it to a Delphi resource file
ECHO ******************************************************
ECHO.
BRCC32.EXE WatchdogMessages.rc
ECHO.
ECHO.
PAUSE

Ville gerne have lavet det så den blev kørt hver kan jeg kører kompilering, men jeg kan ikke se at man kan gøre det nogen steder i IDE
Avatar billede tolderlund Nybegynder
11. august 2010 - 12:49 #8
Hvis du har servicen installeret i forvejen, skal den afinstalleres og installeres igen, ellers bliver koden i ServiceAfterInstall ikke kørt.

Og hvorfor gør du noget andet end det jeg skriver i min tutorial?
Resourcen skal kun laves en gang. Du har aldrig brug for at ændre den når du kompilerer din app.
Avatar billede hugopedersen Nybegynder
11. august 2010 - 13:07 #9
Det er altså et eller andet med at den resourcefil ikke altid kommer med i .exe filen.
Hvis jeg går ind med XN så kan jeg se at den ikke altid er med.

Men lige nu har jeg en der virker og så må jeg håbe at det ikke bliver nødvendigt at lave om i den.
Avatar billede hugopedersen Nybegynder
11. august 2010 - 13:09 #10
PS: jeg mener selv jeg har fulgt din tutorial rimelig trin for trin.
At jeg lavede den lille commandfile er bare for at gøre det nemt for mig selv. Jeg troede bare at mit problem var relateret til at resourcen skulle kompiles.
Avatar billede tolderlund Nybegynder
11. august 2010 - 13:37 #11
Hvis resourcefilen ikke kommer med i exe-filen er det kun fordi linjen med
{$R MyServiceMessageResource.res}
mangler (eller hvad din resourcefil nu hedder).

Det er vel ikke fordi du har en gammel exe-fil liggende (uden resourcen) som du kommer til at bruge?
Avatar billede hugopedersen Nybegynder
11. august 2010 - 13:52 #12
Af en eller anden grund så fjerner Delphi min $R linie og erstatter den med {$R *.dres}

Måske har det noget at sige :-)
Avatar billede tolderlund Nybegynder
11. august 2010 - 14:07 #13
Du må ALDRIG nogensinde ændre Delphis egen linje
{$R *.res}
ALDRIG ALDRIG ALDRIG
Det er børnelærdom.

Du må ALDRIG nogensinde ændre i projektets resourcefil.
ALDRIG ALDRIG ALDRIG
Det er børnelærdom.

Du skal TILFØJE linjen
{$R MyServiceMessageResource.res}

så det ser f.eks. sådan ud:
{$R *.res}
{$R MyServiceMessageResource.res}
Avatar billede hugopedersen Nybegynder
11. august 2010 - 14:16 #14
Det er også det jeg gør, men af en eller anden grund kommer der til at stå {$R *.dres} i stedet for min {$R WatchdogMessages.res} og det er nok der kæden hopper af.
Men hvorfor der gør det ved jeg ikke.

Men nu ved jeg at det kan ske og kan så checke det.
Avatar billede tolderlund Nybegynder
11. august 2010 - 14:19 #15
Så skriv linjen
{$R WatchdogMessages.res}
et andet sted, f.eks. din main unit.
Det behøver ikke at være i projektfilen.
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