質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.80%

スクリーンセーバーの作り方 

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 15K+
退会済みユーザー

退会済みユーザー

始めて質問します。
プログラミング初心者なんですが、自分のお気に入りの写真があるので、それでスクリーンセーバーを作ってみようと思っています。
ですが、他のサイトのやつだとなんかいまいち(説明で使ってる機械が古くて、今使ってる環境でどうやって作ればわかんない)で、ここで聞けば一番いい方法が分かるかな?と思っています。

開発環境
OS     Windows8.1
開発ソフト  Visual Studio community2013

開発言語は問いません。できればさまざまな種類で違うバージョンを作ってみたいです。
お願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tohshima

    2015/04/23 08:20

    「なんかいまいち」な点が何か明確にしないと、「なんかいまいち」な回答しか得られないと思います。

    キャンセル

回答 3

+1

言語は”実行ファイル”が作れる言語ならなんでもいいです(*゚∀゚)
簡単な手順↓
1.画像表示ソフトを作る
2.拡張子をexeからscrに変更
3.手順2で作ったものをシステムフォルダに置く(例:c:\windows)
4.スクリーンセーバーの設定画面で作ったものを選ぶ
以上です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/23 14:20

    お答えいただきありがとうございます。厚かましいようで申し訳ありませんが、後学のために、画像表示ソフトの作り方の詳細な手順を教えていただけると幸いです。

    キャンセル

  • 2015/04/23 22:06

    プログラミング初心者ということなので
    "Visual Studio community2013"は使いませんが
    "簡単プログラミングなでしこ"というものを使ってみてはいかがでしょうか
    サンプルコードはネットで調べればいくらでも出てきます
    例: "なでしこ 画像表示ソフト"で検索
    あとhtsignさんも書いているのですが
    "マウスカーソルが動いたら終了する"という動作を入れなければなりません
    作成頑張ってください(^^♪

    キャンセル

+1

C#で書いてみました。
マイピクチャ以下に置かれているjpgファイルを5秒間隔でランダムに表示します。
Windows FormsなのでDirectXのような高速表示は出来ませんが、十分実用レベルかと思います。

手順としては
  1.  ファイル一覧を文字列の配列で取得
  2.  一定時間ごとに配列からランダムで一要素を選択
  3.  PictureBoxコンポーネントに貼り付け
これだけです。

スクリーンセーバーということでマウスカーソルが動いたら終了するようにもしてあります。
using System;
using System.IO;
using System.Windows.Forms;

public partial class ScreenSaverWindow
    : Form
{
    // 表示する画像を切り替える間隔を指定します。単位は秒。
    private const int ChangingPictureInterval = 5;
    // 表示したい画像群を含むフォルダを指定します。
    private readonly string TargetDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

    private System.Threading.Timer timer;
    private System.Drawing.Point cursorPoint = Cursor.Position;

    public ScreenSaverWindow()
    {
        this.InitializeComponent();
    }

    private void ShowRandomImage(object imageFiles)
    {
        var files = (string[])imageFiles;
        pictureBox.Invoke((Action)(() =>
        {
            var rand = new Random();
            int index = rand.Next(files.Length);

            pictureBox.ImageLocation = files[index];
        }));
    }

    private void SetQuitHandler(Control control)
    {
        control.MouseMove += (sender, e) =>
        {
            // カーソルが動いたら終了
            if (e.Location != this.cursorPoint)
            {
                this.timer.Dispose();
                Environment.Exit(0);
            }
        };
    }

    private void Form_Load(object sender, EventArgs e)
    {
        string[] picFiles = Directory.GetFiles(TargetDirectory, "*.jpg", SearchOption.AllDirectories);

        // 定期的に実行されるスレッドを開始
        this.timer = new System.Threading.Timer(
            this.ShowRandomImage,
            picFiles,
            TimeSpan.Zero, 
            TimeSpan.FromSeconds(ChangingPictureInterval));

        this.SetQuitHandler(pictureBox);
    }
}
/// <summary>
/// フォームのコンポーネントを定義
/// </summary>
public partial class ScreenSaverWindow
    : Form
{
    internal PictureBox pictureBox = new PictureBox();

    private void InitializeComponent()
    {
        this.SuspendLayout();

        pictureBox.Dock = DockStyle.Fill;
        pictureBox.SizeMode = PictureBoxSizeMode.Zoom;

        // フルスクリーン化
        this.FormBorderStyle = FormBorderStyle.None;
        this.WindowState = FormWindowState.Maximized;
        this.Controls.Add(pictureBox);

        this.Load += Form_Load;
        this.ResumeLayout(false);
    }
}

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new ScreenSaverWindow());
    }
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/23 17:11

    答えていただきありがとうございました。頑張ってやってみます。

    キャンセル

0

スライドショーですか?
プログラミングしなくてもいいですよ
どっかのフォルダに使いたい画像を入れ(このフォルダには出したくない画像を入れてはいけない)、
[コントロールパネル]→[デスクトップのカスタマイズ]→[スクリーンセーバーの変更]の手順で行き
スクリーンセーバー(S)内のコンボボックス(コンボボックスで合ってるかな?違うと思うけど)で「写真」をえらび設定ボタンを押し使用する画像の場所の参照ボタンを押し使いたい画像の入っているフォルダを選びOKを押し保存を押しOKを押すだけ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る