2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

『眠気吹っ飛ばす作業用アプリ』【暖かい目で見てね】

Last updated at Posted at 2020-08-03

なぜつくったの?

###寝落ちでぴえんしそうになったから
4.gif

作ったもの

  • 常駐するWPFアプリケーション
    GitHub リリースページ
    Github初心者感すごいですが、気にしないでください

#概要gif
3.gif

解決したい課題

###寝落ちせずに作業がしたい
私の趣味は、『締め切りギリギリに徹夜で作業や課題をすること
この趣味は、寝落ちする可能性をぬぐい切れません。
そこで、寝落ちしないようなアプリケーションを作成した。

こうなってほしい

###1.作業中に常駐する
###2.マウスとキーボードの入力が一定時間止まる
###3.設定したアラーム音を鳴らす
###4.びっくりして起きる

問題点

気持ちよく寝ているところを起こされると不機嫌になってしまう

実装した処理(折り畳み:ソースコード)

入力が一定時間ないことを判別する
public static class User32Interop{
/// 最終操作からの経過時間
/// </summary> ミリ秒で表示される Ex. 1sec -> 1000, 5sec -> 5000
    public static TimeSpan GetLastInput(){
        var plii = new LASTINPUTINFO();
        plii.cbSize = (uint)Marshal.SizeOf(plii);
        if (GetLastInputInfo(ref plii))
            return TimeSpan.FromMilliseconds(Environment.TickCount - plii.dwTime);
        else
            throw new System.ComponentModel.Win32Exception(Marshal.GetLastWin32Error());
    }
    [DllImport("user32.dll", SetLastError = true)]
    static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
    struct LASTINPUTINFO{
        public uint cbSize;
        public uint dwTime;
    }
}
アラーム音を鳴らす
SoundFilePlay.cs
string SoundFilePath = SleepDown.Properties.Settings.Default.FilePath;
string FileExtension = System.IO.Path.GetExtension(SoundFilePath);
switch (FileExtension){
    case ".mp3"://This is fall through so it's not that i forget break;
    case ".wav":
    case ".flac":
        Microsoft.SmallBasic.Library.Sound.PlayAndWait(SoundFilePath);
        break;

    default:
        MessageBox.Show("音声ファイルは\n対応した拡張子を設定してください");
        break;
}
再生する音源をローカルファイルから選択可能にする
GetFilePath.cs
//設定に音源ファイルのパスを保存しているため
//パスを取得
var FileDialog = new Microsoft.Win32.OpenFileDialog();
FileDialog.Title = "開くファイルを選択してください";
FileDialog.Filter = "mp3ファイル|*.mp3|wavファイル|*.wav|flacファイル|*.flac";
if (FileDialog.ShowDialog() == true){
    SoundFilePath = FileDialog.FileName;
}

実装したい処理

  • 再生音源の音量調整
  • アラーム音を再生途中で入力があった場合の途中停止

最後に

もし読んでくれた人がいたならありがとうございます
深夜テンションでヒャッハー!して書いたのでわけわからないところはご愛嬌で頼んます。

ps.
初めて書いたのでC#もQiitaもぐちゃぐちゃです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?