HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
1104
大富豪A壁紙かってに変更君を作りました。7解決


大富豪A

リンク

2012/11/4(Sun) 23:03:37|NO.50476

前回と同じく、なんとなく作ってみました。
「壁紙かってに変更君」このネーミングは結構苦労しました。

#define CLSID_ActiveDesktop "{75048700-EF1F-11D0-9888-006097DEACF9}" #define IID_IActiveDesktop "{F490EB00-1240-11D1-9888-006097DEACF9}" #usecom IActiveDesktop IID_IActiveDesktop CLSID_ActiveDesktop #comfunc IActiveDesktop_ApplyChanges 3 int #comfunc IActiveDesktop_SetWallpaper 5 wstr, int #comfunc IActiveDesktop_SetWallpaperOptions 7 int, int #enum WPSTYLE_CENTER = 0 #enum WPSTYLE_TILE #enum WPSTYLE_STRETCH onexit *exit newcom adesktop, CLSID_ActiveDesktop chdir ""//ここに、壁紙のあるフォルダーを指定してね。 dirlist list,"*.jpg":s=stat randomize notesel list repeat noteget get,rnd(s) filepath=get gosub *setwallpaper wait 1000 loop *setwallpaper IActiveDesktop_SetWallpaper adesktop, filepath WALLPAPEROPT = 8, WPSTYLE_CENTER IActiveDesktop_SetWallpaperOptions adesktop, varptr(WALLPAPEROPT) IActiveDesktop_ApplyChanges adesktop, 7 return *exit delcom adesktop end
あるサンプルを少し改造しただけですけど。



この記事に返信する


kanahiron

リンク

2012/11/5(Mon) 00:29:59|NO.50478

大富豪Aさんはこのスクリプトで動いたのでしょうか?

chdir ""//ここに、壁紙のあるフォルダーを指定してね。 dirlist list,"*.jpg":s=stat
でlistにはファイル名しか入りません(ディレクトリパスがない)

IActiveDesktop_SetWallpaper adesktop, filepath
でファイル名だけでは読み込めるはずがないと思います

以下アスペクト比保持リサイズ改良版

#define CLSID_ActiveDesktop "{75048700-EF1F-11D0-9888-006097DEACF9}" #define IID_IActiveDesktop "{F490EB00-1240-11D1-9888-006097DEACF9}" #usecom IActiveDesktop IID_IActiveDesktop CLSID_ActiveDesktop #comfunc IActiveDesktop_ApplyChanges 3 int #comfunc IActiveDesktop_SetWallpaper 5 wstr, int #comfunc IActiveDesktop_SetWallpaperOptions 7 int, int #enum WPSTYLE_CENTER = 0 #enum WPSTYLE_TILE #enum WPSTYLE_STRETCH newcom adesktop, CLSID_ActiveDesktop onexit *exit dirname = "D:\\Users\\kanahiron\\pictures"//ここに、壁紙のあるフォルダーを指定してね。 chdir dirname dirlist list,"*.jpg":s=stat randomize notesel list repeat noteget get,rnd(s) get = ""+dirname+ "\\"+ get buffer 1 picload get fx = ginfo(12) fy = ginfo(13) sx = ginfo(20) sy = ginfo(21) a1 = double(sx)/fx a2 = double(sy)/fy if a1-a2<=0{ buffer 2,sx,(a1*fy) pos 0,0 gzoom sx,(a1*fy),1,0,0,fx,fy,1 } else { buffer 2,(a2*fx),sy pos 0,0 gzoom (a2*fx),sy,1,0,0,fx,fy,1 } filename = ""+dirname+ "\\"+ "temp" bmpsave filename gosub *setwallpaper delete filename wait 1000 loop stop *setwallpaper IActiveDesktop_SetWallpaper adesktop,filename WALLPAPEROPT = 8, WPSTYLE_CENTER IActiveDesktop_SetWallpaperOptions adesktop, varptr(WALLPAPEROPT) IActiveDesktop_ApplyChanges adesktop, 7 return *exit delcom adesktop end



kanahiron

リンク

2012/11/5(Mon) 00:31:21|NO.50479

あ dirnameに入力したの消し忘れた
まぁいいや 個人情報じゃないしw



大富豪A

リンク

2012/11/5(Mon) 20:10:20|NO.50495

>kanahironさん
コメントありがとうございます。
僕の環境では、正しく実行されました。
chdirでとりあえずディレクトリの変更をしているのでたぶん大丈夫だと思いますが・・・。
バッファに画像を読み込ませなくても、
WALLPAPEROPT = 8, WPSTYLE_CENTER

の値を書き換えれば、キチンとリサイズされますよ。(たしか)



kanahiron

リンク

2012/11/6(Tue) 07:58:24|NO.50517

うーん
自分の環境ではディレクトリ移動してもサブルーチン先では読み込めません
あと、WPSTYLE_STRETCHも自分の環境ではアスペクト比無視されてしまって使えません
Windows 7 64bit



大富豪A

リンク

2012/11/6(Tue) 23:08:07|NO.50525

>kanahironさん
僕の環境はできるんですけど.....
Windows Vista しかも、セレロン M



kanahiron

リンク

2012/11/7(Wed) 01:03:16|NO.50527

なんとなく
WALLPAPEROPT = 8, 3

ってやったらアスペクト比保持で全画面になりました 相変わらずフルパスじゃないと読み込めませんが



mamo

リンク

2012/11/7(Wed) 03:01:56|NO.50528

フルパスじゃないと読み込みませんでした。
Windows 7 32bit(OS入れ直して一般的な環境が整ったばかりの綺麗な状態です)

>僕の環境はできるんですけど.....
自分専用ならそれでいい。



ONION software Copyright 1997-2018(c) All rights reserved.