case1)
Application.Exit();

case2)
System.Diagnostics.Process.GetCurrentProcess().Kill();

 

 

# DispatcherTimer  활용사례

using System;
using System.Windows.Threading;
using Systehttp://m.Windows.Forms;
using System.Timers;
using System.IO;

namespace APM
{
    public partial class APMMain : Form
    {
        private DispatcherTimer displayTimer1 = new DispatcherTimer(); //유가
        private DispatcherTimer displayTimer2 = new DispatcherTimer(); //코스닥
        private DispatcherTimer displayTimer3 = new DispatcherTimer(); //파생
        private DispatcherTimer displayTimer4 = new DispatcherTimer(); //채권

        private int sec1, sec2, sec3, sec4;


        public APMMain()
        {
            InitializeComponent();

            InitControl();
        }
        void InitControl()
        {
            

            displayTimer1.Interval = TimeSpan.FromSeconds(interval);
            displayTimer1.Tick += new EventHandler(displayTimer_Tick);
            sec1 = 0;
            displayTimer2.Interval = TimeSpan.FromSeconds(interval);
            displayTimer2.Tick += new EventHandler(displayTimer_Tick);
            sec2 = 0;
            displayTimer3.Interval = TimeSpan.FromSeconds(interval);
            displayTimer3.Tick += new EventHandler(displayTimer_Tick);
            sec3 = 0;
            displayTimer4.Interval = TimeSpan.FromSeconds(interval);
            displayTimer4.Tick += new EventHandler(displayTimer_Tick);
            sec4 = 0;

            displayTimer1.Start();
            displayTimer2.Start();
            displayTimer3.Start();
            displayTimer4.Start();

            
        }

        void displayTimer_Tick(object sender, EventArgs e)
        {
            if ((sender as DispatcherTimer).Equals(displayTimer1))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec1++);
                timer1.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer2))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec2++);
                timer2.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer3))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec3++);
                timer3.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }

            else if ((sender as DispatcherTimer).Equals(displayTimer4))
            {
                TimeSpan t = TimeSpan.FromSeconds(sec4++);
                timer4.Text = string.Format("{0:D2}:{1:D2}", t.Minutes, t.Seconds);
            }
        }

        #region WndProc
        protected override void WndProc(ref Message m)
        {

            switch (m.Msg)
            {
                default:
                    break;
            }
            base.WndProc(ref m);
        }
        #endregion   

        public void SetRegin()
        {
            //
        }
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x02000000;
                return cp;
            }
        }
    }
}

/*
KEYPOINT) DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
*/


using System;
using System.Timers;
using System.IO;


class Program
{
    public static void Main()
    {
        CHKNMNM nmm = new CHKNMNM();
        nmm.CALCCHK();
        nmm.REALCHK();
        nmm.DISPCHK();
    }
}

class CHKNMNM
{
    string[] HOLIDAY = new string[]
    {
        "2024-01-01",
        "2024-02-09",
        "2024-02-12",
        "2024-03-01",
        "2024-04-10",
        "2024-05-01",
        "2024-05-06",
        "2024-05-15",
        "2024-06-06",
        "2024-08-15",
        "2024-09-16",
        "2024-09-17",
        "2024-09-18",
        "2024-10-03",
        "2024-10-09",
        "2024-12-25",
    };
    string[] HOLIDAYNM = new string[]
    {
        "2024-01-01(신정)",
        "2024-02-09(구정)",
        "2024-02-12(구정)",
        "2024-03-01(삼일절)",
        "2024-04-10(선거일)",
        "2024-05-01(노동절)",
        "2024-05-06(어린이날대체)",
        "2024-05-15(부처님오신날)",
        "2024-06-06(현충일)",
        "2024-08-15(광복절)",
        "2024-09-16(추석)",
        "2024-09-17(추석)",
        "2024-09-18(추석)",
        "2024-10-03(개천절)",
        "2024-10-09(한글날)",
        "2024-12-25(크리스마스)",
    };
    string[] YOIL = new string[]
    {
    "MONDAY",
    "TUESDAY",
    "WEDNESDAY",
    "THURSDAY",
    "FRIDAY",
    "SATURDAY",
    "SUNDAY",
    };
    string[] RANDOMNM = new string[]
    {
    "CHO","PARK","JIN",
    };
    string CHKDateFormat = "yyyy-MM-dd";

    const int MAX_CNT = 1024;
    string[] CHKNM = new string[MAX_CNT];
    string[] CHKDT = new string[MAX_CNT];
    string[] CHKYO = new string[MAX_CNT];
    string[] CHKRM = new string[MAX_CNT];

