物語

私はいつも天気が外にあることを知りたいと思っていました。その間、さまざまな天気ウィジェットが使用されていました。ある日、友人のアドバイスで
このサイトに出会いました。 このサイトには独自のハイライトがありました。それは、天気予報がアート絵画の背景に表示されていたという事実で構成されていました。 これらすべての魅力が私を無関心なままにせず、サイトをブックマークしました。 時間がたつにつれて、サイトはブックマークからタブ付きサムネイル(スピードダイヤル)に移行しました。これは定期的に更新されますが、まだ何かが欠落しています。 そして、最終的に、サイトのスクリーンショットを撮り、デスクトップに壁紙として表示するというアイデアを得ました。
目的
実装にできるだけ「リソース」を費やさずにアイデアを実装し、スクリーンショットの作成から壁紙の置き換えまでのプロセスを気付かないようにします。
使用済みツール
- PhantomJS -Webリソースからスクリーンショットを取得するため
- NConvert-画像をさまざまな形式に変換するため
- 壁紙 -Windows Vistaおよび7で壁紙を更新するため
- VBScript-必要なすべてのコマンドを実行します
- Windowsタスクスケジューラ-定期的に壁紙を更新するため
実装
まず、
PhantomJS 、
NConvert 、
Wallpaperの最新バージョンをダウンロードします。
残念ながら、ファイル「wallpaper.exe」を含むアーカイブは利用できないため、記事のソースを含むアーカイブからダウンロードできます。リンクは最後に公開されます。執筆時点では、PhantomJS 1.3.0 Windows(静的ビルド)およびNConvert v5.91が使用されていました。 次に、「meteo_wall」フォルダーを作成し、その中に「tools」サブフォルダーを作成します。 このサブフォルダーに移動し、「PhantomJS」アーカイブの内容を同じ名前のフォルダーに解凍します。 また、「ツール」フォルダーにNConvertとwallpaper.exeを配置します。 次に、「rasterize.js」ファイルをexamplesフォルダーからコピーして、「tools」フォルダーに配置する必要があります。 スクリーンショットの必要な拡張子を指定できるように、「rasterize.js」ファイルを少し修正します。
var page = new WebPage(), address, output, size; if (phantom.args.length < 2 || phantom.args.length > 3) { console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat]'); console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"'); phantom.exit(); } else { address = phantom.args[0]; output = phantom.args[1]; page.viewportSize = { width: 600, height: 600 }; if (phantom.args.length === 3 && phantom.args[1].substr(-4) === ".pdf") { size = phantom.args[2].split('*'); page.paperSize = size.length === 2 ? { width: size[0], height: size[1], border: '0px' } : { format: phantom.args[2], orientation: 'portrait', border: '1cm' }; } else if(phantom.args.length === 3){ size = phantom.args[2].split('*'); page.viewportSize = { width: size[0], height: size[1] }; }; page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 200); } }); }
その後、VBScriptの作成を開始できます。 「tools」フォルダーに「wallpaper.vbs」ファイルを作成します。まず、必要なファイルを説明し、重要な変数を入力します。
Dim WshShell Set WshShell = WScript.CreateObject("Wscript.Shell") Dim url, history, logon
率直に言って、その前はVBScriptでコードを書いていませんでした。 スクリーンショットを自動的に取得するには、画面の解像度を知る必要があります。
次:
注:最後の行の最後で、パラメーター0, True
を使用して、コードがバックグラウンドで実行され、スクリプトで説明されている追加のコマンドがこのコードの実行を待機していることを確認します。ご覧のとおり、スクリーンショットはbmp形式で保存されています。これは、VistaのWindowsのバージョンが異なる形式の壁紙を受け入れないためです。 次に、OSバージョンを確認します。
Dim OSType OSType = Left(Trim(WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")),1)
スクリプトは可能な限りユニバーサルにする必要がありますが、OSの異なるバージョンを考慮する必要があるため、最初にWindows Vistaおよび7のコードについて説明します。
If OSType>5 Then
このコードでは、Windowsの要件が適用される画像(ようこそ画面の画像)のログオンに変更があることに気付くかもしれません。 これらの要件の本質は、ファイルを256 Kbより大きくすることはできないため、許容されるしきい値の制限に達するまで画像の品質を低下させるサイクルが開始されることです。
次は、Windowsの下位バージョンのコードについて説明します。
Else
スクリプトの最後の「添えもの」:
obj.DeleteFile bmpname, True
これは、スクリプトが書き込まれる場所です。 たとえば、5分ごとの自動スクリプト実行は、組み込みのWindowsタスクスケジューラを使用して実行されます。 これを行うには、新しいタスクを作成し、起動するプログラムとして「wallpaper.vbs」スクリプトへのパスを指定します。また、毎日選択し、トリガーが機能するようにプロパティで5分ごとに繰り返すことを忘れないでください。
まとめ
スクリプトは、Windows 7を搭載した2台のコンピューター、Windows 2003 Serverを搭載したコンピューターとWindows XPを搭載したコンピューターでテストされました。 Windows XPのウェルカム画面で変更を確認するには、「コントロールパネル->ユーザーアカウント->ユーザーログインの変更」で「ウェルカムページを使用」ボックスのチェックを外すか、スクリプトソースの100行のコメントを外します。 すべての追加ソフトウェアを含むスクリプトのソースコードは、
ここから取得でき
ます 。
更新情報
Windows 7を搭載した別のコンピューターでスクリプトをテストする機会がありましたが、正常に起動できませんでした。 問題は、ウェルカム画面の画像が保存されているファイルへのパスがないというエラーがあったことです。 経験的に、次のパス
"%windir%\System32\oobe\info\backgrounds\"
を手動で作成するか、ユーザーアカウント制御(UAC)設定を最低に変更し、その後コンピューターを再起動してスクリプトを更新するソリューションが見つかりました
こちらからダウンロードでき
ます 。