private static bool PostEnterKeyCharToProcess(IntPtr processHandle, int waitTime)
        {
            System.Threading.Thread.Sleep(waitTime);

            // 0xD:Enter
            return(Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x0000000D, 0x001C0001) != 0);
        }
        private static bool PostSpaceKeyInputToProcess(IntPtr processHandle, int waitTime)
        {
            System.Threading.Thread.Sleep(waitTime);

            // 0x20:Space
            if (Win32Controller.PostMessage(processHandle, Win32Controller.WmKeyDown, 0x00000020, 0x00390001) != 0)
            {
                System.Threading.Thread.Sleep(waitTime);
                return(Win32Controller.PostMessage(processHandle, Win32Controller.WmKeyUp, 0x00000020, 0xC0390001) != 0);
            }

            return(false);
        }
        private static bool PostEnterKeyInputToProcess(IntPtr processHandle, int waitTime)
        {
            System.Threading.Thread.Sleep(waitTime);

            // 0xD:Enter
            if (Win32Controller.PostMessage(processHandle, Win32Controller.WmKeyDown, 0x0000000D, 0x001C0001) != 0)
            {
                System.Threading.Thread.Sleep(waitTime);
                return(Win32Controller.PostMessage(processHandle, Win32Controller.WmKeyUp, 0x0000000D, 0xC01C0001) != 0);
            }

            return(false);
        }
        /// <summary>
        /// 与えられたプロセスに対し、約waitTime[ms]後にクライアント座標(x,y)の位置にマウスクリックイベントを起こす
        /// </summary>
        /// <param name="processHandle">
        /// The process Handle.
        /// </param>
        /// <param name="waitTime">
        /// The wait Time.
        /// </param>
        /// <param name="x">
        /// The x.
        /// </param>
        /// <param name="y">
        /// The y.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        private static bool PostMlbClickToProcess(IntPtr processHandle, int waitTime, ushort x, ushort y)
        {
            // wait
            System.Threading.Thread.Sleep(waitTime);

            // マウスクリックダウン
            if (Win32Controller.PostMessage(
                    processHandle,
                    Win32Controller.WmLButtonDown,
                    Win32Controller.MkLBotton,
                    Win32Controller.MakeLParam(x, y)) == 0)
            {
                return(false);
            }

            System.Threading.Thread.Sleep(waitTime);

            // マウスクリックアップ
            return(Win32Controller.PostMessage(
                       processHandle,
                       Win32Controller.WmLButtonUp,
                       0x00000000,
                       Win32Controller.MakeLParam(x, y)) != 0);
        }
        private static bool PostKeyCharToProcess(IntPtr processHandle, string keys, int intervalTime)
        {
            foreach (var item in keys)
            {
                System.Threading.Thread.Sleep(intervalTime);

                // 0x20:Space
                if (Regex.IsMatch(item.ToString(), @"^ $"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x00000020, 0x001E0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x2E:Dot
                if (Regex.IsMatch(item.ToString(), @"^\.$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x0000002E, 0x001E0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x40:@
                if (Regex.IsMatch(item.ToString(), @"^@$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x00000040, 0x001E0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x5F:_
                if (Regex.IsMatch(item.ToString(), @"^_$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x0000005F, 0x00730001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x2D:-
                if (Regex.IsMatch(item.ToString(), @"^-$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x0000002D, 0x000C0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x21:!
                if (Regex.IsMatch(item.ToString(), @"^!$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x00000021, 0x00020001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x3F:?
                if (Regex.IsMatch(item.ToString(), @"^\?$"))
                {
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, 0x0000003F, 0x00350001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x30:0
                if (Regex.IsMatch(item.ToString(), @"^[0-9]$"))
                {
                    uint wparam = 0x00000030 + (uint)(item - '0');
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, wparam, 0x001E0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x41:A
                if (Regex.IsMatch(item.ToString(), @"^[A-Z]$"))
                {
                    uint wparam = 0x00000041 + (uint)(item - 'A');
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, wparam, 0x001E0001) == 0)
                    {
                        return(false);
                    }

                    continue;
                }

                // 0x61:a
                if (Regex.IsMatch(item.ToString(), @"^[a-z]$"))
                {
                    uint wparam = 0x00000061 + (uint)(item - 'a');
                    if (Win32Controller.PostMessage(processHandle, Win32Controller.WmChar, wparam, 0x001E0001) == 0)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }