- 締切済み
C言語で壁紙が作成できる?
C言語を使って壁紙を作成することができると友人がききました。 もし本当であれば勉強して作成したいと思っています。 また、C言語じゃなくてもperlやjavaなどでも作ることができるのでしょうか? どうか教えていただけないでしょうか?お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- SpiralGalaxy
- ベストアンサー率39% (649/1654)
質問のレベルとは全く合っていない回答ですが、参考になるかと思い紹介します。 C/C++言語でのスクリーンセーバの作成方法 実はMS VisualC++には ScreenSaverLibraryというのがありますが、使いにくいのでお勧めしません。またこのライブラリに関するドキュメントは全部英語です。ですのでWin32APIだけで作成できる方法です。 1)スクリーンセーバとして表示したい実行ファイル(動画)をまず作成します。 2)コマンドラインでのオプション文字列処理ロジックを作成します。 /c の場合は動作設定ダイアログボックスを出力するようにコーディングします。 /s の場合はスクリーンセーバを起動するようにコーディングします。 /p XXXX の場合はコントロールパネルのスクリーンセーバの窓に表示することを要求されています。XXXX が表示要求されているウインドウハンドルが 10進数で引き渡されます。 /a XXXX の場合はパスワード設定を行います。XXXX は同様に親ウインドウのハンドルを10進であらわしたものです。 3)終了条件 WM_MOUSEMOVE WM_KEYDOWN WM_SYSKEYDOWN WM_LBUTTONDOWN WM_RBUTTONDOWN あたりをトリガにすればいいでしょう。 4)二重起動防止ロジック スクリーンセーバ起動中にも設定時刻がくれば起動されてしまうので複数のインスタンスが立ち上がらないように 二重起動防止ロジックを組み込む必要があります。 3)あとは、作成した EXEファイルの拡張子を SCR に変更して Windowsディレクトリにおけばスクリーンセーバとして認識されます。 コマンドライン文字列 /s は必須です。 /c, /p, /a の処理が良く分からない場合は省略してもいいですが、設定ダイアログや小窓での表示、パスワード処理ができなくなります。また /a についてはこの情報だけでは不充分で ::LoadLibrary("mpr.dll"); ::GetProcAddress(hinstance, "PwdChangePasswordA"); ::LoadLibrary("password.cpl"); あたりを Google などで検索してください。 C/C++でスクリーンセーバを作成するのは以外と難しいです。 が、DirectXなどと組み合わせれば物凄いのも作れます。 aeic さんは勉強中(?)とのことですので上記内容がどこまでわかるか分かりませんが、作る際には参考にしてください。
- toysmith
- ベストアンサー率37% (570/1525)
スクリーンセーバー自体は「制約の多いアプリケーション」に過ぎません。 単体稼動可能(=exeファイルと同じ形式)であることが前提なのでperlでは作れません。 Javaもの場合、exeファイルが作成可能な処理系ででスクリーンセーバーに利用可能なクラスライブラリがあれば作成可能です。
- Methyln
- ベストアンサー率29% (242/823)
壁紙自体は画像ファイルですので、特にプログラムを組む必要は無いと 思いますが... まぁ、画像編集ソフトをCで書けば"壁紙を作成する"と言えなくもないですし、 マンデルブローのような画像をCを使用して画像ファイルに出力する方法も "壁紙を作成する"と言えなくはないですが、それは手段にCを使用する事で "C言語で作成する"とは若干意味が違うと思います。 (もしかしてスクリーンセーバーのことを言っているのでは?) とりあえず、壁紙=画像ファイルですので、お間違いなく。 "ActiveDesktopを使用してウインドウにWebを表示する"というのは、今回の 質問とは関係無いので、その回答に関しては省かさせていただいています。
補足
もしかしてスクリーンセーバーのことを言っているのでは?) 申し訳ないです。上記のことでした。 壁紙は間違いです。ごめんなさい。