일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 리눅스
- 할일이 많다
- 설계
- tcp클라이언트
- 캐드 꿀팁
- C#
- toy_project
- 근태 자동
- 마리아 db
- maria db
- 스마트팜
- 날씨 프로그램
- 지각하면 안됨
- 집 제어
- 라즈베리파이
- todolist 응용어플리케이션
- todolist앱
- 토이 프로젝트
- 파이썬
- string길이
- 토이프로젝트
- 기상청 api
- EFECS
- 날씨 및 온도 제어
- PYTHON
- string 한계
- string 초기화
- 한글 표시 안됨
- mysql
- r.h_jeong
- Today
- Total
경험을 통해서
[Toy.Project] 자동 근태 등록 프로그램 만들기 (1) 본문
항상 그렇지만 뭔가를 만드는 건 재미가 있어야 끝까지 간다.
그 재밌는 걸 찾는게 힘들더라고...
그래서 생각한
근태 자동화
먼저 방법을 찾아보자~
생각보다 간단할 수 있지만 예외 컨트롤이 제일 어려움....
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부작이면 만들어지지 않을까?? 생각 하고 있음다~~
'Coding Diary > C,C++,C#' 카테고리의 다른 글
[C#] TCP 통신 뜯어보기 1탄 (0) | 2025.01.19 |
---|---|
MQTT를 너무 믿은 점.. (오류 편) (0) | 2024.09.18 |
Thread 파라미터 전달하기(왜 이걸 이제 알았을까...) (0) | 2024.08.29 |
스레드 간섭 간 생긴 일 1편 (1) | 2024.08.20 |
[C#] 클라이언트 재연결 및 수신 프로그램 만들기 (2) | 2023.06.16 |