Program pro změnu tapety plochy v BATCH

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod vlasta.03 27. 2. 2019 17:39

Zdravím, chtěl bych vytvořit jednoduchý program, který by po spuštění kromě dalších operací změnil i tapetu. Snažil jsem se najít na internetu návody, ale nikdy mi to nefungovalo. Proto vás prosím, kdyby jste byli tak hodní a vložili mi sem celý kód, popřípadě nějaké popisky k tomu. Předem děkuji :-)

PS Ty kódy co jsem si již našel změní tapetu až po restartu, potřeboval bych instantní změnu tapety
vlasta.03
Kolemjdoucí

Odeslat příspěvekod JanFiala 28. 2. 2019 09:20

Pro instantní zmenu tapety potrebujes dat systemu na vedomi, ze se tapeta zmenila.
Zavolej API funkci SPI_SETDESKWALLPAPER()
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod Nargon 28. 2. 2019 14:23

Jde to například pomocí poweshellu:
Kód: Vybrat vše
$setwallpapersrc = @"
using System.Runtime.InteropServices;
public class wallpaper
{
  public const int SetDesktopWallpaper = 20;
  public const int UpdateIniFile = 0x01;
  public const int SendWinIniChange = 0x02;
 
  [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
  private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
 
  public static void SetWallpaper ( string path )
  {
    SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
  }
}
"@

Add-Type -TypeDefinition $setwallpapersrc
[wallpaper]::SetWallpaper("D:\pozadi.png")

Ikdyž tohle je defakto C# kód, který ten powershell pro sebe spustí. Ale funguje to. Alespoň na windows 10 to funguje.
Desktop: Ryzen 7 1800X (3.95GHz, 1.35V), Asus Crosshair VI Hero, 16GB DDR4 Ram (3200MHz), 128GB SSD + 3TB HDD, Nvidia GTX 1080
Notebook: Asus UL50VT 15.6" (SU7300@1.7GHz, 4GB ram, 500GB HDD, Intel GMA 4500MHD + nVidia G210M, dlouha vydrz cca 7+ hod)
Nargon
Moderátor

Odeslat příspěvekod vlasta.03 2. 3. 2019 19:10

JanFiala píše:Pro instantní zmenu tapety potrebujes dat systemu na vedomi, ze se tapeta zmenila.
Zavolej API funkci SPI_SETDESKWALLPAPER()

Dobře, a to udělám jak?
vlasta.03
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků