早速ですが質問です。
スクリーンセーバーを作ろうと思い立ったの
ですが、作り方がいまいちよくわかりません。
どなたか教えてください。
お願いします。
人に聞く前に、まず自分で探す努力したらいかがでしょう?
Yahooで「スクリーンセーバーの作り方 VB」で
検索するだけでそれっぽいのが ひとやま
見つかるでしょう。
僕も一回作ったのですが、あまりよく覚えてません・・・
まず基本。普通にフォームを作って、ウィンドウの枠を「なし」にします。キャプションはあってもなくてもいいです。
で、Form_Loadか、Sub Main()に、コマンドラインを受け取るキャッチャーを書きます。
これはSelect Case でOKです。
ごめんなさい、渡されるコマンドラインはまた調べておきます。
で、で、API関数を使ってあなたのプログラムがスクリーンセーバーであることをWindowsに認識させます。General Declationsに記述するのはこれです↓
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long
Const SPI_SETSCREENSAVEACTIVE = 17
Const SPIF_UPDATEINIFILE = &H1
Const SPIF_SENDWININICHANGE = &H2
設定コード↓
Dim Ret As Integer
Ret = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, Flag, ByVal 0, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
If Ret = 0 Then
'error
End
End If
宣言のところは改行なしか、_を適当に入れてください。
っていうか書き込んでから思ったんですけど、VBでスクリーンセーバー
というのはやめた方がいいように思います。
クライアントにおいてもVB6ランタイムを導入しなければならないし、
なによりも起動と反応が遅く、非常に重いです。
Flash,Directorなどを使って作った方が軽くて汎用性があると思います。
スクリーンセイバーといっても拡張子が.scrのただの実行ファイルですので
実はメモ帳とかの全然関係ないアプリケーションの拡張子変えて
Windows/Systemディレクトリにつっこんで設定しておくと
時間が経過した時点でメモ帳を起動してくれます(笑)。
DirectXをつかって動画Gifかなんかをフルスクリーンで
表示させるだけというのどうでしょうか。
画像ができてれば5分でできます。
ベクターにそういうサンプルがあったような気が…します。
ベクターのVBディレクトリを、"スクリーンセーバー"で検索してみてください。
スクリーンセーバーを作るなら、HSPというのもありますけど…、
HSP自体の基本機能はすごく少ないんですけど、スクリーンセーバーとか、ゲームとか、Windowsアプリケーションに無縁のものを作るのには向いてると思います。
ちなみに、スクリーンセーバーに送られるコマンドラインは以下の通り。
OSによって微妙に違うみたいです。
(3文字目にあるかもしれない)コロン:の存在は無視、表示するべきハンドルは自分で調べる。
とすれば、結構どこでも動くものが作りやすいかもしれません。
> Windows2000
> 通常起動…/s
> 右ポップアップ テスト(E)…/S
> 右ポップアップ 構成(O)…なし
> 画面のプロパティ 縮小プレビュー…/p hwnd
> 画面のプロパティ 設定(T)…/c:hwnd
> 画面のプロパティ プレビュー(V)…/s
> ・WindowsNT4.0
> 通常起動…/s
> 右ポップアップ テスト(E)…/S
> 右ポップアップ 構成(O)…なし
> 画面のプロパティ 縮小プレビュー…/p hwnd
> 画面のプロパティ 設定(T)…/c:hwnd
> 画面のプロパティ プレビュー(V)…/s
> ・WindowsME
> 通常起動…/s
> 右ポップアップ テスト(E)…/S
> 右ポップアップ 構成(O)…なし
> 画面のプロパティ 縮小プレビュー…/p hwnd
> 画面のプロパティ 設定(T)…/c:hwnd
> 画面のプロパティ プレビュー(V)…/s
> 画面のプロパティ 変更(C)…/a:hwnd
> ・Windows98
> 通常起動…/s
> 右ポップアップ テスト(E)…/S
> 右ポップアップ 構成(O)…なし
> 画面のプロパティ 縮小プレビュー…/p hwnd
> 画面のプロパティ 設定(T)…/c:hwnd
> 画面のプロパティ プレビュー(V)…/s
> 画面のプロパティ 変更(C)…/a:hwnd
> ・Windows95
> 通常起動…/s
> 右ポップアップ テスト(E)…/S
> 右ポップアップ 構成(O)…なし
> 画面のプロパティ 縮小プレビュー…/p hwnd
> 画面のプロパティ 設定(T)…/c
> 画面のプロパティ プレビュー(V)…/s
> 画面のプロパティ 変更(C)…/a:hwnd
あるソフトのヘルプより引用
掲示板に書くにはあまりにも読みづらいため、一部修正しました。
というか、これDelphiのコンポーネントです^^;
なので、Delphiで作るというのも手かもしれません。
Personal版でも使えるし。
ちょっといい加減すぎたので補足を
マウスかキーボードの入力で終了
(MouseMove,MouseDown,KeyDown)
DirectX何それ?という場合は
Form1.BorderStyle = 0
Form1.WindowState = 2
UNISYS社が嫌いな人はTimerコントロールかGetTickCount()で絵を動かす。
本格的なやつをつくるなら
コマンド関数の戻り値からコマンドに渡された引数を取得
(画面のプロパティ等に対応させる場合)
Select CaseかIfでそれぞれのケースに対応させる。
重複をさけるためのトラップ
ShowCursorでマウスポインタを消す。
(Unloadで戻すのを忘れずに)
分かりました。早速やってみようと思います。
もう一点。
コンパイルするときに[オプション]の
[タイトル]に、[SCRNSAVE:]と打ってからタイトルを入力してください。
ありがとうございます。
ツイート | ![]() |