using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text;
using System.IO;
using System.IO.Compression;
using System.Management;
using System.Net;
using System.Diagnostics;

namespace utilpok2
{
    static class Program
    {

        public class MyGlobal
         {
            public static string cpFlag;
            public static string cpWord1;
            public static string cpWord2;
            public static string cpText1;
            public static string cpText2;
            public static string cTemp;
        }

        static void UtilPOKReadMe()
        {
            string cFileDate = "";
            if (File.Exists("original.exe")) { cFileDate = File.GetLastWriteTime("original.exe").ToString(); }
            if (File.Exists("utilpok2.exe")) { cFileDate = File.GetLastWriteTime("utilpok2.exe").ToString(); }
            MessageBox.Show("วันที่โปรแกรม " + cFileDate + System.Environment.NewLine + System.Environment.NewLine
        + "utilpok2 1 โพลเดอร์ต้นทาง โพลเดอร์ปลายทาง  ---> Copy ไฟล์ทั้งโพลเดอร์ " + System.Environment.NewLine
        + "utilpok2 2 0  0 ---> Copy ขึ้นคลาวด์ของพิภพ " + System.Environment.NewLine
        + "utilpok2 3 ชื่อไฟล์ PDF ---> เปิดไฟล์ PDF ด้วย Acrobat" + System.Environment.NewLine
        + "utilpok2 40 --->เช็คโปรแกรมในหน่วยความจำ" + System.Environment.NewLine
        + "utilpok2 4 ชื่อโปรแกรม --->ยกเลิกโปรแกรมในหน่วยความจำ" + System.Environment.NewLine
        + "utilpok2 5 ชื่อไฟล์บนเวบ ชื่อไฟล์ปลายทาง ---> Downloadไฟล์" + System.Environment.NewLine
        + "utilpok2 6 โพลเดอร์ต้นทาง ---> เสริมระบบ Backup2c.bat" + System.Environment.NewLine
        + "utilpok2 7 ชื่อไฟล์ZIP ชื่อโพลเดอร์---> สำรองข้อมูลเฉพาะdbf" + System.Environment.NewLine
        + "utilpok2 8 ชื่อโพลเดอร์ ชื่อไฟล์ZIP ---> สำรองข้อมูลทั้งโพลเดอร์" + System.Environment.NewLine 
        + "utilpok2 9 0 0 ---> ล้างไฟล์บางส่วนในหน่วยความจำก่อนพิมพ์ " + System.Environment.NewLine + System.Environment.NewLine
        + "utilpok2 F 0 0 ---> ยกเลิก formPOK ออกจาก Startup" + System.Environment.NewLine
        + "utilpok2 F 1 0 ---> C:\\Program 32BIT\\WIN32BIT\\formPOK ไป Startup" + System.Environment.NewLine
        + "utilpok2 F 2 0 ---> C:\\Program 32BIT\\WIN32BIT\\formPOK ส่งซ้ำอีกครั้ง" + System.Environment.NewLine
        + "utilpok2 F 3 0 ---> ยกเลิก formPOK ออกจากหน่วยความจำ" + System.Environment.NewLine
        + "utilpok2 I0 0 0 ---> ปิดเวบ UYOD" + System.Environment.NewLine
        + "utilpok2 I1 0 0 ---> เปิดเวบ UYOD" + System.Environment.NewLine + System.Environment.NewLine
        + "utilpok2 M Drive \\Network Share ---> สร้าง Map Drive" + System.Environment.NewLine
        + "utilpok2 M Drive D ---> ลบ Map Drive" + System.Environment.NewLine
        + "utilpok2 W 0 0 ---> เช็ควินโดร์" + System.Environment.NewLine
        + "" + System.Environment.NewLine
        , "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


        //
        static void CopyAllFile()
        {
            if (MyGlobal.cpWord1.Length == 0) { Pok_Mess("ต้องระบุ Folder ต้นทาง"); return; }
            if (MyGlobal.cpWord2.Length == 0) { Pok_Mess("ต้องระบุ Folder ปลายทาง"); return; }

            string cFolder1, cFolder2;
            cFolder1 = MyGlobal.cpWord1;
            cFolder2 = MyGlobal.cpWord2;


            bool Folderexist1 = System.IO.Directory.Exists(@cFolder1);
            bool Folderexist2 = System.IO.Directory.Exists(@cFolder2);
            if (Folderexist1)
            {
                if (!Folderexist2) { System.IO.Directory.CreateDirectory(@cFolder2); }

                DirectoryInfo cFileList = new DirectoryInfo(@cFolder1);
                FileInfo[] Files = cFileList.GetFiles("*.*");
                string filesource, filetarget;

                foreach (FileInfo filelist in Files)

                {
                    filesource = @cFolder1 + "\\" + filelist.Name;
                    filetarget = @cFolder2 + "\\" + filelist.Name;
                    File.Copy(filesource, filetarget, true);
                }
            }
            else
            {
                Pok_Mess("ไม่พบโพลเดอร์ " + cFolder1);
            }

        }


        static void CopyPipopFile()
        {
            MyGlobal.cpWord1 = @"R:\bdBackup";
            MyGlobal.cpWord2 = @"V:\Pipop\Box Sync\Source";
            CopyAllFile();
        }


        static void DownloadFromWeb(int nFlag)
        {

            if (MyGlobal.cpWord1.Length == 0) { Pok_Mess("ต้องระบุ Web ด้วย"); return; }
            if (MyGlobal.cpWord2.Length == 0) { Pok_Mess("ต้องระบุชื่อไฟล์ด้วย"); return; }

            string myStringWebResource, fileName;
            myStringWebResource = MyGlobal.cpWord1;
            fileName = MyGlobal.cpWord2;


            if (File.Exists(@fileName)) { File.Delete(@fileName); }
            // Create a new WebClient instance.
            WebClient myWebClient = new WebClient();

            // Download the Web resource and save it into the current filesystem folder.
            myWebClient.DownloadFile(myStringWebResource, @fileName);
            myWebClient.Dispose();

            if (nFlag == 1)
            {
                if (File.Exists(@fileName))
                {
                    MessageBox.Show("Download จากเวบ " + myStringWebResource + " สำเร็จ"
                    + System.Environment.NewLine + Application.StartupPath
                    , "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("Download จากเวบ " + myStringWebResource + " ไม่สำเร็จ"
                    + System.Environment.NewLine + Application.StartupPath
                    + System.Environment.NewLine + "กรุณาออกจากโปรแกรมแล้วเข้าใหม่"
                    , "", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        static bool RunInSource() // Run ผ่าน Source Code 
        {
            bool lRunInSource;
            if (File.Exists(@"J:\Pipop\Dropbox\Source\AP.ZP"))
            { lRunInSource = true; }
            else { lRunInSource = false; }
            return lRunInSource;
        }

        static void Pok_Mess(string cfWord)
        {
            MessageBox.Show(cfWord + System.Environment.NewLine
            + "" + System.Environment.NewLine
            + "" + System.Environment.NewLine
            , "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }


        static void Backup2c()
        {
            string cHard_Folder = Environment.GetEnvironmentVariable("HARD_FOLDER");
            if (cHard_Folder == null || cHard_Folder == String.Empty) { cHard_Folder = @"D:\_Datanet\"; }

            if (MyGlobal.cpWord1.Length == 0) { Pok_Mess("ต้องระบุโพลเดอร์ต้นทางด้วย"); return; }
            if (!File.Exists(cHard_Folder+"transac.zp")) { Pok_Mess("ไม่พบไฟล์ "+ cHard_Folder+"transac.zp"); return; }
            string cFoderOK = Chk_Backup2c(cHard_Folder);
            if (cFoderOK.Length != 0)
            {
                if (RunInSource()) { Pok_Mess("Copy ที่โพลเดอร์ " + cFoderOK); }
                cFoderOK = cFoderOK + "\\";
                if (!Directory.Exists(@cFoderOK)) { Directory.CreateDirectory(@cFoderOK); }

                if (File.Exists(cHard_Folder+"data.zp")) { File.Copy(cHard_Folder+"data.zp", @cFoderOK + "data.zp", true); }
                if (File.Exists(cHard_Folder+"room.zp")) { File.Copy(cHard_Folder+"room.zp", @cFoderOK + "room.zp", true); }
                if (File.Exists(cHard_Folder+"transac.zp")) { File.Copy(cHard_Folder+"transac.zp", @cFoderOK + "transac.zp", true); }
                if (File.Exists(cHard_Folder+"tran2.zp")) { File.Copy(cHard_Folder+"tran2.zp", @cFoderOK + "tran2.zp", true); }
                if (File.Exists(cHard_Folder+"tran3.zp")) { File.Copy(cHard_Folder+"tran3.zp", @cFoderOK + "tran3.zp", true); }
                if (File.Exists(cHard_Folder+"tran4.zp")) { File.Copy(cHard_Folder+"tran3.zp", @cFoderOK + "tran4.zp", true); }
                if (File.Exists(cHard_Folder+"tax.zp")) { File.Copy(cHard_Folder+"tax.zp", @cFoderOK + "tax.zp", true); }
                if (File.Exists(cHard_Folder+@"system\dbfrun.zp")) { File.Copy(cHard_Folder+@"system\dbfrun.zp", @cFoderOK + "dbfrun.zp", true); }
            }
            SaveHistoryBackup2c(cFoderOK);
        }


        static bool Back2CheckFile(String cFileName)
        {
            string cloudDrive = Environment.GetEnvironmentVariable("CLOUD_DRIVE");
            string dFileName, cFileExe, cFolderToBackup, cFileToBackup;
            bool lBack2CheckFile = false;
            cFileExe = cFileName + ".exe";
            if (File.Exists(cFileExe))
            { MyGlobal.cTemp = "ไฟล์ "+ cFileExe + " ปรับปรุงวันที่ " + File.GetLastWriteTime(cFileExe).ToString("dd/MM/yyyy H:mm");
                dFileName = File.GetLastWriteTime(cFileExe).ToString("ddMMyyyy");
                cFolderToBackup = cloudDrive + @"Backup\Version\" + dFileName;
                if (!Directory.Exists(cFolderToBackup)) { Directory.CreateDirectory(cFolderToBackup); }
                cFileToBackup = cFolderToBackup + @"\" + cFileName + ".exe";
                if (!File.Exists(cFileToBackup)) { File.Copy(cFileExe, cFileToBackup); }
                lBack2CheckFile = true; }
            return lBack2CheckFile;
        }

        static void SaveHistoryBackup2c(string LastFolder)
        {
            string cloudDrive = Environment.GetEnvironmentVariable("CLOUD_DRIVE") + "backup2c.txt";
            TextWriter Bat_File = new StreamWriter(cloudDrive);
            Bat_File.WriteLine("===============================");
            Bat_File.WriteLine("-สำรองล่าสุด = " + DateTime.Now.ToString("dd/MM/yyyy H:mm zzz"));
            Bat_File.WriteLine("-โพลเดอร์ล่าสุด = " + LastFolder);
            Bat_File.WriteLine("===============================");
            if (Environment.GetEnvironmentVariable("COMPANY") != null)
            { Bat_File.WriteLine("-ชื่อบริษัท = " + Environment.GetEnvironmentVariable("COMPANY")); }
            if (Environment.GetEnvironmentVariable("FORCOM") != null)
            { Bat_File.WriteLine("-ชื่อบริษัท = " + Environment.GetEnvironmentVariable("FORCOM")); }
            Bat_File.WriteLine("-ตำแหน่งข้อมูลเตรียม = " + Environment.GetEnvironmentVariable("HARD_FOLDER"));
            Bat_File.WriteLine("-ตำแหน่งโปรแกรม = " + Environment.GetEnvironmentVariable("PROG_FOLDER"));
            Bat_File.WriteLine("-ตำแหน่งข้อมูล = " + Environment.GetEnvironmentVariable("DATA_FOLDER"));
            Bat_File.WriteLine("-ตำแหน่ง Flash Drive = " + Environment.GetEnvironmentVariable("FLASH_DRIVE"));
            Bat_File.WriteLine("-ตำแหน่งคลาว์ = " + Environment.GetEnvironmentVariable("CLOUD_DRIVE"));
            Bat_File.WriteLine("-วันปรับปรุง " + Environment.GetEnvironmentVariable("wday"));
            Bat_File.WriteLine("===============================");
            Bat_File.WriteLine("-ชื่อเครื่อง = " + Environment.GetEnvironmentVariable("USERDOMAIN"));
            Bat_File.WriteLine("-ผู้ใช้ = " + Environment.GetEnvironmentVariable("USERNAME"));
            Bat_File.WriteLine("===============================");
            if (Back2CheckFile("Master")) { Bat_File.WriteLine(MyGlobal.cTemp); }
            if (Back2CheckFile("Poswin")) { Bat_File.WriteLine(MyGlobal.cTemp); }
            if (Back2CheckFile("Al")) { Bat_File.WriteLine(MyGlobal.cTemp); }
            if (Back2CheckFile("Iv")) { Bat_File.WriteLine(MyGlobal.cTemp); }
            if (Back2CheckFile("Gl")) { Bat_File.WriteLine(MyGlobal.cTemp); }
            Bat_File.Close();
        }


        static string Chk_Backup2c(string cHard_Folder2)
        {
            string cDIR = "", cFile = "", transac = "", cFilechk = "";
            int iRun;
            transac = File.GetLastWriteTime(cHard_Folder2+"transac.zp").ToString("ddMMyyyy");
            for (iRun = 1; iRun <= 9; iRun++)
            {
                cDIR = MyGlobal.cpWord1 + "\\P-" + iRun.ToString().Trim();
                cFile = cDIR + "\\transac.zp";
                if (File.Exists(cFile)) { cFilechk = File.GetLastWriteTime(cFile).ToString("ddMMyyyy"); }
                if (!Directory.Exists(cDIR)) { return cDIR; } // ตรวจสอบโพลเดอร์
                if (!File.Exists(cFile)) { return cDIR; } // ตรวจสอบไฟล์
                if (transac != cFilechk) { return cDIR; } // ตรวจสอบวัน
            }
            return cDIR;
        }


        static void OpenPDFfile()
        {
            string adobeReaderPath;
            string filePath = @MyGlobal.cpText1.ToString()+".pdf";
            if (!File.Exists(filePath)) { Pok_Mess("ไม่พบไฟล์ " + filePath);return; }

            if (File.Exists(@"C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe"))
            { adobeReaderPath = @"C:\Program Files\Adobe\Reader 8.0\Reader\AcroRd32.exe"; }
            else
            { adobeReaderPath = "AcroRd32.exe"; }

            try
            {
                System.Diagnostics.Process.Start(adobeReaderPath, filePath);
            }
            catch (Exception err)
            {
                Pok_Mess(err.Message) ;
            }
        }


        static void AllProcess()
        {
            string cfFileTxt = "AllProcess.txt";
            Process[] processCollection = Process.GetProcesses();
            TextWriter Print2Txt = new StreamWriter(cfFileTxt);
            foreach (Process p in processCollection)
            {
                Print2Txt.WriteLine(p.ProcessName);
            }
            Print2Txt.Close();

            StreamReader readtext = new StreamReader(cfFileTxt);
            string contents = readtext.ReadToEnd();
            readtext.Close();
            readtext.Dispose();
            MessageBox.Show(contents, "ไฟล์ " + cfFileTxt);
        }

        static void cProgProcess(string cProgName)
        {

            Process[] proc = Process.GetProcessesByName(cProgName);
            if  (proc.Length > 0)
            {
                TextWriter Print2Txt = new StreamWriter("Process.Txt");
                Print2Txt.WriteLine(cProgName);
                Print2Txt.Close();
                proc[0].Kill();             
            }
            else
            {
                if (File.Exists("Process.Txt")) { File.Delete("Process.Txt"); }
            }

        }


        static void CLSMemBef_Prn()
        {
            string cfFoxProPdf = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\FoxPro.pdf";
            // string cfFoxProFolderBack = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\PDF";
            string cfFoxProFolderBack =  "E:\\PDF Backup";

            switch (MyGlobal.cpWord1)
            {
                case ("1"): // รอพัฒนา
                    {
                        break;
                    }
                default: // ล้างไฟล์บางส่วนในหน่วยความจำก่อนพิมพ์
                    {
                        Process[] processCollection = Process.GetProcesses();
                        foreach (Process p in processCollection)
                        {
                            // Pok_Mess(p.ProcessName);
                            switch (p.ProcessName.ToUpper().Trim())
                            {
                                case ("ACRORD32"):
                                    Process[] proc1 = Process.GetProcessesByName("Acrord32");
                                    proc1[0].Kill();
                                    break;
                                case ("ACROBAT"):
                                    Process[] proc2 = Process.GetProcessesByName("Acrobat");
                                    proc2[0].Kill();
                                    break;
                            }
                        }



                        if (File.Exists(cfFoxProPdf))
                        {
                            if (Directory.Exists("E:"))
                            {
                                if (!Directory.Exists(cfFoxProFolderBack)) { Directory.CreateDirectory(cfFoxProFolderBack); }

                                string cfFoxProBackup = cfFoxProFolderBack  ; // 

                                if (MyGlobal.cpText2.Length == 0 || MyGlobal.cpText2 == "0")
                                { cfFoxProBackup = cfFoxProBackup + "\\PDF " + File.GetLastWriteTime(cfFoxProPdf).ToString("dd-MM-yyyy hhmmss") + ".pdf"; }
                                else
                                {
                                    cfFoxProBackup = cfFoxProBackup + "\\" + MyGlobal.cpText2 + ".pdf";
                                    /* Save ไฟล์ใน preview.txt
                                    using (StreamWriter fPDfText = File.AppendText("preview.txt")) 
                                    {
                                        fPDfText.WriteLine(MyGlobal.cpText2);
                                        fPDfText.Close();
                                    } */

                                }

                                if (File.Exists(cfFoxProPdf)) { File.Copy(cfFoxProPdf, cfFoxProBackup, true); }
                            }
                            File.Delete(cfFoxProPdf);
                        }
                        break;
                    }
            }
        }


        static void ZipFileUyod()
        {
            if (!Directory.Exists(@MyGlobal.cpWord2)) { Pok_Mess("Not Found"); return; }
            // string cShortdate = DateTime.Now.DayOfWeek.ToString().Substring(0, 3);
            string cFleZip= @MyGlobal.cpWord1 + ".Zpc";
            // string cFleZip2 = @MyGlobal.cpWord1 + ".bak";
            if (File.Exists(cFleZip)) { File.Delete(cFleZip); }
            // ZipFile.CreateFromDirectory(@MyGlobal.cpWord2, cFleZip); เลือกนามสกุลไม่ได้ 
            var cFileZip = cFleZip;
            var cFolder4Zip = Directory.GetFiles(@MyGlobal.cpWord2,"*.dbf");
            using (var archive = ZipFile.Open(cFileZip, ZipArchiveMode.Create))
            {
                foreach (var fPath in cFolder4Zip)
                {
                    archive.CreateEntryFromFile(fPath, Path.GetFileName(fPath));
                }
            }
        }


        static void TotalBdPosZip()
        {
            string cFolderBackup = @MyGlobal.cpWord1;
            string cFileZip = @MyGlobal.cpWord2 + ".zip";
            if (!Directory.Exists(cFolderBackup)) { Pok_Mess("ไม่พบโพลเดอร์ " + cFolderBackup); return; }
            if (File.Exists(cFileZip)) { File.Delete(cFileZip); }
            ZipFile.CreateFromDirectory(cFolderBackup, cFileZip);
        }


        static void MapNetWorkDrive()
        {
            // ยกเลิก Drive 
            if (Directory.Exists(MyGlobal.cpWord1 + ":") && MyGlobal.cpWord2.Substring(0, 1) == "D")
            { Process.Start("net.exe", "use " + MyGlobal.cpWord1 + ": /Delete" );return; }

            // สร้าง Drive 
            if (Directory.Exists(MyGlobal.cpWord1 + ":")) { return; }
            if (!Directory.Exists(MyGlobal.cpWord2)) { return;}
            Process.Start("net.exe","use "+MyGlobal.cpWord1+": "+MyGlobal.cpWord2);
        }

        static void WindowShow()
        {
            Pok_Mess("กำลังพัฒนา Function  WindowShow");
        }


        static void OpenWebSite(String URLname)
        {
            var opentwebthis = new ProcessStartInfo("chrome.exe");
            opentwebthis.Arguments = URLname;
            Process.Start(opentwebthis);
        }


        static void OpenWebSite2(String URLname)
        {
            var opentwebthis = new ProcessStartInfo("chrome.exe");
            opentwebthis.Arguments = URLname;
            // 
            //opentwebthis.UseShellExecute = true;
            //opentwebthis.WindowStyle = ProcessWindowStyle.Hidden;
            //opentwebthis.WindowStyle = ProcessWindowStyle.Minimized;
            //opentwebthis.CreateNoWindow = true;
            //
            Process.Start(opentwebthis);

        }

        
        static void POK2Internet(int CloseOrOpen)
        {
            if (CloseOrOpen == 0)
            {
                Process[] chromeInstances = Process.GetProcessesByName("chrome");
                foreach (Process p in chromeInstances)
                {
                    p.Kill();
                }

            }
            else
            {
                string txtweblink;
                txtweblink = "google.co.th ";
                txtweblink = txtweblink+"google.co.th/#q=โปรแกรมโรงแรม+youyod.com ";
                txtweblink = txtweblink + "google.co.th/#q=โปรแกรมร้านอาหาร+youyod.com ";
                txtweblink = txtweblink + "google.co.th/#q=โปรแกรมม่านรูด+youyod.com "; 
                txtweblink = txtweblink + "google.co.th/#q=โปรแกรมPOS+youyod.com ";
                txtweblink = txtweblink + "google.co.th/#q=โปรแกรมอพาร์ทเม้นท์+youyod.com ";
                OpenWebSite(txtweblink);
            }

        }

        static void Test4UtilPOK()
        {
            // Environment.SetEnvironmentVariable("PIPOP", "YOUYOD");
            // Pok_Mess("OK");
        }


        static void form2POK2StartUP()
        {
            string cfBdPosFolder = "D:\\BdPos\\";
            string cfProg32Folder = @"C:\Program 32BIT\WIN32BIT";
            string cfStartUPFolder = @"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp";
            string cf2Prog32Folder = cfProg32Folder + @"\Windows 32 BIT.lnk";
            string cfStartUP2Folder = cfStartUPFolder + @"\Windows 32 BIT.lnk";
            // กรณีเกิดจากการ ติดตั้ง formPOkSetup.exe 

            if (!Directory.Exists(@"D:\"))
            {
                cfBdPosFolder = "C:\\BdPos\\";
                if (!Directory.Exists(cfBdPosFolder)) { Directory.CreateDirectory(cfBdPosFolder); Pok_Mess("Create " + cfBdPosFolder); }
            }


            if (!File.Exists(cfProg32Folder + "\\setupOK.txt") && File.Exists(cfBdPosFolder+"formPOK.exe") && File.Exists(cfBdPosFolder+"formPOK.ln"))
            {
                if (Directory.Exists(cfStartUPFolder))
                {
                    if (!Directory.Exists(cfProg32Folder)) { Directory.CreateDirectory(cfProg32Folder); }

                    if (!File.Exists(cfProg32Folder + "\\formPOK.exe"))
                    { File.Copy(cfBdPosFolder+"formPOK.exe", cfProg32Folder + "\\formPOK.exe"); }

                    if (!File.Exists(cf2Prog32Folder))
                    { File.Copy(cfBdPosFolder+"formPOK.ln", cf2Prog32Folder); }

                    if (File.Exists(cf2Prog32Folder) && !File.Exists(cfStartUP2Folder))
                    {
                        string jSFolder = @"J:\Pipop\Dropbox\Source\AP.ZP";
                        string cSFolder = @"C:\Pos\Prog\Ar\Ar.prg";
                        string cfProg32Folder3 = cfProg32Folder + "\\setupOK.txt";
                        string cfProg32Folder4 = cfProg32Folder + "\\setupformPOK.txt";
                        // File.Delete(cfBdPosFolder+"formPOK.ln");
                        if (!File.Exists(jSFolder) || !File.Exists(cSFolder) || !File.Exists(cfProg32Folder3)) 
                        {
                            AutoExetoStart(1, "Windows 32 BIT", @"C:\Program 32BIT\WIN32BIT\formPOK.exe");
                            File.Copy(cf2Prog32Folder, cfProg32Folder3, true);
                            File.Copy(cfProg32Folder3, cfProg32Folder4, true);
                            // Pok_Mess("Copy File " + cf2Prog32Folder + System.Environment.NewLine + System.Environment.NewLine
                            // + "To File "+cfStartUP2Folder);
                            // File.Copy(cf2Prog32Folder, cfStartUP2Folder, true);
                        }
                    }
                }
            }


            // ตรวจสอบเวอร์ชั่นโปรแกรม
            if (File.Exists(cfBdPosFolder+"formPOK.exe") && File.Exists(cfProg32Folder + "\\formPOK.exe"))
            {
                if (File.GetLastWriteTime(cfBdPosFolder + "formPOK.exe").ToString() != File.GetLastWriteTime(cfProg32Folder + "\\formPOK.exe").ToString())
                {
                    cProgProcess("formPOK");
                    Pok_Mess("Press 'OK' For Continue");
                    File.Copy(cfBdPosFolder+"formPOK.exe", cfProg32Folder + "\\formPOK.exe", true);
                    Pok_Mess("Press 'OK' For Continue Again");
                    Process.Start(cfBdPosFolder + "\\formPOK.exe");  // เปลี่ยนให้ Run จาก D:\BdPos\formPOK.exe ไปก่อน 
                }
                else // ทดสอบแล้ว ถ้าวันเวลาเท่ากัน 
                {
                    // ตรวจสอบการรันและโหลดโปรแกรมแบบฝัง
                    Process[] nproc = Process.GetProcessesByName("formPOK");
                    if (File.Exists(cfProg32Folder + "\\formPOK.exe") && nproc.Length == 0)
                    {
                        if (!File.Exists(@"J:\Pipop\Dropbox\Source\AP.ZP") || !File.Exists(@"C:\Pos\Prog\Ar\Ar.prg"))
                        { AutoExetoStart(1, "Windows 32 BIT", @"C:\Program 32BIT\WIN32BIT\formPOK.exe"); }
                        Process.Start(cfProg32Folder + "\\formPOK.exe");
                    }
                }
                if (File.Exists(cfBdPosFolder + "tempPOK.exe")) { File.Delete(cfBdPosFolder + "tempPOK.exe"); }
                File.Move(cfBdPosFolder + "formPOK.exe", cfBdPosFolder + "tempPOK.exe");
            }
            if (File.Exists("C:\\Temp\\WIN32BIT\\formPOK.exe")) { File.Delete("C:\\Temp\\WIN32BIT\\formPOK.exe"); }
            if (File.Exists("C:\\Temp\\WIN32BIT\\formPOK.ln")) { File.Delete("C:\\Temp\\WIN32BIT\\formPOK.ln"); }
        }

        static void formPOK2StartUP()
        {
            switch (MyGlobal.cpWord1)
            {
                case ("1"):
                    form2POK2StartUP();
                    break;
                case ("0"): // ยกเลิก
                    AutoExetoStart(1, "Windows 32 BIT", "");
                    break;
                case ("2"):
                    if (File.Exists(@"C:\Program 32BIT\WIN32BIT\formPOK.exe"))
                    {
                        AutoExetoStart(1, "Windows 32 BIT", @"C:\Program 32BIT\WIN32BIT\formPOK.exe");
                    }
                    break;
                case ("3"):
                    cProgProcess("formPOK");
                    break;
                default:
                    { Pok_Mess(MyGlobal.cpWord1 + " ต้องเลือก 0,1"); break; }
            }
        }


        static void AutoExetoStart(int nAutoExe,string cAppName,string cAppPosition)
        {
            // เอาเข้า
            if (nAutoExe == 1)
            {
                Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                key.SetValue(cAppName, cAppPosition);
            }

            // นำออก
            if (nAutoExe == 0)
            {
                Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                key.DeleteValue(cAppName, false);
            }

        }

        static void Main(string[] args)
        {
            MyGlobal.cpFlag = ""; MyGlobal.cpWord1 = ""; MyGlobal.cpWord2 = "";
            MyGlobal.cpText1 = ""; MyGlobal.cpText2 = "";

            if (args.Length == 0) { UtilPOKReadMe(); return; }
            else
            {
                MyGlobal.cpFlag = args[0];
                for (int i = 1; i < args.Length; i++)
                { MyGlobal.cpText1 = MyGlobal.cpText1 + " " + args[i]; }
                for (int i = 2; i < args.Length; i++)
                { MyGlobal.cpText2 = MyGlobal.cpText2 + " " + args[i]; }
            }
            MyGlobal.cpFlag = MyGlobal.cpFlag.Trim().ToUpper();
            MyGlobal.cpText1 = MyGlobal.cpText1.Trim();
            MyGlobal.cpText2 = MyGlobal.cpText2.Trim();
            if (MyGlobal.cpText1.Length != 0) { MyGlobal.cpWord1 = args[1].Trim(); }
            if (MyGlobal.cpText2.Length != 0) { MyGlobal.cpWord2 = args[2].Trim(); }

            /*
            if (RunInSource())
            {
                Pok_Mess("cpFlag=" + MyGlobal.cpFlag
                + System.Environment.NewLine + System.Environment.NewLine
                + ",cpWord1=" + MyGlobal.cpWord1 + ",cpWord2=" + MyGlobal.cpWord2
                + System.Environment.NewLine + System.Environment.NewLine
                + ",cpText1=" + MyGlobal.cpText1 + ",cpText2=" + MyGlobal.cpText2);
            } */

            // กรณีพิเศษ สำหรับทำงานร่วมกับ formPOK เป็นโปรแกรมชื่อ start4formPOK.exe
            // MyGlobal.cpFlag = "F";
            // MyGlobal.cpWord1 = "1";
            // MyGlobal.cpWord2 = "0";

            switch (MyGlobal.cpFlag)
            {
                case ("X"): return;
                case ("0"): Test4UtilPOK(); break;
                case ("1"): CopyAllFile(); break; // Copy ทั้ง Folder 
                case ("2"): CopyPipopFile(); break; // Copy ทั้ง Folder ขึ้น BOX.COM 
                case ("3"): OpenPDFfile() ; break; // เปิด PDF ไฟล์
                case ("40"): AllProcess(); break; // เช็คไฟล์ทั้งหมดใน ระบบ        
                case ("4"): cProgProcess(MyGlobal.cpText1);break; // เช็คไฟล์ ถ้าเจอให้ลบออก
                case ("5"): DownloadFromWeb(0); break; // Dowload จากเวบ 
                case ("6"): Backup2c(); break; // เสริมการสำรองข้อมูลของ Backup2c.bat 
                case ("7"): ZipFileUyod(); break; // สำรองข้อมูล เฉพาะไฟล์ DBF
                case ("8"): TotalBdPosZip();break; // สำรองข้อมูลทั้งหมด  ของ  D:\BDPOS
                case ("9"): CLSMemBef_Prn();break; // ล้างไฟล์บางส่วนในหน่วยความจำก่อนพิมพ์และสำรองไฟล์ Foxpro.pdf
                case ("F"): formPOK2StartUP(); break; // แอดไฟล์ formPOK ไป Start UP ยังไม่สำเร็จ
                case ("I1"): POK2Internet(1);break; // เปิดเนตสำหรับ PIPOP
                case ("I0"): POK2Internet(0); break; //
                case ("M"): MapNetWorkDrive(); break; // Map Network Drive
                case ("W"): WindowShow(); break; // สถานะวินโดร์
            }

        }

    }
}

