デスクトップの模様を設定          <TOP>


WriteProfileString WIN.INIの指定のセクションの内容を変更
SystemParametersInfo システム全体に関するパラメータを取得・設定
 

デスクトップのパターンを10回ランダムに設定し、最後に「子犬」風パターンを設定しています。

文字列 = "64 192 200 120 120 72 0 0" とは

2進数で表すと図のパターンになります。

'================================================================
'= デスクトップの模様を設定
'=     (SETDESKPATTERN.bas)
'================================================================
#include "Windows.bi"

' WIN.INIの指定のセクションの内容を変更
Declare Function Api_WriteProfileString& Lib "Kernel32" Alias "WriteProfileStringA" (ByVal lpszSection$, ByVal lpszKeyName$, ByVal lpszString$)

' システム全体に関するパラメータを取得・設定
Declare Function Api_SystemParametersInfo& Lib "user32" Alias "SystemParametersInfoA" (ByVal uiAction&, ByVal uiParam&, pvParam As Any, ByVal fWinIni&)

#define SPI_SETDESKPATTERN 21           '
#define SPIF_SENDWININICHANGE &H2       '全てのアプリケーションに通知して更新
#define SPIF_UPDATEINIFILE &H1          'ユーザープロファイルの更新を指定

Var Shared Button1 As Object

Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14

'================================================================
'=
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var SectionName As String
    Var KeyName As String
    Var WriteString As String
    Var i As Integer
    Var Ret As Long

    'セクション名を指定
    SectionName = "Desktop"

    'キー名を指定
    KeyName = "Pattern"

    '書き込む文字列を指定
    For i = 1 To 10
        WriteString = ""
        WriteString = WriteString & Trim$(Str$(Rnd(1))) & " " 
        WriteString = WriteString & Trim$(Str$(Rnd(1))) & " " 
        WriteString = WriteString & Trim$(Str$(Rnd(1))) & " " 
        WriteString = WriteString & Trim$(Str$(Rnd(1))) & " " 
        WriteString = WriteString & "0 0" 

        Gosub *SetPattern
        Wait 50
    Next

    '子犬のパターン文字列
    WriteString = "64 192 200 120 120 72 0 0"
    Gosub *SetPattern
    Exit Sub

*SetPattern
    '指定セクションに文字列を書き込み
    Ret = Api_WriteProfileString(SectionName, KeyName, WriteString)

    'デスクトップの模様を変更
    Ret = Api_SystemParametersInfo(SPI_SETDESKPATTERN, 0, ByVal CLng(0), SPIF_SENDCHANGE)
    Return
End Sub

'================================================================
'=
'================================================================
Declare Sub Button2_on edecl ()
Sub Button2_on()
    Var SectionName As String
    Var KeyName As String
    Var WriteString As String
    Var Ret As Long

    'セクション名を指定
    SectionName = "Desktop"

    'キー名を指定
    KeyName = "Pattern"

    'パターン文字列(クリア)
    WriteString = ""

    '指定セクションに文字列を書き込み
    Ret = Api_WriteProfileString(SectionName, KeyName, WriteString)

    'デスクトップの模様を変更
    Ret = Api_SystemParametersInfo(SPI_SETDESKPATTERN, 0, ByVal CLng(0), SPIF_SENDCHANGE)
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End