package main
import (
"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 버튼)
)
}
설명
- MessageBoxW → 유니코드 버전의 메시지 박스 API
- syscall.StringToUTF16Ptr → Go 문자열을 Windows의 UTF-16 포인터로 변환
- proc.Call → API 호출 (창 띄우기)
MessageBox 인자 설명
- 첫 번째 인자 (부모 윈도우 핸들) → 0이면 독립 창
- 두 번째 인자 (메시지 내용) → 팝업 창의 본문
- 세 번째 인자 (창 제목) → 팝업 창의 제목
- 네 번째 인자 (버튼/아이콘 옵션)
- 0: OK 버튼
- 1: OK & 취소 버튼
- 2: 중지, 재시도, 무시 버튼
- 0x40: 정보 아이콘
- 0x30: 경고 아이콘
'Go > window_api' 카테고리의 다른 글
[Go] Windows API - 창 핸들 찾기 (0) | 2025.03.05 |
---|---|
[Go] Windows API - 마우스, 화면, 시스템 상태까지 확인 (0) | 2025.03.05 |
[Go] Windows API - 시스템 해상도 가져오기 (0) | 2025.03.05 |
[Go] Windows API - 마우스 커서 위치 찾기 (0) | 2025.03.05 |
[Go] Windows API 기본 개념, DLL, 시스템 호출, 메시지 루프,Handle (0) | 2025.03.05 |