Delphi TEventLogger

27.06.2019 - Lesezeit: 3 Minuten

MEINserver Service - Logmeldungen werden über TEventLogger ausgegeben.

Damit die Ereignisanzeige nicht mit den Worten beginnt:

Die Beschreibung für die Ereignis-ID "0" aus der Quelle "MEINserver" wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf dem lokalen Computer installiert, oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren. Falls das Ereignis auf einem anderen Computer aufgetreten ist, mussten die Anzeigeinformationen mit dem Ereignis gespeichert werden. Die folgenden Informationen wurden mit dem Ereignis gespeichert:

muss eine res-Datei erstellt und für die Ereignisanzeige zur Verfügung gestellt werden.

Die Datei meinServer_Message.mc erstellen. (Bitte den Punkt und die Leerzeile nach jedem beachten)

LanguageNames=(German=0x407:MSG00407)

MessageId=0x2
SymbolicName=Kategorie_1
Language=German
Kategorie 1
.

MessageId=0x10
SymbolicName=MSG_SERVER_MELDUNG
Language=German
MEINserver: %1
.

Mit Hilfe von mc.exe und brcc32.exe die Datei meinServer_Message.res erzeugen. (mc.exe stammt aus dem Microsoft Windows 10 SDK)

@"c:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\mc.exe" meinServer_Message.mc
@brcc32 meinServer_Message.rc -fo meinServer_Message.res
@pause

Die Resourcendatei im Projekt einbinden

program meinServer;

uses
  SvcMgr,
  ...
  tools_web in '..\tools\tools_web.pas';

{$R *.res}
{$R meinServer_Message.res}

begin
  if not SvcMgr.Application.DelayInitialize or SvcMgr.Application.Installing then
    SvcMgr.Application.Initialize;
  SvcMgr.Application.CreateForm(TmeinServe, meinServer);
  SvcMgr.Application.Run;
end.

Beim Setup des Services muss die Message-Datei in die Registry eingetragen werden:

const
  cEventLogger_MEINserver = 'MEINserver';
  cEventLogger_MEINserver_Category = $02;
  cEventLogger_MEINserver_ID = $20;

procedure WriteRegistryFuerEventlog(reg: TRegistry);
const
  REG_CategoryCount = 'CategoryCount';
  REG_TypesSupported = 'TypesSupported';
  REG_EventMessageFile = 'EventMessageFile';
  REG_CategoryMessageFile = 'CategoryMessageFile';
  cCategoryCount = 1;
  cTypesSupported = 0;
var
  aMessageFile: string