    string MANUAL_DT = "20230101121212";

    public void CALCCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
        int day = 0;
        int mm = 0;
        int kk = 0;

        DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);

        DateTime calcnow;

        //POINT:CHKRM's INCREASE ITSELF
        //POINT:RANDOMNM's INCREASE ITSELF
        //POINT:CHKRM's INCREASE ITSELF
        //POINT:RANDOMNM's INCREASE ITSELF

        while (true)
        {
            calcnow = now.AddDays(day);
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) < 20231231)
            {
                day++;
                continue;
            }
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20250101) break;
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20231231) ii = 7;




            int check = 0;
            for (int ff = 0; ff < HOLIDAY.Length; ff++)
            {
                if (calcnow.ToString(CHKDateFormat) == HOLIDAY[ff])
                {
                    check = 100;
                    break;
                }
            }


            if (check == 0)
            {
                if (ii == 4) CHKRM[kk++] = RANDOMNM[mm++ % 3];
                else if (ii == 5) CHKRM[kk++] = RANDOMNM[mm++ % 3];
            }
            else
            {
                if (ii == 1) CHKRM[kk++] = "PARK";
                else if (ii == 2) CHKRM[kk++] = "JIN";
                else if (ii == 3) CHKRM[kk++] = "CHO";
                else if (ii == 4) CHKRM[kk++] = RANDOMNM[mm++ % 3];
                else if (ii == 5) CHKRM[kk++] = RANDOMNM[mm++ % 3];
            }

            day++;
            ii++;

            if (ii == 8) ii = 1;
        }
    }
    public void REALCHK()
    {
        int ii = 0; //(1-MON, 7-SUNDAY)
        int day = 0;
        int kk = 0;
        int sum = 0;

        DateTime now = DateTime.ParseExact(MANUAL_DT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
        DateTime calcnow;

        while (true)
        {
            calcnow = now.AddDays(day);
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) < 20231231)
            {
                day++;
                continue;
            }
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20250101) break;
            if (Convert.ToInt32(calcnow.ToString(CHKDateFormat).Replace("-", "")) == 20231231) ii = 7;




            int check = 0;
            for (int ff = 0; ff < HOLIDAY.Length; ff++)
            {
                if (calcnow.ToString(CHKDateFormat) == HOLIDAY[ff])
                {
                    check = 100;
                    break;
                }
            }


            if (check == 0)
            {
                if (ii == 1)
                {
                    CHKNM[sum] = "PARK";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 2)
                {
                    CHKNM[sum] = "JIN";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 3)
                {
                    CHKNM[sum] = "CHO";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 4)
                {
                    CHKNM[sum] = CHKRM[kk++];
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 5)
                {
                    CHKNM[sum] = CHKRM[kk++];
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 6)
                {
                    CHKNM[sum] = "HOLIDAY";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
                else if (ii == 7)
                {
                    CHKNM[sum] = "HOLIDAY";
                    CHKYO[sum] = YOIL[ii - 1];
                    CHKDT[sum] = calcnow.ToString(CHKDateFormat);
                }
            }
            else if (check == 100)
            {
                CHKYO[sum] = YOIL[ii - 1];
                CHKDT[sum] = calcnow.ToString(CHKDateFormat);

                int subcheck = 0;
                for (int ff = 0; ff < HOLIDAY.Length; ff++)
                {
                    if (CHKDT[sum] == HOLIDAY[ff])
                    {
                        CHKNM[sum] = HOLIDAYNM[ff];
                        subcheck = 100;
                        break;
                    }
                }
                if (subcheck == 0)
                {
                    CHKNM[sum] = "SPECIAL";
                }
            }

            day++;
            ii++;
            sum++;

            if (ii == 8) ii = 1;
        }
    }
    public void DISPCHK()
    {
        int kk = 0;
        int ____park_k = 0, ____jin_k = 0, ____cho_k = 0;

        while (true)
        {
            string dateTxt = "";
            string nameTxt = "";

            int check = 0;
            for (int ii = 0; ii < 7; ii++)
            {
                dateTxt += CHKDT[kk] + " ";
                nameTxt += CHKNM[kk] + " ";

                if (CHKNM[kk] == "PARK") ____park_k++;
                else if (CHKNM[kk] == "JIN") ____jin_k++;
                else if (CHKNM[kk] == "CHO") ____cho_k++;

                if (CHKDT[kk] == "2024-12-31")
                {
                    check = 100;
                    break;
                }

                kk++;
            }
            Console.WriteLine(dateTxt);
            Console.WriteLine(nameTxt);

            if (check == 100) break;
        }
    }
}







