{"id":16723071,"url":"https://github.com/musm/wintypes.jl","last_synced_at":"2025-10-06T19:48:06.695Z","repository":{"id":61800022,"uuid":"281854507","full_name":"musm/WinTypes.jl","owner":"musm","description":"Julia aliases for Windows data types","archived":false,"fork":false,"pushed_at":"2020-10-01T17:08:32.000Z","size":155,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-18T00:41:59.986Z","etag":null,"topics":["julia","windows"],"latest_commit_sha":null,"homepage":"https://musm.github.io/WinTypes.jl","language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/musm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-23T04:57:17.000Z","updated_at":"2023-02-27T19:12:19.000Z","dependencies_parsed_at":"2022-10-21T11:30:52.041Z","dependency_job_id":null,"html_url":"https://github.com/musm/WinTypes.jl","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/musm/WinTypes.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musm%2FWinTypes.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musm%2FWinTypes.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musm%2FWinTypes.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musm%2FWinTypes.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/musm","download_url":"https://codeload.github.com/musm/WinTypes.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/musm%2FWinTypes.jl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278671729,"owners_count":26025743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["julia","windows"],"created_at":"2024-10-12T22:36:46.154Z","updated_at":"2025-10-06T19:48:06.637Z","avatar_url":"https://github.com/musm.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WinTypes.jl\n\nThis package defines aliases in Julia to [Windows Data types](https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types).\n\n[![](https://img.shields.io/badge/docs-blue.svg)](https://musm.github.io/WinTypes.jl)\n\n\n### Installation\n\n```julia\npkg\u003e add WinTypes\n```\n\n## Motivation \u0026 Examples\n\nThe point of this package is to make it easier and more convenient to wrap Windows API function calls in Julia.\nAs a consequence, this package also improves readability with respect to the original Windows API function definitions.\n\nHere's an example comparing wraping Windows API functions with and without `WinTypes`:\n\n**Using `WinTypes` a Windows API call would look something like:**\n```julia\nusing WinTypes: HANDLE, DWORD, BOOL\n\nfunction get_console_mode()\n    STD_OUTPUT_HANDLE = -11\n    hOutput = ccall(:GetStdHandle, stdcall, HANDLE, (DWORD,), STD_OUTPUT_HANDLE % DWORD)\n    dwMode = Ref{DWORD}()\n    ccall(:GetConsoleMode, stdcall, BOOL, (HANDLE, Ref{DWORD}), hOutput, dwMode)\n    return dwMode[]\nend\n```\n\nCompare this to the call without this package:\n```julia\n\nfunction get_console_mode()\n    STD_OUTPUT_HANDLE = -11\n    hOutput = ccall(:GetStdHandle, stdcall, Ptr{Cvoid}, (UInt32,), STD_OUTPUT_HANDLE % UInt32)\n    dwMode = Ref{UInt32}()\n    ccall(:GetConsoleMode, stdcall, Int32, (Ref{Cvoid}, Ref{UInt32}), hOutput, dwMode)\n    return dwMode[]\nend\n```\n\nFinally, here are the corresponding Windows API function syntax definitions in `C`:\n\n```c\nHANDLE WINAPI GetStdHandle(\n  _In_ DWORD nStdHandle\n);\n```\n\n```c\nBOOL WINAPI GetConsoleMode(\n  _In_  HANDLE  hConsoleHandle,\n  _Out_ LPDWORD lpMode\n);\n```\n\nUsing `WinTypes` to wrap these APIs is both simpler and more readible, making it easier without having to manually look up the corresponding Windows data types.\n\n\n\n## Alias List\n\nRefer to\n[https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types](https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types)\nfor detailed documentation on each constant.\n```julia\nFALSE     = Cint(0)\nTRUE      = Cint(1)\n\nBYTE      = Cuchar\nWORD      = Cushort\nDWORD     = Culong\nDWORDLONG = UInt64\nDWORD32   = UInt32\nDWORD64   = UInt64\n\nBOOL      = Cint\nBOOLEAN   = BYTE\n\nCHAR      = Cchar\nCCHAR     = Cchar\n\nFLOAT     = Cfloat\n\nLONG      = Culong\nULONG     = Culong\nLONG32    = Cint\nLONG64    = Int64\nLONG_PTR  = Int\n\nSHORT     = Cshort\nUSHORT    = Cushort\n\nATOM      = WORD\nLANGID    = WORD\n\nCOLORREF  = DWORD\nLGRPID    = DWORD\nLCTYPE    = DWORD\n\nLCID      = DWORD\n\nINT       = Int32\nINT8      = Int8\nINT16     = Int16\nINT32     = Int32\nINT64     = Int64\nINT_PTR   = Int\nUINT_PTR  = UInt\n\nWPARAM    = UINT_PTR\nLPARAM    = LONG_PTR\n\nHANDLE = Ptr{Cvoid}\n\nHACCEL       = HANDLE\nHBITMAP      = HANDLE\nHBRUSH       = HANDLE\nHCOLORSPACE  = HANDLE\nHCONV        = HANDLE\nHCONVLIST    = HANDLE\nHDC          = HANDLE\nHDDEDATA     = HANDLE\nHDESK        = HANDLE\nHDROP        = HANDLE\nHDWP         = HANDLE\nHENHMETAFILE = HANDLE\nHFILE        = Cint\nHFONT        = HANDLE\nHGDIOBJ      = HANDLE\nHGLOBAL      = HANDLE\nHHOOK        = HANDLE\nHICON        = HANDLE\nHCURSOR      = HICON\nHINSTANCE    = HANDLE\nHKEY         = HANDLE\nHKL          = HANDLE\nHLOCAL       = HANDLE\nHMENU        = HANDLE\nHMETAFILE    = HANDLE\nHMODULE      = HANDLE\nHMONITOR     = HANDLE\nHPALETTE     = HANDLE\nHPEN         = HANDLE\nHRESULT      = Clong\nHRGN         = HANDLE\nHRSRC        = HANDLE\nHSZ          = HANDLE\nHWINSTA      = HANDLE\nHWND         = HANDLE\n\nPHANDLE = Ptr{HANDLE}\n\nUCHAR   = Cuchar\nWCHAR   = Cwchar_t\nPWCHAR  = Ptr{WCHAR}\n\nPWORD   = Ptr{WORD}\nLPWORD  = Ptr{WORD}\nPDWORD  = Ptr{DWORD}\nLPDWORD = Ptr{DWORD}\n\nVOID    = Cvoid\nPVOID   = Ptr{Cvoid}\nLPVOID  = Ptr{Cvoid}\nLPCVOID = Ptr{Cvoid}\n\nLPINT   = Ptr{Cint}\nPINT    = Ptr{Cint}\n\nPSTR    = Ptr{CHAR}\nPCSTR   = Ptr{CHAR}\nLPSTR   = Ptr{CHAR}\nLPCSTR  = Ptr{CHAR}\n\nPWSTR   = Ptr{WCHAR}\nPCWSTR  = Ptr{WCHAR}\nLPWSTR  = Ptr{WCHAR}\nLPCWSTR = Ptr{WCHAR}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusm%2Fwintypes.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmusm%2Fwintypes.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmusm%2Fwintypes.jl/lists"}