none
SystemParametersInfo funktionert nicht mit Dienst RRS feed

  • Frage

  •  

    Hallo,

     

    kann mir vielleicht jemand weiterhelfen?

     

    Ich habe folgendes Problem:

     

    Ich habe einen kleinen Dienst gemacht, der beim Hochfahren das Hintergrundbild wechseln soll. Das ganze habe ich mit

    SystemParametersInfo realisiert.

    Allerdings wird SystemParametersInfo nicht ausgeführt, wenn es in der OnStart-Methode steht.....Es passiert einfach gar nichts.....  Weiss jemand, warum SystemParametersInfo in Diensten nicht funktioniert?

     

    Hier noch der Code:

     

    Code Snippet

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Diagnostics;

    using System.ServiceProcess;

    using System.Text;

    using System.Runtime.InteropServices;

    using System.IO;

    using Microsoft.Win32;

     

    namespace ServiceTest2

    {

    public class ServiceTest2 : ServiceBase

    {

    public const string MyServiceName = "ServiceTest2";

    public ServiceTest2()

    {

    InitializeComponent();

    }

    private void InitializeComponent()

    {

    this.ServiceName = MyServiceName;

    }

    protected override void Dispose(bool disposing)

    {

     

    base.Dispose(disposing);

    }

    const int SPI_SETDESKWALLPAPER = 20;

    const int SPIF_UPDATEINIFILE = 0x01;

    const int SPIF_SENDWININICHANGE = 0x02;

    const string pat1 = @"C:\Bilder\hg\bmp\milkyway06_hst_big.bmp";

    [DllImport("user32.dll", CharSet = CharSet.Auto)]

     

     

    static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

    }

    protected override void OnStart(string[] args)

    {

    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, pat1, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

     

    }

     

    protected override void OnStop()

    {

    }

    }

    }

     

     

    Mittwoch, 4. Juni 2008 15:39

Alle Antworten

  • Das dürfte höchstwahrscheinlich daran liegen, das Dienste normalerweise unter SYSTEM laufen, oder hast Du den Dienst explizit mit dem User-Konto gestartet?

    Schreib das ganze als Konsolen-Programm, packs in Autostart mit der Option minimiert und es müßte funktionieren.

     

    Gruß

    Syntax76

    Sonntag, 24. August 2008 11:00
  • Hab das Problem mittlerweile gelöst, es lag an dem netten kleinen Haken in den Diensteigenschaften "Datenaustausch mit Desktop zulassen".

     

    Aber danke, dass überhaupt mal jemand (nach Monaten) auf meine Frage reagiert hat ;-)

    Montag, 25. August 2008 18:03