'c# 언어 > 초급과정' 카테고리의 다른 글

프로세스.종료  (0) 2024.03.16
DispatcherTimer 활용사례  (0) 2024.03.12
SetWindowLong 함수란 무엇인가  (0) 2024.01.30
Windows Form 실행시에 Message 순서출력  (0) 2024.01.06
공백여러개를 하나로 정리하기  (0) 2023.12.13

# SetWindowLong 함수란 무엇인가,mmmm
# SetWindowLong 함수란 무엇인가,mmmm

 


SetWindowLong 
LONG WINAPI SetWindowLong(
_In_HWND hWnd,
_In_int nIndex,
_In_LONG dwNewLong
);

지정된 윈도우의 속성을 변경합니다. 이 함수로 지정된 기능을 32bit 값으로 메모리에 추가합니다.
이 함수는 SetWindowLongPtr 함수로 대체 되었습니다.32bit, 64bit와 호환됩니다. 사용법은 같습니다.
이 함수는 SetWindowPos함수를 호출할때까지 적용되지 않습니다.

hWnd
변경을 원하는 윈도우의 핸들

nIndex
어느 설정을 변경 할 것인지 정해진 상수로 넣어줍니다.
GWL_STYLE - 새로운 윈도우 스타일을 설정합니다.
GWL_EXSTYLE - 새로운 확장 윈도우 스타일을 설정합니다.
GWL_HINSTANCE - 새 응용 프로그램 인스턴스 핸들을 설정합니다.
GWL_ID - 하위 윈도우의 새 식별자를 설정합니다. 창은 최상위 창이 될수없습니다.
GWL_USERDATA - 창과 관련된 사용자 데이터를 설정합니다. 이 값은 창을 만든 응용프로그램에서 사용하기 위한 값입니다. 초기 값은 0입니다.
GWL_WNDPROC - 윈도우 프로시저의 새주소를 설정합니다. 창이 호출한 스레도와 동일한 프로세스에 속하지 않으면 이 값은 변경 할수 없습니다.


Ex)
public static extern Int32 GetWindowLong(IntPtr hWnd, Int32 Offset);
[DllImport("user32.dll")]
public static extern Int32 SetWindowLong(IntPtr hWnd, Int32 Offset, Int32 newLong);
[DllImport("user32.dll")]

WindowStyle myStyle = (WindowStyle)style;
myStyle = myStyle & ~WindowStyle.WS_SYSMENU;
style = SetWindowLong(childForm.Handle, GWL_STYLE, (int)myStyle);

 

