相关疑难解决方法(0)

什么实际处理Windows壁纸的绘图?

我正在尝试一个项目,我可以使用opengl/directx或GDI为windows 7壁纸设置动画.我调查了Windows桌面窗口是如何布局的,我想出了整体

"Progman" - >"SHELLDLL_DefView" - >"SysListView32"

层次结构.我尝试连接SysListView32的WndProc,并尝试使用注入的c#dll搞乱消息,这样当我使用控制面板 - >个性化菜单强制更改时,我可以阻止桌面绘制壁纸.这些都没有实际阻止壁纸更新,所以我认为explorer.exe实际上并不处理绘制壁纸.

为了确认这一点,我杀死了explorer.exe并设置了一个小的c#程序,它将10秒计时器上的壁纸改为随机的.正如我所料,壁纸不断变化,让我相信explorer.exe实际上并没有处理壁纸的绘制!

不幸的是,这是我完全迷失的地方.我不知道还有什么负责绘制壁纸,以及我如何能够接管它的绘图以便我可以处理绘图.我已经尝试谷歌这几天了,几乎没有进展.我希望有人能指引我朝着正确的方向前进.

c# windows opengl drawing windows-7

36
推荐指数
1
解决办法
1565
查看次数

如何以编程方式更改Windows桌面墙纸?

我希望使用C#为Windows XP设置壁纸.我已经开发了代码,因此它在Windows 7中完美运行,但显然它与XP不同.我将壁纸添加为资源,将其编译操作设置为内容并始终复制.奇怪的是,它在桌面属性对话框中设置了正确的墙纸名称.但是,壁纸未设置.我的代码看起来像这样:

public sealed class Wallpaper
{
    Wallpaper() { }

    const int SPI_SETDESKWALLPAPER = 20;
    const int SPIF_UPDATEINIFILE = 0x01;
    const int SPIF_SENDWININICHANGE = 0x02;

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

    public enum Style : int
    {
        Tiled,
        Centered,
        Stretched
    }

    public static void Set(string wpaper, Style style)
    {
        RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
        if (style == Style.Stretched)
        {
            key.SetValue(@"WallpaperStyle", 2.ToString());
            key.SetValue(@"TileWallpaper", 0.ToString());
        }

        if (style == Style.Centered)
        { …
Run Code Online (Sandbox Code Playgroud)

c# settings desktop windows-xp wallpaper

12
推荐指数
2
解决办法
2万
查看次数

幻灯片壁纸Windows 7

如何以编程方式设置Windows 7 Wallpaper幻灯片?

设置普通壁纸

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
        private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);
        private static UInt32 SPI_SETDESKWALLPAPER = 20;
        private static UInt32 SPIF_UPDATEINIFILE = 0x1;
  public void SetImage(string filename)
        {
            SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, filename, SPIF_UPDATEINIFILE);
        }
Run Code Online (Sandbox Code Playgroud)

我到现在才发现:

幻灯片中有一个ini文件

C:\用户\ CurrentUser \应用程序数据\漫游\微软\的Windows \主题\

幻灯片放映期间,壁纸必须位于以下文件夹中:

C:\用户\ CurrentUser \应用程序数据\漫游\微软\的Windows \主题\ TranscodedWallpaper.jpg

(在幻灯片放映期间文件自动更改)

c# windows wallpaper windows-7 c#-4.0

8
推荐指数
1
解决办法
1763
查看次数

在程序关闭时使用批处理文件更改壁纸.可能?

我正在尝试创建一个批处理文件,该程序将在Windows 7上关闭程序时更改我的背景.我尝试使用它,但它不起作用,即使我注销并重新登录:

@echo off
reg /add HKCU\Control Panel\Desktop\WallPaper /v wallpaper /t REG_SZ /d c:\images\wallpaper.bmp
Run Code Online (Sandbox Code Playgroud)

background batch-file wallpaper windows-7

7
推荐指数
1
解决办法
7万
查看次数

Windows 10 中的壁纸更改

此代码适用于 Windows 7,但不适用于 Windows 10。而不是更改壁纸只是黑屏

[DllImport("User32", CharSet = CharSet.Auto)]
    public static extern int SystemParametersInfo(int uiAction, int uiParam,
        string pvParam, uint fWinIni);
    static void Main(string[] args)
    {
        SystemParametersInfo(0x0014, 0, "Image.jpg", 0x0001);
    }
Run Code Online (Sandbox Code Playgroud)

c# wallpaper windows-10

0
推荐指数
1
解决办法
3005
查看次数