やっぱり壁紙が好き.NET
Version 0.1.0.0

Powered by Myna

もくじ


はじめに

せっかくお気に入りの壁紙を設定しても、 ウィンドウを開くと見えなくなってしまうのって、 なんだかちょっぴり寂しくありません? という訳で、壁紙を半透明にして壁紙がいつでも見られるようにしてみました。 嗚呼、私ってやっぱり壁紙が好き


ファイルの確認

このプログラムが最新バージョンであるかを確認してください。 最新バージョンで動作が改善されている場合もありますので、 必ず最新バージョンを入手してください。 最新バージョンは連絡先に書いてあるWebページから入手することができます。 最新バージョンを入手したら、以下のファイルがあることを確認してください。


インストール

インストーラーはありません。(すいません。どうにかしたいと思っているのですが...) アーカイブを適当なフォルダーに展開してください。 ご使用のWindowsが64bit、32bitに関わらず、全てのファイルが必要です。 まずは、アプリケーションの終了方法だけでもお読みください。

このアプリケーションは.NET Framework4.5.1で作成されています。 そのため.NET Framework4.5.1以降のバージョンが必要となります。 インストールされていないと本アプリケーションは動作しません。 先にWindows Updateなどからインストールしてください。 Windows7は、標準状態でインストールされていませんので、 更新していない方は、一度Windows Updateを確認をしてみてください。 また、本アプリケーションはWindows7 64bitで動作確認しています。 それ以外のバージョンのOSでも.NET Framework4.5.1以降がインストールされていれば動作すると思いますが、 未確認となっております。 (Windows8以降については、どうやら動作しないよう? Windows8の開発環境がないため、詳細は不明です。) ですので動作の報告は(動作しないという報告も)大歓迎です。 その場合は、OSのバージョン、64bitか32bitかなど詳しい動作環境も添えていただけると助かります。


アンインストール

アンインストーラーはありません。 (インストーラーがないので、当然アンインストーラーもありません。再び、すいません...) 手動でファイルの削除などをすることとなります。 以下の手順に従ってアンインストールをしてください。

設定ファイルの削除

設定ファイルは、 「C:\Users\[User Name]\AppData\Local\YapWall\user.config」となりますが、 YapWallフォルダー (C:\Users\[User Name]\AppData\Local\YapWall) ごと削除してください。

アプリケーションの削除

インストール時に展開したファイルを削除してください。 削除するファイルは、ファイルの確認を参考にしてください。 インストール時に本アプリケーション用にフォルダーを作成した場合は、 そのフォルダーの削除もお忘れなく。 また、本アプリケーションをスタートアップに登録した場合は、 そのショートカットファイルも削除してください。


操作説明

実行と終了

実行すると壁紙が半透明で表示され、タスクトレイにアイコンが表示されます。 このアイコンの上で右クリックするとポップアップメニューが表示されます。 このポップアップメニューから「終了」を選択することで、 アプリケーションを終了することができます。

ポップアップメニュー

設定
設定画面を表示します。 タスクトレイのアイコンをダブルクリックしても設定画面を表示することができます。
ヘルプ
本ドキュメントファイルを表示します。
バージョン情報
バージョン情報を表示します。
終了
アプリケーションを終了します。

設定画面

スクリーンショット

透明度
壁紙の透明度0〜90%で指定します。 0%に近づくほど薄く、 90%に近づくほど濃く壁紙が表示されます。 100%にすると壁紙でウィンドウが全く見えなくなってしまうため、 90%までに制限してあります。 また0%の指定ができるようになっていますが、 0%は通常と同じ状態になるため指定する意味はありません。
表示モード
常に手前
壁紙が前面(手前)に表示されます。 いつも壁紙を見ていたい方はこちらを選択してください。
アクティブウィンドウを除く
アクティブウィンドウ以外に壁紙が表示されます。 さすがに作業中のウィンドウ(アクティブウィンドウ)に壁紙が表示されるのは見にくい、 という方はこちらを選択してください。
ホットキー
指定したキーの組み合わせで壁紙表示のON/OFFができるようになります。 ホットキーを使用したい場合は、 まず「ホットキーを使用する」にチェックを入れ、 キーの組み合わせを選択してください。 以下の組み合わせから選択することができます。
キーの組み合わせ
修飾キー キー
Ctrl 09AZF1F24
Alt
Shift
Ctrl+Alt
Ctrl+Shift
Alt+Shift
Ctrl+Alt+Shift
「OK」ボタン
設定内容を保存して、設定画面を閉じます。
「キャンセル」ボタン
設定内容を破棄して、設定画面を閉じます。
「適用」ボタン
設定内容を保存します。


このアプリケーションは...

このアプリケーションはフリーソフトウェアです。 著作権は放棄しませんが、ご自由に使ってもらって結構です。 ただし完全に無保証です。 予期しない動作で、貴方の大切なデータを失ったとしても、 作者には何の責任もありません。 この点に納得できない場合は、 本アプリケーションを使用することができません

転載や、Webサイトへのリンク時の連絡等は基本的には必要ありません。 (ただし、アーカイブされたファイルの構成は変えないでください。) が、連絡してもらえれば、とてもうれしいです。