Windows Form 실행시에 Message 순서출력
Windows Form 실행시에 Message 순서출력, Windows Form 실행시에 Message 순서출력

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private IntPtr tailHandle = IntPtr.Zero;
        int index = 0;
        public Form1()
        {
            InitializeComponent();

            //this.Visible=false;
        }
        private void SendToTail(int index, string data)
        {
            tailHandle = APMApiPublic.FindWindow(null, "DEBUGDEBUGDEBUG");
            if (tailHandle != IntPtr.Zero && data.Length > 0 && APMApiPublic.IsWindow(tailHandle))
            {
                try
                {
                    byte[] dataByte = Encoding.UTF8.GetBytes(data);

                    APMApiPublic.COPYDATASTRUCT copyData = new APMApiPublic.COPYDATASTRUCT();
                    copyData.dwData = (IntPtr)0;
                    copyData.cbData = dataByte.Length;
                    copyData.lpData = Marshal.AllocHGlobal(dataByte.Length);
                    Marshal.Copy(dataByte, 0, copyData.lpData, dataByte.Length);

                    IntPtr sendData = Marshal.AllocHGlobal(Marshal.SizeOf(copyData));
                    Marshal.StructureToPtr(copyData, sendData, true);

                    IntPtr _result = APMApiPublic.SendMessage(tailHandle, APMApiPublic.WM_COPYDATA, (IntPtr)index, sendData);

                    Marshal.FreeHGlobal(copyData.lpData);
                    Marshal.FreeHGlobal(sendData);
                }
                catch (Exception exp)
                {
                    //MessageBox.Show(exp.Message);
                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SendToTail(1, "(Form1_Load)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            SendToTail(1, "(Form1_Shown)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_Enter(object sender, EventArgs e)
        {
            SendToTail(1, "(Form1_Enter)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_ForeColorChanged(object sender, EventArgs e)
        {
            SendToTail(1, "(Form1_ForeColorChanged)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            SendToTail(1, "(Form1_FormClosed)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_Activated(object sender, EventArgs e)
        {
            SendToTail(1, "(Form1_Activated)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            SendToTail(1, "(Form1_Paint)()()()()()[INDEX]:" + index.ToString("0000000"));
            index++;
        }
    }
}

public string SPACEPADDING(string strText)
{
    string specialToken = "#";
    string mmmText = strText.ToUpper();
    mmmText = mmmText.Replace(" ", specialToken );

    string mmmToken = "";
    for(int iii=20; iii >= 1; iii--)
    {
        mmmToken = "";
        for(int kkk=iii; kkk >= 1; kkk--)
        {
            mmmToken += specialToken ;
        }
        mmmText = mmmText.Replace(mmmToken, " ");
    }
    mmmText = mmmText.Replace( specialToken, " ");

    return mmmText;
}






using System;
using System.IO;

class Program
{
    public static void Main(string[] args)
    {
        CHKNM nmm = new CHKNM();
        nmm.RUNNING();
    }
}
class CHKNM
{
    int[] BGN_RATR_DT = new int[]
    {
        20211115,
20220515,
20221115,
20230515,
20231115,
    };
    int[] END_RATR_DT = new int[]
    {
        20220514,
20221114,
20230514,
20231114,
20241231,
    };
    double[] RATE_INFO_VALUE = new double[]
    {
        0.0346,
0.0402,
0.0507,
0.0586,
0.0612,
    };

    double GET_RATEINFO(int days)
    {
        double rc = 0;

        for(int ii=0; ii<BGN_RATR_DT.Length; ii++)
{
    if(days >= BGN_RATR_DT[ii] && days <= END_RATR_DT[ii])
    {
        rc = RATE_INFO_VALUE[ii];
break;
    }
}
return rc;         
    }  
    public void RUNNING()
    {
        int days = 0;

        double MIDDLE = 0;
        double FEE_DAY = 0;
        double FEE_SUM = 0;
        double RATEINFO = 0;

        string manualDT = "20211115120000";
        DateTime now = DateTime.ParseExact(manualDT, "yyyyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
       DateTime calcnow;

        while(true)
        {
             calcnow = now.AddDays(days);

             if(calcnow.ToString("yyyyMMdd") == "20211115") MIDDLE += 66048000;
             if(calcnow.ToString("yyyyMMdd") == "20220415") MIDDLE += 66048000;
             if(calcnow.ToString("yyyyMMdd") == "20220915") MIDDLE += 66048000;
             if(calcnow.ToString("yyyyMMdd") == "20230215") MIDDLE += 66048000;
             if(calcnow.ToString("yyyyMMdd") == "20230715") MIDDLE += 66048000;
             if(calcnow.ToString("yyyyMMdd") == "20231215") MIDDLE += 60000000;

             RATEINFO = GET_RATEINFO(Convert.ToInt32(calcnow.ToString("yyyyMMdd")));

             FEE_DAY = MIDDLE * RATEINFO / 365.0;
             FEE_SUM += FEE_DAY;

             Console.WriteLine(calcnow.ToString("yyyyMMdd") + " " + MIDDLE.ToString() + " " + RATEINFO.ToString("000.0000") + " " + 
    FEE_DAY.ToString("000000000.000") + " " + FEE_SUM.ToString("000000000.000"));

             if(calcnow.ToString("yyyyMMdd") == "20240701") break;

            days++;
        }
    }
}



 

//Array를 Object로 변환해서, 한번에 Row에 출력하기.혹은 저장하기

/*
string n = "1234";

Method.1
int outValue = Convert.ToInt32(n);

Method.2
int outValue = int.Parse(n);

Method.3
int outValue;
int.TryParse(n, out outValue);
*/


class Program
{
    static void Main(string[] args)
    {
        Application.Run(new NMNM());
    }
}

public class NMNM : Form
{
    private DataGridView control_datagridview;

    public NMNM()
    {
        DESIGN();
        DATA();
    }

    void DESIGN()
    {
         control_datagridview = new DataGridView();

         control_datagridview.Dock = DockStyle.Fill;
         control_datagridview.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
         control_datagridview.MultiSelect = false;
         control_datagridview.Location = new Point(362, 150);
         control_datagridview.Name = "control_datagridview";
         control_datagridview.Size = new Size(240, 150);
    }
    void DATA()
    {

        List<string> AuthorList = new List<string>();

         AuthorList.Add("Mahesh Chand");
         AuthorList.Add("Praveen Kumar");
         AuthorList.Add("Raj Kumar");
         AuthorList.Add("Nipun Tomar");
         AuthorList.Add("Dinesh Beniwal");

         control_datagridview.Rows.AddItem(AuthorList.ToArray());
    }
}

+ Recent posts