Go 13

[Go] Windows API - 창 상태 제어

ShowWindow API로 창을 최대화, 최소화, 숨기기 창을 최소화, 최대화, 숨기기, 복원할 수 있습니다.윈도우 핸들을 사용해서 창의 표시 상태를 변경합니다. func ShowWindow(mod *syscall.LazyDLL, hWnd uintptr, nCmdShow int32) { proc := mod.NewProc("ShowWindow") proc.Call(hWnd, uintptr(nCmdShow))}func callShowWindow() { mod := syscall.NewLazyDLL("user32.dll") hWnd := window.FindWindows(mod) window.ShowWindow(mod, hWnd, 3)} ShowWindow 플래그 값0 → SW_HIDE: 창 숨기기3 → ..

Go/window_api 2025.03.05

[Go] Windows API - 창 위치/크기 조정

윈도우 핸들을 사용해서 창의 위치, 크기, Z-Order(창 순서) 등을 바꿉니다. package windowimport ( "syscall" "unsafe")func FindWindows(mod *syscall.LazyDLL) uintptr { proc := mod.NewProc("FindWindowW") className := syscall.StringToUTF16Ptr("Notepad") hWnd, _, err := proc.Call(uintptr(unsafe.Pointer(className)), 0) if hWnd == 0 { panic(err) } return hWnd}func SetWindowPosition(mod *syscall.LazyDLL, hWnd uintptr, x, y, width..

Go/window_api 2025.03.05

[Go] Windows API - 마우스, 화면, 시스템 상태까지 확인

앞에서 배운 걸 조합현재 마우스 위치 → 팝업 창으로 표시화면 해상도 → 팝업 창으로 표시추가 아이디어: 시스템 가동 시간 → 팝업 창으로 표시 (GetTickCount API 사용)package mainimport ( "fmt" "syscall" "unsafe")var ( user32 = syscall.NewLazyDLL("user32.dll") kernel32 = syscall.NewLazyDLL("kernel32.dll") ptr *POINT = &POINT{})type POINT struct { X, Y int32}func main() { // step 0: message box messageProc := user32.NewProc("MessageBoxW") // step 1: get the ..

Go/window_api 2025.03.05

[Go] Windows API - 시스템 해상도 가져오기

package mainimport ( "fmt" "syscall")func main() { // user32.dll 불러오기 mod := syscall.NewLazyDLL("user32.dll") proc := mod.NewProc("GetSystemMetrics") // 화면 너비와 높이 가져오기 screenWidth, _, _ := proc.Call(0) // SM_CXSCREEN: 화면 너비 screenHeight, _, _ := proc.Call(1) // SM_CYSCREEN: 화면 높이 // 해상도 출력 fmt.Printf("Screen Resolution: %dx%d\n", screenWidth, screenHeight)} 설명GetSystemMetrics → 시스템 관련 값 가져오는 AP..

Go/window_api 2025.03.05

[Go] Windows API - 메시지 박스

package mainimport ( "syscall" "unsafe")func main() { // user32.dll 불러오기 mod := syscall.NewLazyDLL("user32.dll") proc := mod.NewProc("MessageBoxW") // MessageBox 호출 proc.Call( 0, // 부모 윈도우 핸들 (0이면 없음) uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Hello, Windows API!"))), // 메시지 내용 uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Go Windows API Test"))), // 창 제목 0, // 버튼 종류 (0: OK 버튼) )} 설..

Go/window_api 2025.03.05

[Go] Windows API 기본 개념, DLL, 시스템 호출, 메시지 루프,Handle

Windows API 기본 개념Windows API는 Windows 운영체제가 제공하는 강력한 기능을 애플리케이션에서 사용할 수 있도록 돕는 함수들의 집합이걸 잘 다루면, 윈도우 시스템을 더 깊이 이해하고 제어함  1. DLL (Dynamic-Link Library)DLL은 여러 프로그램이 공통으로 사용할 수 있는 함수나 리소스를 모아둔 파일입니다.대표적인 예: user32.dll, kernel32.dllDLL은 프로그램이 실행될 때 필요할 때만 메모리에 로드되어, 프로그램 크기를 줄이고, 메모리를 효율적으로 사용할 수 있습니다.Go에서 DLL 함수를 호출하려면 syscall이나 golang.org/x/sys/windows 패키지를 사용합니다. 2. 시스템 호출 (System Call)시스템 호출은 운영..

Go/window_api 2025.03.05

[Go] HTTP 요청 크롤링 병렬 처리, 하이웍스 크롤링

사용자 프로필, 업무 정보, 상세 프로필 데이터를 병렬로 수집하고 이를 처리하는 과정을 구현한 예제1. 주요 상수 정의API 요청에 필요한 URL들을 상수로 정의합니다.const ( LoginURL = "https://auth-api.office.hiworks.com/office-web/login" ProfileURL = "https://cache-api.office.hiworks.com/me" WorksURL = "https://hr-timecheck-api.office.hiworks.com/v4/web/user-work-info" ProfileDetailURL = "https://office.hiworks.com/moasoftware.onh..

Go 2025.01.22