private void StockCalc_Load(object sender, EventArgs e)
        {
            //핫키 등록
            RegisterHotKey((int)this.Handle, 0, 1, (int)Keys.Z);  //Alt+Z
            RegisterHotKey((int)this.Handle, 1, 1, (int)Keys.Q);  //Alt+Q  // 프로그램 끌 때, 해제해줘야 함.

            //프로그램이 이미 실행되어 있으면 죽이기
            if (fnKillProcess())
            {
                return;
            }

            //전역변수 초기화하기.(FTP,Option)
            fnInitVar();


            //FTP 동기화
            if (mSyncYN)
            {
                fnFTPDownSync();
            }

            //파일 동기화 후, Contents.db에 대한 해쉬값을 가지자.
            mMD5 = Network.GetMD5(@".\Contents.db");
        }
        /// 서버랑 비교해서 로컬이 최신이면 업로드. 프로그램 종료 시.
        private void fnFTPUpSync()
        {
            //파일을 수정했으면 날짜를 기록
            if (mMD5 != Network.GetMD5(@".\Contents.db"))
            {
                Network.WriteIniFile("FileTouchDate", "Date", fnGetFileDate(@".\Contents.db").ToString("yyyyMMddHHmmss"), @".\setting.ini");
            }

            //ftp연결이 안되어있을 경우 빠져나오자.
            if (!mFtpCon)
            {
                return;
            }

            DateTime dtTouchDate = DateTime.ParseExact(Convert.ToString(Network.ReadIniFile("FileTouchDate", "Date", @".\setting.ini")), "yyyyMMddHHmmss", null);

            //처음 파일날짜와 비교해서 변경이 있을 경우
            //&& 서버의 날짜보다 더 최신일 경우(다른 클라가 업로드한 경우도 있으므로 체크한다) 업로드 한다.
            if (dtTouchDate > mServerVerDate || mServerVerDate.Year == 1)
            {
                if (MessageBox.Show("로컬의 파일이 최신입니다.\r\n서버에 업로드 하시겠습니까?", "파일 동기화", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    /* 업로드 전 서버에 백업 */
                    // 3이 있으면 지우고, 2가 있으면 3으로, 1이 있으면 2로, 원본만 있으면 1로
                    string strRe = "";

                    strRe = Network.FtpDel(mAddress, mID, mPW, "Contents_Bak3.db");

                    if (strRe != "")
                    {
                        MessageBox.Show(strRe);
                        MessageBox.Show("업로드 실패");
                        return;
                    }

                    strRe = Network.FtpRename(mAddress, mID, mPW, "Contents_Bak2.db", "Contents_Bak3.db");

                    if (strRe != "")
                    {
                        MessageBox.Show(strRe);
                        MessageBox.Show("업로드 실패");
                        return;
                    }

                    strRe = Network.FtpRename(mAddress, mID, mPW, "Contents_Bak1.db", "Contents_Bak2.db");

                    if (strRe != "")
                    {
                        MessageBox.Show(strRe);
                        MessageBox.Show("업로드 실패");
                        return;
                    }

                    strRe = Network.FtpRename(mAddress, mID, mPW, "Contents.db", "Contents_Bak1.db");

                    if (strRe != "")
                    {
                        MessageBox.Show(strRe);
                        MessageBox.Show("업로드 실패");
                        return;
                    }

                    string strResult = Network.FtpUp(mAddress, mID, mPW, "Contents.db");
                    if (strResult != "")
                    {
                        MessageBox.Show(strResult);
                    }

                    //동기화를 성공했을 경우 서버에 날짜 올림
                    else
                    {
                        fnWriteVer(dtTouchDate.ToString("yyyyMMddHHmmss"));
                        strResult = Network.FtpUp(mAddress, mID, mPW, "ver.ps");
                        if (strResult != "")
                        {
                            MessageBox.Show("ver.ps 업로드 실패 : " + strResult);
                        }
                    }
                }
            }
        }