api - Skift skærmopløsning fra Windows Service (Windows 7)

Indlæg af Hanne Mølgaard Plasc

Problem



(Hej alle. Jeg er meget ny til Windows programmering, så jeg undskylder på forhånd, hvis det allerede er blevet spurgt, og jeg ved lige ikke hvad jeg skal søge efter, men dette problem har kørt mig vildt, og jeg ved, at nogen kunne antagelig nok besvare dette meget nemt.)


Mit firma har en applikation, der kører som en tjeneste i Windows 7. Jeg har fået til opgave at skrive kode for at ændre visningsindstillinger, men det kan jeg tilsyneladende ikke gøre fra en systemtjeneste. Jeg har lavet en lille eksekverbar, der ændrer farvedybden til 8bpp i omkring 5-10 linjer kode, men når jeg placerer denne kode i min ansøgning, returnerer den succes, men det lykkes faktisk ikke (intet ændrer).


Uden en kommende viden om, hvordan Windows programmering virker, har jeg formået at prøve en million forskellige ting for at få det til at fungere, men uden nytte. Kan nogen hjælpe mig med at finde hvad jeg skal gøre for at gøre denne kode funktion?

Bedste reference


På Vista og opefter udføres tjenester i en anden session (session 0) og er isoleret fra det interaktive skrivebord (er). Det betyder, at kode, du kører fra tjenesten, simpelthen ikke kan foretage de ønskede ændringer. Den indlysende konklusion er, at du skal køre kode i det interaktive skrivebord. [1]


Nu kan du gøre det, men det er ikke ligefrem nemt at opnå. Det du skal gøre er at arrangere din tjeneste for at starte en proces, der kører på det interaktive skrivebord: Start en interaktiv proces fra Windows Service i Windows Vista og senere . Denne proces, snarere end tjenesten, er, hvad der skal foretages. [2]


Selv om det er muligt at opnå det ønskede, mener jeg, at du bør betragte de vanskeligheder, der er involveret som et signal for at undersøge, om din foreslåede tilgang er den bedste løsning på uanset dit underliggende problem.