{"id":7729,"date":"2019-09-18T10:00:47","date_gmt":"2019-09-18T01:00:47","guid":{"rendered":"https:\/\/www.gigas-jp.com\/appnews\/?p=7729"},"modified":"2019-09-17T20:09:13","modified_gmt":"2019-09-17T11:09:13","slug":"%e5%88%9d%e6%9c%9f%e5%8c%96%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%92%e8%aa%ad%e3%81%bf%e5%8f%96%e3%82%8bwindows%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3","status":"publish","type":"post","link":"https:\/\/www.gigas-jp.com\/appnews\/archives\/7729","title":{"rendered":"\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308bWindows\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3"},"content":{"rendered":"\n<p>\u524d\u56de\u306b\u5f15\u304d\u7d9a\u304d\u3001\u52c9\u5f37\u3092\u517c\u306d\u305fC#\u3092\u4f7f\u3063\u305fWindows\u7528\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002 <br>\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb(.ini) \u304b\u3089\u8a2d\u5b9a\u3092\u8aad\u307f\u53d6\u3063\u3066\u305d\u308c\u3092\u5143\u306b\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u8868\u793a\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n<p><!--more--><\/p>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"697\" height=\"357\" src=\"\/appnews\/wp-content\/uploads\/sites\/4\/2019\/09\/87fe34716aef234c87b80690e5279d2e.png\" alt=\"\" class=\"wp-image-7733\"\/><\/figure>\n\n\n\n<p>[DllInport(&#8220;KERNEL32.DLL&#8221;)]\u304b\u3089\u59cb\u307e\u308b\u7b87\u6240\u306fWin32 API\u3092\u4f7f\u7528\u3057\u3001<br>\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u5024\u3092\u8aad\u307f\u53d6\u308b\u305f\u3081\u306e\u5ba3\u8a00\u3067\u3059\u3002<br>\u305d\u306e\u4ed6\u5b9a\u6570\u306e\u5b9a\u7fa9\u3084\u3001\u8aad\u307f\u53d6\u3063\u305f\u8a2d\u5b9a\u3092\u683c\u7d0d\u3059\u308b\u305f\u3081\u306e\u69cb\u9020\u4f53\u3092<br>\u5ba3\u8a00\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Win32API\u306e GetPrivateProfile\uff5e\uff5e \u3092\u4f7f\u3046\u5ba3\u8a00\n        \/\/ string\u53d6\u5f97\u7528\n        [DllImport(\"KERNEL32.DLL\")]\n        public static extern uint\n          GetPrivateProfileString(string lpAppName,\n          string lpKeyName, string lpDefault,\n          StringBuilder lpReturnedString, uint nSize,\n          string lpFileName);\n        \/\/ int\u53d6\u5f97\u7528\n        [DllImport(\"KERNEL32.DLL\")]\n        public static extern uint\n          GetPrivateProfileInt(string lpAppName,\n          string lpKeyName, int nDefault,\n          string lpFileName);\n        \/\/ \u8aad\u307f\u8fbc\u3080\u8a2d\u5b9a\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u540d\n        private static readonly string GENERAL_SECTION = (\"General\");\n        \/\/ \u8a2d\u5b9a\u306e\u30ad\u30fc\u3068\u521d\u671f\u5024(\u5185\u5bb9\u306f\u7701\u7565\u3057\u3066\u3044\u307e\u3059)\n        private struct GENERAL\n        {\n            public struct OUTPUT_DIRECTRY\n            public struct BIRTH_YEAR\n            public struct BIRTH_MONTH\n            public struct BIRTH_DAY\n            public struct RANGE_MIN\n            public struct RANGE_MAX\n            public struct ITEM_NUM\n        }\n        \/\/ \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u540d\n        private static readonly string SETTING_FILE_PATH = (\"setting.ini\");\n        private static readonly string CURRENT_DIRECTORY = (AppDomain.CurrentDomain.BaseDirectory);\n        \/\/ \u8aad\u307f\u53d6\u3063\u305f\u8a2d\u5b9a\u3092\u683c\u7d0d\u3059\u308b\u69cb\u9020\u4f53\n        private struct GeneralSetting\n        {\n            public string output_directry;\n            public int birth_year;\n            public int birth_month;\n            public int birth_day;\n            public int range_min;\n            public int range_max;\n            public int item_num;\n        }<\/code><\/pre>\n\n\n\n<p>\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u308b\u95a2\u6570\u7fa4\u3067\u3059\u3002<br>Win32API\u306e\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u53d6\u5f97\u3057\u305f\u30c7\u30fc\u30bf\u3092\u69cb\u9020\u4f53\u3078\u4fdd\u5b58\u3057\u3066\u3044\u307e\u3059\u3002<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n         * \u8a2d\u5b9a\u8aad\u307f\u53d6\u308a\u95a2\u6570\n         * General\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u3092\u8aad\u307f\u53d6\u3063\u3066\u69cb\u9020\u4f53\u306e\u30e1\u30f3\u30d0\u306b\u4ee3\u5165\u3057\u8fd4\u3057\u307e\u3059\u3002\n         * \n         *\/\n        private static GeneralSetting loadGeneralSetting()\n        {\n            string section = (GENERAL_SECTION);\n            GeneralSetting ret;\n            ret.output_directry = loadStringVal(section, GENERAL.OUTPUT_DIRECTRY.KEY, GENERAL.OUTPUT_DIRECTRY.DEFAULT_VAL);\n            ret.birth_year = loadIntVal(section, GENERAL.BIRTH_YEAR.KEY, GENERAL.BIRTH_YEAR.DEFAULT_VAL);\n            ret.birth_month = loadIntVal(section, GENERAL.BIRTH_MONTH.KEY, GENERAL.BIRTH_MONTH.DEFAULT_VAL);\n            ret.birth_day = loadIntVal(section, GENERAL.BIRTH_DAY.KEY, GENERAL.BIRTH_DAY.DEFAULT_VAL);\n            ret.range_min = loadIntVal(section, GENERAL.RANGE_MIN.KEY, GENERAL.RANGE_MIN.DEFAULT_VAL);\n            ret.range_max = loadIntVal(section, GENERAL.RANGE_MAX.KEY, GENERAL.RANGE_MAX.DEFAULT_VAL);\n            ret.item_num = loadIntVal(section, GENERAL.ITEM_NUM.KEY, GENERAL.ITEM_NUM.DEFAULT_VAL);\n            return ret;\n        }\n\n        \/**\n         * \u6307\u5b9a\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u6307\u5b9a\u30ad\u30fc\u306e\u5024\u3092string\u3068\u3057\u3066\u8aad\u307f\u53d6\u308b\u95a2\u6570\n         * \n         *\/\n        private static string loadStringVal(string section, string key, string defVal)\n        {\n            StringBuilder sb = new StringBuilder(1024);\n            GetPrivateProfileString(\n                section,      \/\/ \u30bb\u30af\u30b7\u30e7\u30f3\u540d\n                key,          \/\/ \u30ad\u30fc\u540d    \n                defVal,   \/\/ \u5024\u304c\u53d6\u5f97\u3067\u304d\u306a\u304b\u3063\u305f\u5834\u5408\u306b\u8fd4\u3055\u308c\u308b\u521d\u671f\u5024\n                sb,             \/\/ \u683c\u7d0d\u5148\n                Convert.ToUInt32(sb.Capacity), \/\/ \u683c\u7d0d\u5148\u306e\u30ad\u30e3\u30d1\n                CURRENT_DIRECTORY + SETTING_FILE_PATH\n                );   \/\/ ini\u30d5\u30a1\u30a4\u30eb\u540d\n            return sb.ToString();\n        }\n\n        \/**\n         * \u6307\u5b9a\u30bb\u30af\u30b7\u30e7\u30f3\u306e\u6307\u5b9a\u30ad\u30fc\u306e\u5024\u3092int\u3068\u3057\u3066\u8aad\u307f\u53d6\u308b\u95a2\u6570\n         * \n         *\/\n        private static int loadIntVal(string section, string key, int defVal)\n        {\n            return (int)GetPrivateProfileInt(section, key, defVal, CURRENT_DIRECTORY + SETTING_FILE_PATH);\n        }\n\n        \/**\n         * \u6307\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u30a8\u30f3\u30b3\u30fc\u30c9\u3067\u8aad\u307f\u53d6\u3063\u3066\u4e00\u884c\u305a\u3064\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u51fa\u529b\u3059\u308b\u95a2\u6570\n         * \n         *\/\n        private static string readSetting(string filePath, string encoding)\n        {\n            if (!File.Exists(filePath))\n            {\n                return \"\";\n            }\n            System.Text.Encoding enc = System.Text.Encoding.GetEncoding(encoding);\n            string[] readText = File.ReadAllLines(filePath, enc).ToArray();\n            return String.Join(\"\\n\", readText);\n        }<\/code><\/pre>\n\n\n\n<p>\u30e1\u30a4\u30f3\u95a2\u6570\u3067\u3059\u3002<br>\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u306e\u8a2d\u5b9a\u3092\u5143\u306b\u6307\u5b9a\u7bc4\u56f2\u5185\u306e\u4e71\u6570\u5024\u3092\u6307\u5b9a\u500b\u6570\u8868\u793a\u3059\u308b\u7c21\u5358\u306a\u30d7\u30ed\u30b0\u30e9\u30e0\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>static void Main(string[] args)\n        {\n            Console.WriteLine(SETTING_FILE_PATH);\/\/\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u540d\n            Console.WriteLine(readSetting(SETTING_FILE_PATH, \"shift_jis\"));\/\/\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u306e\u5185\u5bb9\n            Console.WriteLine(\"\");\/\/\u7a7a\u767d\u884c\n            Console.WriteLine(\"\u4e0a\u8a18\u306e\u8a2d\u5b9a\u3092\u5143\u306b\u4e71\u6570\u3092\u8868\u793a\u3057\u307e\u3059\u3002\");\n            \/\/ \u8a2d\u5b9a\u8aad\u53d6\n            GeneralSetting generalSetting = loadGeneralSetting();\n            \/\/ \u8aad\u307f\u53d6\u3063\u305f\u751f\u5e74\u6708\u65e5\u3092DateTime\u578b\u306b\n            var birthDate = DateTime.Parse(String.Format(\"{0}\/{1}\/{2}\", generalSetting.birth_year, generalSetting.birth_month, generalSetting.birth_day));\n            \/\/ \u73fe\u5728\u6642\u9593\uff0b\u751f\u5e74\u6708\u65e5\u3092\u30b7\u30fc\u30c9\u306b\u4e71\u6570\n            var rnd = new System.Random(((int)(DateTime.Now.Ticks + birthDate.Ticks) &amp; 0x0000ffff));\n            StringBuilder sb = new StringBuilder(256);\n            sb.Clear();\n            sb.Append(\"\u51fa\u529b\u7d50\u679c : \");\n            \/\/ \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u3063\u305f\u56de\u6570\u5206\u30eb\u30fc\u30d7\u3092\u5b9f\u884c\n            for (int i = 0; i &lt; generalSetting.item_num; i++)\n            {\n                \/\/ \u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8aad\u307f\u53d6\u3063\u305f\u4e0b\u9650\u5024\uff5e\u4e0a\u9650\u5024\u306e\u7bc4\u56f2\u3067\u4e71\u6570\u3092\u6587\u5b57\u5217\u7d50\u5408\n                sb.Append(rnd.Next(generalSetting.range_min, generalSetting.range_max+1));\n                sb.Append(\" \");\n            }\n\n            Console.WriteLine(sb.ToString().Trim());\n\n\n            return;\n        }<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3092\u4f5c\u6210\u3057\u305f\u7406\u7531\u3067\u3059\u304c\u3001\u6570\u5b57\u3092\u3044\u304f\u3064\u304b\u9078\u3076\u30bf\u30a4\u30d7\u306e\u5b9d\u304f\u3058\u3067\u6570\u5b57\u3092\u30d1\u30d1\u3063\u3068\u6c7a\u3081\u305f\u3044\u6642\u306b\u4fbf\u5229\u304b\u306a\u3068\u601d\u3044\u4f5c\u6210\u3057\u307e\u3057\u305f\u3002<br>C#\u306fC\u8a00\u8a9e\u8981\u7d20\u306e\u3042\u308bJava\u307f\u305f\u3044\u306a\u5370\u8c61\u3067\u3059\u306d\u3002\u578b\u63a8\u8ad6\u304c\u3042\u3063\u3066\u4fbf\u5229\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u6c34\u66dc\u62c5\u5f53:Tanaka<\/p>\n<div class='wp_social_bookmarking_light'>\n            <div class=\"wsbl_google_plus_one\"><g:plusone size=\"medium\" annotation=\"none\" href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/7729\" ><\/g:plusone><\/div>\n            <div class=\"wsbl_hatena_button\"><a href=\"\/\/b.hatena.ne.jp\/entry\/https:\/\/www.gigas-jp.com\/appnews\/archives\/7729\" class=\"hatena-bookmark-button\" data-hatena-bookmark-title=\"\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308bWindows\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\" data-hatena-bookmark-layout=\"standard\" title=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\"> <img src=\"\/\/b.hatena.ne.jp\/images\/entry-button\/button-only@2x.png\" alt=\"\u3053\u306e\u30a8\u30f3\u30c8\u30ea\u30fc\u3092\u306f\u3066\u306a\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306b\u8ffd\u52a0\" width=\"20\" height=\"20\" style=\"border: none;\" \/><\/a><script type=\"text\/javascript\" src=\"\/\/b.hatena.ne.jp\/js\/bookmark_button.js\" charset=\"utf-8\" async=\"async\"><\/script><\/div>\n            <div class=\"wsbl_twitter\"><a href=\"https:\/\/twitter.com\/share\" class=\"twitter-share-button\" data-url=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/7729\" data-text=\"\u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u53d6\u308bWindows\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\" data-via=\"GIGASJAPAN_APPS\" data-lang=\"ja\">Tweet<\/a><\/div>\n            <div class=\"wsbl_facebook_like\"><div id=\"fb-root\"><\/div><fb:like href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/7729\" layout=\"button_count\" action=\"like\" width=\"100\" share=\"false\" show_faces=\"false\" ><\/fb:like><\/div>\n            <div class=\"wsbl_facebook_send\"><div id=\"fb-root\"><\/div><fb:send href=\"https:\/\/www.gigas-jp.com\/appnews\/archives\/7729\" colorscheme=\"light\" ><\/fb:send><\/div>\n    <\/div>\n<br class='wp_social_bookmarking_light_clear' \/>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u56de\u306b\u5f15\u304d\u7d9a\u304d\u3001\u52c9\u5f37\u3092\u517c\u306d\u305fC#\u3092\u4f7f\u3063\u305fWindows\u7528\u30b3\u30f3\u30bd\u30fc\u30eb\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002 \u521d\u671f\u5316\u30d5\u30a1\u30a4\u30eb(.ini) \u304b\u3089\u8a2d\u5b9a\u3092\u8aad\u307f\u53d6\u3063\u3066\u305d\u308c\u3092\u5143\u306b\u30b3\u30f3\u30bd\u30fc\u30eb\u306b\u8868\u793a\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[72],"tags":[],"acf":[],"_links":{"self":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/7729"}],"collection":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/comments?post=7729"}],"version-history":[{"count":7,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/7729\/revisions"}],"predecessor-version":[{"id":7737,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/posts\/7729\/revisions\/7737"}],"wp:attachment":[{"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/media?parent=7729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/categories?post=7729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gigas-jp.com\/appnews\/wp-json\/wp\/v2\/tags?post=7729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}