せっかくお気に入りの壁紙を設定しても、 ウィンドウを開くと見えなくなってしまうのって、 なんだかちょっぴり寂しくありません? という訳で、壁紙を半透明にして壁紙がいつでも見られるようにしてみました。 嗚呼、私ってやっぱり壁紙が好き。
このプログラムが最新バージョンであるかを確認してください。 最新バージョンで動作が改善されている場合もありますので、 必ず最新バージョンを入手してください。 最新バージョンは連絡先に書いてあるWebページから入手することができます。 最新バージョンを入手したら、以下のファイルがあることを確認してください。
YapWall.exe
... やっぱり壁紙が好き.NETアプリケーション
ywSub32.exe
... 32bitサブアプリケーション
ywHook32.dll
... 32bitサブアプリケーション用DLL
ywSub64.exe
... 64bitサブアプリケーション
ywHook64.dll
... 64bitサブアプリケーション用DLL
YAPWALL.HTM
... 本ドキュメントファイル
YAPWSS.PNG
... スクリーンショット
インストーラーはありません。(すいません。どうにかしたいと思っているのですが...) アーカイブを適当なフォルダーに展開してください。 ご使用の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
)
ごと削除してください。
インストール時に展開したファイルを削除してください。 削除するファイルは、ファイルの確認を参考にしてください。 インストール時に本アプリケーション用にフォルダーを作成した場合は、 そのフォルダーの削除もお忘れなく。 また、本アプリケーションをスタートアップに登録した場合は、 そのショートカットファイルも削除してください。
実行すると壁紙が半透明で表示され、タスクトレイにアイコンが表示されます。 このアイコンの上で右クリックするとポップアップメニューが表示されます。 このポップアップメニューから「終了」を選択することで、 アプリケーションを終了することができます。
修飾キー | キー |
---|---|
Ctrl | 0〜9、A〜Z、F1〜F24 |
Alt | |
Shift | |
Ctrl+Alt | |
Ctrl+Shift | |
Alt+Shift | |
Ctrl+Alt+Shift |
このアプリケーションはフリーソフトウェアです。 著作権は放棄しませんが、ご自由に使ってもらって結構です。 ただし完全に無保証です。 予期しない動作で、貴方の大切なデータを失ったとしても、 作者には何の責任もありません。 この点に納得できない場合は、 本アプリケーションを使用することができません。
転載や、Webサイトへのリンク時の連絡等は基本的には必要ありません。 (ただし、アーカイブされたファイルの構成は変えないでください。) が、連絡してもらえれば、とてもうれしいです。
0.1.0.0 |
|
C:\Users\[User Name]\AppData\Local
」になります。
([User Name]の部分にはログインしているユーザー名が入ります。)
また、このフォルダーは隠しフォルダーになっているため、
表示させるには、
フォルダーオプションの詳細設定にある
「隠しファイル、隠しフォルダーおよび隠しドライブを表示する」
を選択する必要があります。
ここからちょっと技術的な話になるので、 興味のない方は読み飛ばしてもらって結構です。
ファイルの確認を見て、
このファイル構成に疑問を持たれた方はいないでしょうか?(なぜ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 |
IsWow64Process
)します。
アプリケーションがWOW64上で動作していれば、
そのWindowsは64bitということになります。
以上が今回のファイル構成の理由となります。珍しく技術的なことを書いてみました。参考になれば...
WM_SETTINGCHANGE
)が届かないのです。
(何でやWindows7...(;_;))
なので定期的に壁紙の設定をチェックするようにプログラムしていたのですが、
SPY++で探っていたところ、デスクトップ自体(のみ)には、メッセージが届いていました。
しょうがないので、このメッセージもフックする羽目に...
SUKEWIN.TXT
)をご覧ください。
せっかくの壁紙もウィンドウをドンドン開いたら見えなくなる。妙なノリなのは勘弁していただきたいが、駄目だこいつ...全く変わってねぇ... どうしてこんなにも壁紙に執着しているのか?さすがにこれは怖いレベル。 やっぱり壁紙が好きな・の・か?...
当たり前だけど、それって「意味ないじゃ〜ん」(←ちょっと古い)
壁紙が透けて見えたらいいと思いませんか?
どんな些細なことでも構いません。
Site | http://www3.to/myna/ |
---|---|
https://twitter.com/myna_nazo |
リンク用HTMLです。 もし、あなたがこのアプリケーションを気に入られて、 ご自分のサイト、blogなどをお持ちでしたら、ページのどこかに張り付けてください。
--cut here
<a href="http://www3.to/myna/">World Wide Myna</a>
--cut here