API関数のSystemParametersInfoは、デスクトップ項目関連のほか、 ユーザー補助、電力管理等、コントロールパネルで設定できる項目の設定と取得をするものであり、 取得及び設定のできる項目総数が150ほどあるので、このページだけで全てを紹介できません。 今回は「設定されている壁紙ファイルを変更してみる」と言うことで、 壁紙の設定に必要なSystemParametersInfoの設定パラメータのみを抜粋すると次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
ll_libload user, "user32.dll" ll_getproc SystemParametersInfo, "SystemParametersInfoA", user #module #deffunc spi int, int, int, int mref uiaction, 0 : mref uiparam, 1 : mref pvparam, 2 : mref fwinini, 3 prm = uiaction, uiparam, pvparam, fwinini ll_callfunc prm, 4, SystemParametersInfo@ return #deffunc setwallpaper str mref s, 32 ll_getptr s : ll_ret p spi 0x0014, 0, p, 0 // SPI_SETDESKWALLPAPER return #global gsel 0, -1 dialog "bmp", 16, "変更する壁紙" if stat { setwallpaper refstr }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#uselib "user32.dll" #func global SystemParametersInfo "SystemParametersInfoA" int, int, var, int #module #deffunc setwallpaper str file, local s s = file SystemParametersInfo 0x0014, 0, s // SPI_SETDESKWALLPAPER return #global gsel 0, -1 dialog "bmp", 16, "変更する壁紙" if stat { setwallpaper refstr } end