直列つなぎ。 -とある発達障害者の記録

知識と知識を繋ぐためのblog。 広汎性発達と診断されました。ぜんぜん役に立ってないけど。月収13万円、家賃4万円で生活するひつじ人間。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

 スポンサー広告

C#で音声認識ランチャーFを終了させるアプリ”CountDown_SendKye”を自作してみた。

更新履歴
 17/06/13
  サンプルが読みにくい上に実行不能なため上げ直し。
  ついでにプロジェクトファイルも置く。
   今度SyntaxHighlighter入れますよ・・・・


アプリ名:CountDown_SendKye
https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=6f4a86e5-8878-4e03-a188-653ba81a7a3d&viewtype=detail

Visual Studio 2015 プロジェクトファイル
  https://box.yahoo.co.jp/guest/viewer?sid=box-l-jjsgnkx53gwi3lt2r7nmvpbfvm-1001&uniqid=7fba5a67-95ae-4a40-a040-5f31a08a146f&viewtype=detail




 初めてiniを使ったアプリを自作出来ました。ちなみにデバッグビルド。
 現状、単純にESCキーを送信するだけです。コマンドプロンプトでの動作を模してみました。
  最小化して自動終了するため、目立ちません。


自分は Claunch(http://hp.vector.co.jp/authors/VA018351/)で同時起動に登録するのがオススメです。

(やり方:http://mojakouinfotaker.blog.fc2.com/blog-entry-870.html







 
 using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Linq.Expressions;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication14
{


    public partial class Form1 : Form
    {


        public class SettingInfo
        {
            //      public string TargetDirectory { get; set; }
            public string ExitStayTime { get; set; }
            //      public string[] keys { get; set; }
        }

        public Form1()
        {
            InitializeComponent();
        
        }

     
        //[DllImport("user32.dll")]
        //private static extern bool SetForegroundWindow(IntPtr hWnd);


        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd, uint Msg, uint wParam, uint lParam);


        [DllImport("kernel32.dll")]
        private static extern int GetPrivateProfileString(
    string lpApplicationName,
    string lpKeyName,
    string lpDefault,
    StringBuilder lpReturnedstring,
    int nSize,
    string lpFileName);


        public static string GetName<T>(Expression<Func<T>> e)
        {
            var member = (MemberExpression)e.Body;
            return member.Member.Name;
        }

   //ini読み込み
   //実行ファイルと同じフォルダにiniを置いて下さい。
        private string ReadingIniFile()
        {
          
                StringBuilder result = new StringBuilder();
                string stCurrentDir = Environment.CurrentDirectory;


                SettingInfo setting = new SettingInfo();
                string path = stCurrentDir + "\\setting.ini";

                result.Append(Environment.NewLine);



                setting.ExitStayTime = GetIniValue(path, string.Format("Application_Settings", 1), GetName(() => setting.ExitStayTime));
                result.AppendFormat("ExitStayTime:{0}", setting.ExitStayTime);
                result.Append(Environment.NewLine);

                return result.ToString();
              
           
       //     catch (System.IO.FileNotFoundException)
       //     {
       //         MessageBox.Show("text.rtfを配置してください。",
       //"エラー",
       //MessageBoxButtons.OK,
       //MessageBoxIcon.Error);
       //     }
           
        }



        public string GetIniValue(string path, string section, string key)
        {
            StringBuilder sb = new StringBuilder(256);
            GetPrivateProfileString(section, key, string.Empty, sb, sb.Capacity, path);
            return sb.ToString();
        }





        private async void sleepCount(String Ecount)
        {


            try
            {
                int Tcount = int.Parse(textBox1.Text);



                while (Tcount != 0 && label1.Text != "")
                {
                    //残り時間を表示
                    label1.Text = "残り:" + Tcount;

                    await Task.Delay(1000);

                    --Tcount;






                    if (Tcount == 0)
                    {
                        label1.Text = "時間です。";
                    }
                    //タイマー停止
                    timer1.Stop();

                }

            }
            catch (FormatException) { }

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Font = new Font("Arial", 12, FontStyle.Bold);

            label2.Font = new Font("Arial", 12, FontStyle.Bold);

            textBox1.Text = ReadingIniFile().ToString().Remove(0, 15);
            label1.Text = textBox1.Text;
            timer1.Start();



            //Thread.Sleep(int.Parse(textBox1.Text) * 1000);


           // sleepAsync();




            // Application.Exit();
        }



        private void timer1_Tick(object sender, EventArgs e)
        {
            // 現在時を取得
            // DateTime datetime_now = DateTime.Now;
            // DateTime datetime_set = new DateTime(datetime_now.Year, datetime_now.Month, datetime_now.Day, 23, 59, 0);
            //   sleepCount(10000);

            //Thread.Sleep(1000);
            sleepCount(textBox1.Text);

        }

    }


}
   






参考にしたURL

C#でiniファイルを取り扱うためのクラス実装例

http://qiita.com/y_minowa/items/685db9926dec0d6b711b
 

[C#]設定ファイルの読み込みと書き込み その2

 http://qiita.com/caf2for4/items/3078375bb8e79a5771b4




 



関連記事
スポンサーサイト

 C#

- 0 Comments

Leave a comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。