履歴

0.1.0.0
  • 初回バージョン公開

用語集

ローカルApplication Dataフォルダー
OSのバージョンによりフォルダー名に違いがありますが、 Windows 7 64bitの場合は、 「C:\Users\[User Name]\AppData\Local」になります。 ([User Name]の部分にはログインしているユーザー名が入ります。) また、このフォルダーは隠しフォルダーになっているため、 表示させるには、 フォルダーオプションの詳細設定にある 「隠しファイル、隠しフォルダーおよび隠しドライブを表示する」 を選択する必要があります。
WOW64
Windows 32bit On Windows 64bitの略。 Windows 64bit上で32bitプロセスを動作させる仕組み。


おまけ

ここからちょっと技術的な話になるので、 興味のない方は読み飛ばしてもらって結構です。

ファイルの確認を見て、 このファイル構成に疑問を持たれた方はいないでしょうか?(なぜ64bit、32bit両方のファイルが必要なのか?とか) なぜこのようなファイル構成になっているのでしょう? それは、このアプリケーションが、 グローバルフック(SetWindowsHookEx)という機能を使用しているからです。 グローバルフックを使用したアプリケーションは、 Visual Basic Ver.6時代から作成していましたので、 それまでと同じように作成しました。 しかし、動作チェックをしてみると、どうも動きがおかしい... 原因を調べてみると、32bitのアプリケーションが起動しているときに、おかしな動きをします。 (開発環境のOSは、Windows7 64bitを使用しています。) 結論から先に言うと、 64bitで作成されたグローバルフックを使用したアプリケーションは、 64bitプロセスしかフックできない、というものでした。 現在、Windowsには64bitと32bitの両方が存在します。 アプリケーションも64bitや32bitが存在します。 Windowsもアプリケーションも完全に64bitに移行してしまえば、 上記の問題はなくなりますが、 現状のWindows 64bitでは、64bitと32bitのアプリケーションが混在した状態です。 この状態で、グローバルフックを使用したアプリケーションを正しく動作させるにはどうしたらよいのでしょう。

64bitで作成されたグローバルフックを使用したアプリケーションは、 64bitプロセスしかフックできない。」 ということは、 「32bitで作成されたグローバルフックを使用したアプリケーションは、 32bitプロセスしかフックできない。」 ということでもあります。 つまりWindows 64bitでは、 64bitで作成されたグローバルフックを使用したアプリケーションと、 32bitで作成されたグローバルフックを使用したアプリケーションの両方を動作させればいいということになります。 これで一応の対応できた、ということになるのですが、 これでは全く同じ処理をするアプリケーションが2つ起動していることになり、 個人的には、あまり上手い方法とは言えないように感じます。

そこで今回のアプリケーションでは、 グローバルフックを使用するアプリケーション(以下、サブアプリケーション)側には必要最低限の機能だけを残して、 実際の処理は、本体アプリケーション側で行うようにしました。 本体側へはメッセージ送信(PostMessage)を使用して処理のタイミングを伝えます。 送信先は、本体アプリケーションがサブアプリケーションを起動するときにコマンドラインとして、 本体アプリケーションのウィンドウハンドル(HWND)を渡すようにしました。 しかし、ここにも罠が!! 64bitから32bit、または32bitから64bitには、メッセージ送信ができない(届かない)のです。 つまりWindows 64bitには、 64bit用のメッセージキューと32bit用のメッセージキューが別々に存在しているのではないでしょうか? (これが64bit、32bit間でグローバルフックできない原因のようにも思われます。) これに関しては解決策があり、 RegisterWindowMessageで登録されたメッセージであれば64bit、32bit間で送信することができます。 (なぜ送信できるのかの理由は分かりませんが、内部で特別扱いしているのでしょうか?)

ここまではWindows 64bitに対しての話でしたが、Windows 32bitにも対応するため、 本体アプリケーションは32bitで作成します。 動作をまとめますと、
本体アプリケーション(32bit) →32bitサブアプリケーション →32bitサブアプリケーション用DLL
Windowsが64bitの場合のみ →64bitサブアプリケーション →64bitサブアプリケーション用DLL
となります。 このときアプリケーションが動作しているWindowsが64bitか32bitなのかを調べる必要があります。 それにはアプリケーションがWOW64上で動作しているかどうかを判断(IsWow64Process)します。 アプリケーションがWOW64上で動作していれば、 そのWindowsは64bitということになります。

以上が今回のファイル構成の理由となります。珍しく技術的なことを書いてみました。参考になれば...

最後に


連絡先

どんな些細なことでも構いません。
Site
http://www3.to/myna/
Twitter
https://twitter.com/myna_nazo
まで、お気軽にどうぞ!


リンクしてください

リンク用HTMLです。 もし、あなたがこのアプリケーションを気に入られて、 ご自分のサイト、blogなどをお持ちでしたら、ページのどこかに張り付けてください。


--cut here
<a href="http://www3.to/myna/">World Wide Myna</a>
--cut here

on 2015/10/27(Tue)