begin
  aMessageFile := ExtractFilePath(Application.ExeName) + 'meinServer.exe';

  reg.RootKey := HKEY_LOCAL_MACHINE;
  if reg.OpenKey('SYSTEM\CurrentControlSet\Services\Eventlog\Application\' + cEventLogger_MEINserver, True) then
  begin
    if reg.ValueExists(REG_CategoryCount) then
    begin
      if reg.ReadInteger(REG_CategoryCount) <> cCategoryCount then
        reg.WriteInteger(REG_CategoryCount, cCategoryCount);
    end
    else
    begin
      reg.WriteInteger(REG_CategoryCount, cCategoryCount);
    end;
    if reg.ValueExists(REG_TypesSupported) then
    begin
      if reg.ReadInteger(REG_TypesSupported) <> cTypesSupported then
        reg.WriteInteger(REG_TypesSupported, cTypesSupported);
    end
    else
    begin
      reg.WriteInteger(REG_TypesSupported, cTypesSupported);
    end;
    if reg.ValueExists(REG_EventMessageFile) then
    begin
      if reg.ReadString(REG_EventMessageFile) <> aMessageFile then
        reg.WriteString(REG_EventMessageFile, aMessageFile);
    end
    else
    begin
      reg.WriteString(REG_EventMessageFile, aMessageFile);
    end;
    if reg.ValueExists(REG_CategoryMessageFile) then
    begin
      if reg.ReadString(REG_CategoryMessageFile) <> aMessageFile then
        reg.WriteString(REG_CategoryMessageFile, aMessageFile);
    end
    else
    begin
      reg.WriteString(REG_CategoryMessageFile, aMessageFile);
    end;
  end
  else
  begin
    abort;
  end;
end;

Anzeige der Meldungen in der Power-Shell

  Get-EventLog -LogName Application -Source HEIMserver | format-table -wrap

Literatur

Tags:

Fritzbox 7412 WLAN aktivieren

25.06.2019 - Lesezeit: ~1 Minute
  1. Download Image für Fritzbox 7412
  2. Fritzbox Update aus Datei
  3. Auf Werkseinstellungen zurücksetzen.
    • (nachdem Neustart sollte die WLAN-LED wieder leuchten)
  4. Startcode des DSL-Anbieters eingeben
    • (Der DSL-Anschluss wird eingerichtet und die Telefonnummern eingetragen)
    • (die WLAN-LED sollte immer noch leuchten)

Literatur

Tags: Fritzbox

Fedora30 unter VMWare auf 1920x1080 einstellen

02.06.2019 - Lesezeit: 2 Minuten
  • Zuerst Wayland deaktivieren
$ sudo nano /etc/gdm/custom.conf
[daemon]
# Uncomment the line below to force the login screen to use Xorg
WaylandEnable=false
  • Reboot
  • mit cvt eine Modeline für die Auflösung 1920x1080 berechnen:
    $ cvt 1920 1080
    # 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
    Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
  • mit xrandr die neue Modeline bekanntmachen
    $ xrandr --newmode "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
  • mit xrandr die neue Modeline hinzufügen
    $ xrandr --addmode Virtual1 "1920x1080"
  • mit xrandr die neue Modeline aktivieren
    $ xrandr --output Virtual1 --mode "1920x1080"

Literatur

sudo nano /etc/gdm/custom.conf
cvt 1920 1080
xrandr --newmode "1920x1080"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync
xrandr --addmode Virtual1 "1920x1080"
xrandr --output Virtual1 --mode "1920x1080"
Tags: Fedora xrandr

Pixel3a einrichten: SSHelper

20.05.2019 - Lesezeit: ~1 Minute

Mit dem Programm [SSHelper von Paul Lutus wird ein SSH-Server](https://arachnoid.com/android/SSHelper/ auf dem Pixel3a installiert. )

$ sudo nano /etc/hosts
192.168.80.151  pixel3a

Um den SSHelper ohne Passwort zu nutzen:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 pixel3a

Download der Fotos mittels rsync:

$ rsync -e 'ssh -p 2222' -av pixel3a:~/SDCard/DCIM/Camera/ /tmp/fotos/
Tags: ssh Pixel3a

Drupal 7 Hauptmenü immer aufgeklappt anzeigen

07.05.2019 - Lesezeit: ~1 Minute
  • Startseite - Verwaltung -Struktur - Menüs
  • Links auflisten
  • Link mit Untermenü bearbeiten
  • Als ausgeklappt anzeigen
  • Speichern
Tags: Drupal Drupal7

Pythonscript unter Ubuntu als Service starten

04.05.2019 - Lesezeit: 3 Minuten

Oldscool einen Eintrag in /etc/rc.local

oder als Service


Meinen Wetterserver möchte ich als Service starten, so dass ich Programmupdates ohne Reboot des BBB einspielen kann.

Ich benötige zwei Services

  • zum Speicher der über MQTT empfangen Daten: wnf_wetter_speicher.service
  • zum Anzeigen der Daten: wnf_wetter_http.service
$ sudo nano /etc/systemd/system/wnf_wetter_speicher.service

Da der Service unbedingt eine aktives Netzwerk braucht, wird dieser Service nach dem network-online.target gestartet.

[Unit]
Description=wnfWetterSpeichern
Wants=network-online.target
After=network-online.target syslog.target
[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_speicher.py
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
sudo nano /etc/systemd/system/wnf_wetter_http.service
[Unit]
Description=wnfWetterHttp
After=syslog.target
[Service]
Type=simple
User=wnf
Group=wnf
WorkingDirectory=/home/wnf/wnfwetter/
ExecStart=/home/wnf/wnfwetter/wnf_wetter_http.py
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable wnf_wetter_speicher.service
$ sudo systemctl enable wnf_wetter_http.service
$ sudo systemctl daemon-reload
$ sudo service wnf_wetter_speicher start
$ sudo service wnf_wetter_http start

Literatur

Tags: Kubuntu beaglebone service raspi