경험을 통해서

[Toy.Project] 자동 근태 등록 프로그램 만들기 (1) 본문

Coding Diary/C,C++,C#

[Toy.Project] 자동 근태 등록 프로그램 만들기 (1)

할일이 많다 2024. 10. 25. 16:56

항상 그렇지만 뭔가를 만드는 건 재미가 있어야 끝까지 간다.

그 재밌는 걸 찾는게 힘들더라고...

 

그래서 생각한

 

 근태 자동화

 

먼저 방법을 찾아보자~

 

생각보다 간단할 수 있지만 예외 컨트롤이 제일 어려움....

 

1. 우리 회사 근태 등록은 컴퓨터에서 진행함(그래서 가능함)

 

 

 

 

저거 아이콘까지 보면 무슨 프로그램 쓰는 거 알거 같아서 모자이크로 가림

 

회사 내부망에서만 접근 가능한 메신저~!~

 

접근 방식은 다음과 같다:

1.

  • 근태 프로그램이 켜져 있는 걸 감지하고 winstate를 FHD로 만든다
  • 그럼 화면 내에 근태 단어를 찾는다
  • 근태를 클릭한다
  • 그리고 추가로 뜨는 화면에서 출근을 클릭한다.

2.

  • 1번과 처음 메신저창을 FHD로 만드는 건 같다
  • 마우스의 위치를 조정한다(멀티 윈도우지만 무조건 근태 프로그램을 메인 화면에 키는게 중요함)
  • 그렇게 되면 근태 버튼의 위치가 무조건 정해진다.
  • 그럼 커서 좌표만 fix 시키면 되지 않을까....(좀더 정확하게 하고 싶으면 화면 글씨를 읽으면 되긴함..)

약간 플로우 짜는 것들은 좀 연습할 필요가 있을 거 같다라는 생각을 항상 하고 있음

 

 

이제 시작~

 

이번 포스팅에서는 좌표 값 찾는 프로그램만 만들어 본다~

(소스코드는 일부만 공개~/어렵지도 않아서 뭐...)

 

 

 

이런식으로 opacity를 한 50%?? 정도로 둔 후 좌측 상단의 richtextbox에 좌표값이 클릭할 때마다 값들이 기입이 되도록 해놨다...

 

opacity를 건드리는 이유는 그래도 근태가 어딨는지 찍을 수는 없으니까??..??

 

추가적인 사항은 

 

 

이런식으로 중앙에 방금 클릭한 값이 무엇인지 기입할 수 있게 해놨음~

 

 

그래서 얻은 값들

 

근태 => X: 34|| Y:704
출근 => X: 944|| Y:473
퇴근 => X: 1140|| Y:479
출근시간 X  => X: 921|| Y:404
출근 시간 Y  => X: 1023|| Y:430

 

    //원하는 이벤트 전달
    int Tick = 0;

    [DllImport("user32.dll")]
    static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);

    private const uint MOUSEEVENTF_LEFTDOWN = 0x0002;      // The left button is down.
    private const uint MOUSEEVENTF_LEFTUP = 0x0004;        // The left button is up.


    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {


        Timer timCursor = new Timer();            
        timCursor.Interval = 10;
        timCursor.Tick += (s, w) =>
        {
            label1.Text = Cursor.Position.X.ToString();
            label2.Text = Cursor.Position.Y.ToString();
            label4.Text = $"{this.Height}";
            label3.Text = $"{this.Width}";

        };
        timCursor.Start();
    }

    private void Form1_Click(object sender, EventArgs e)
    {
        MenuName MNSET = new MenuName();
        MNSET.CURSOR_X = label1.Text;
        MNSET.CURSOR_Y = label2.Text;
        MNSET.ShowDialog();
        if (MNSET.CHECKED)
        {
            richTextBox1.AppendText($"{MNSET.NAME}\n");
        }
        
    }

 

그렇게 어렵지는 않겠죵??~~

 

일단 좌표를 얻는 데 성공~~

2탄부터는 본격적으로 예외처리와 근태자동화를 만들어 봅시다

 

한.. 3부작이면 만들어지지 않을까?? 생각 하고 있음다~~