none
更換桌圖的指令會吃掉變數? RRS feed

  • 問題

  • 我使用 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TextBox5.Text, SPIF_UPDATEINIFILE) 來變更圖片

    其中 TextBox5.Text 是圖片的路徑

    假設內容是

    c:\aaaaaaaaaaaaa\bbbbbbbbbbbbbbbbbbbb\ccccccccccccccccc\1.jpg

    第一次執行 SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, TextBox5.Text, SPIF_UPDATEINIFILE) 完後

    C以後不見了,再執行一次,B以後又不見了,剩下 c:\aaaaaaaa

    請問是哪裡出問題了?

    PS:我使用 TextBox5.Text 或是 變數字串都會這樣!

     

    更換桌圖程式碼如下

        Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
        Private Const SPI_SETDESKWALLPAPER As Integer = 20
        Private Const SPIF_UPDATEINIFILE As Integer = 1

        Function 桌圖顯示方式()
            '設定桌圖顯示方式
            Dim TileMode As String
            Dim StyleMode As String
            If RadioButton1.Checked Then
                TileMode = "0"
                StyleMode = "0"
            ElseIf RadioButton2.Checked Then
                TileMode = "1"
                StyleMode = "0"
            Else
                TileMode = "0"
                StyleMode = "2"
            End If
            Dim key As RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
            key.SetValue("WallpaperStyle", StyleMode)
            key.SetValue("TileWallpaper", TileMode)
            key.Flush()
            key.Close()
            If TextBox5.Text <> "" Then
                           SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,  TextBox5.Text, SPIF_UPDATEINIFILE)

            End If
        End Function

    PS:我用的軟體 VB 2010,系統 WINDOWS 7

    • 已編輯 2011年3月28日 上午 02:19
    2011年3月28日 上午 01:57

解答

所有回覆