aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2026-02-14 12:14:53 +0100
committerGitHub <noreply@github.com>2026-02-14 12:14:53 +0100
commit67922a57e90c78992cbe85e10003bc5c05bc0453 (patch)
tree1287461462ffcfc2fd4f12746b76cd2f3f668070
parentf6d3500509ccc20de642472e0bc39bdc2707a673 (diff)
parentdcd93579f05e2e99c4c55ab8935716db1feafef3 (diff)
Merge pull request #6273 from blob1807/master
Add more Windows endpoints
-rw-r--r--core/sys/windows/kernel32.odin1
-rw-r--r--core/sys/windows/ole32.odin2
-rw-r--r--core/sys/windows/shell32.odin2
-rw-r--r--core/sys/windows/types.odin1
-rw-r--r--core/sys/windows/user32.odin34
5 files changed, 33 insertions, 7 deletions
diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin
index 7d4ba76e0..670484489 100644
--- a/core/sys/windows/kernel32.odin
+++ b/core/sys/windows/kernel32.odin
@@ -470,6 +470,7 @@ foreign kernel32 {
GlobalAlloc :: proc(flags: UINT, bytes: SIZE_T) -> LPVOID ---
GlobalReAlloc :: proc(mem: LPVOID, bytes: SIZE_T, flags: UINT) -> LPVOID ---
GlobalFree :: proc(mem: LPVOID) -> LPVOID ---
+ GlobalSize :: proc(Mem: LPVOID) -> SIZE_T ---
GlobalLock :: proc(hMem: HGLOBAL) -> LPVOID ---
GlobalUnlock :: proc(hMem: HGLOBAL) -> BOOL ---
diff --git a/core/sys/windows/ole32.odin b/core/sys/windows/ole32.odin
index 12cf40b81..d314eb343 100644
--- a/core/sys/windows/ole32.odin
+++ b/core/sys/windows/ole32.odin
@@ -1,6 +1,6 @@
package sys_windows
-foreign import "system:Ole32.lib"
+foreign import Ole32 "system:Ole32.lib"
//objbase.h
// Note(Dragos): https://learn.microsoft.com/en-us/windows/win32/api/objbase/ne-objbase-coinit makes you believe that MULTITHREADED == 3. That is wrong. See definition of objbase.h
diff --git a/core/sys/windows/shell32.odin b/core/sys/windows/shell32.odin
index c7d83f9f6..1a0844b39 100644
--- a/core/sys/windows/shell32.odin
+++ b/core/sys/windows/shell32.odin
@@ -31,6 +31,8 @@ foreign shell32 {
SHSetKnownFolderPath :: proc(rfid: REFKNOWNFOLDERID, dwFlags: /* KNOWN_FOLDER_FLAG */ DWORD, hToken: HANDLE, pszPath: PCWSTR ) -> HRESULT ---
SHGetKnownFolderPath :: proc(rfid: REFKNOWNFOLDERID, dwFlags: /* KNOWN_FOLDER_FLAG */ DWORD, hToken: HANDLE, ppszPath: ^LPWSTR) -> HRESULT ---
+ SHCreateItemFromParsingName :: proc(pszPath: PCWSTR, pbc: ^IBindCtx, riid: REFIID, ppv: ^rawptr) -> HRESULT ---
+
ExtractIconExW :: proc(pszFile: LPCWSTR, nIconIndex: INT, phiconLarge: ^HICON, phiconSmall: ^HICON, nIcons: UINT) -> UINT ---
DragAcceptFiles :: proc(hWnd: HWND, fAccept: BOOL) ---
DragQueryPoint :: proc(hDrop: HDROP, ppt: ^POINT) -> BOOL ---
diff --git a/core/sys/windows/types.odin b/core/sys/windows/types.odin
index 06156c912..b5621f621 100644
--- a/core/sys/windows/types.odin
+++ b/core/sys/windows/types.odin
@@ -4279,6 +4279,7 @@ CLSID_FileOpenDialog := &GUID{0xDC1C5A9C, 0xE88A, 0x4DDE, {0xA5, 0xA1, 0x60, 0xF
CLSID_FileSaveDialog := &GUID{0xC0B4E2F3, 0xBA21, 0x4773, {0x8D, 0xBA, 0x33, 0x5E, 0xC9, 0x46, 0xEB, 0x8B}}
CLSID_TaskbarList := &GUID{0x56FDF344, 0xFD6D, 0x11d0, {0x95, 0x8A, 0x00, 0x60, 0x97, 0xC9, 0xA0, 0x90}}
+IID_IShellItem := &GUID{0x43826d1e, 0xe718, 0x42ee, {0xbc, 0x55, 0xa1, 0xe2, 0x61, 0xc3, 0x7b, 0xfe}}
IID_IFileDialog := &GUID{0x42F85136, 0xDB7E, 0x439C, {0x85, 0xF1, 0xE4, 0x07, 0x5D, 0x13, 0x5F, 0xC8}}
IID_IFileSaveDialog := &GUID{0x84BCCD23, 0x5FDE, 0x4CDB, {0xAE, 0xA4, 0xAF, 0x64, 0xB8, 0x3D, 0x78, 0xAB}}
IID_IFileOpenDialog := &GUID{0xD57C7288, 0xD4AD, 0x4768, {0xBE, 0x02, 0x9D, 0x96, 0x95, 0x32, 0xD9, 0x60}}
diff --git a/core/sys/windows/user32.odin b/core/sys/windows/user32.odin
index e2ed1726b..ede920004 100644
--- a/core/sys/windows/user32.odin
+++ b/core/sys/windows/user32.odin
@@ -318,12 +318,26 @@ foreign user32 {
GetProcessWindowStation :: proc() -> HWINSTA ---
GetUserObjectInformationW :: proc(hObj: HANDLE, nIndex: GetUserObjectInformationFlags, pvInfo: PVOID, nLength: DWORD, lpnLengthNeeded: LPDWORD) -> BOOL ---
- OpenClipboard :: proc(hWndNewOwner: HWND) -> BOOL ---
- CloseClipboard :: proc() -> BOOL ---
- GetClipboardData :: proc(uFormat: UINT) -> HANDLE ---
- SetClipboardData :: proc(uFormat: UINT, hMem: HANDLE) -> HANDLE ---
- IsClipboardFormatAvailable :: proc(format: UINT) -> BOOL ---
- EmptyClipboard :: proc() -> BOOL ---
+ OpenClipboard :: proc(hWndNewOwner: HWND) -> BOOL ---
+ CloseClipboard :: proc() -> BOOL ---
+ GetClipboardData :: proc(uFormat: UINT) -> HANDLE ---
+ SetClipboardData :: proc(uFormat: UINT, hMem: HANDLE) -> HANDLE ---
+ IsClipboardFormatAvailable :: proc(format: UINT) -> BOOL ---
+ EmptyClipboard :: proc() -> BOOL ---
+ AddClipboardFormatListener :: proc(hwnd: HWND) -> BOOL ---
+ ChangeClipboardChain :: proc(hWndRemove: HWND, hWndNewNext: HWND) -> BOOL ---
+ CountClipboardFormats :: proc() -> c_int ---
+ EnumClipboardFormats :: proc(format: UINT) -> UINT ---
+ GetClipboardFormatNameW :: proc(format: UINT, lpszFormatName: LPWSTR, cchMaxCount: c_int) -> c_int ---
+ GetClipboardOwner :: proc() -> HWND---
+ GetClipboardSequenceNumber :: proc() -> DWORD ---
+ GetClipboardViewer :: proc() -> HWND ---
+ GetOpenClipboardWindow :: proc() -> HWND ---
+ GetPriorityClipboardFormat :: proc(paFormatPriorityList: ^UINT, cFormats: c_int) -> c_int ---
+ GetUpdatedClipboardFormats :: proc(lpuiFormats: ^UINT, cFormats: UINT, pcFormatsOut: ^UINT) -> BOOL ---
+ RegisterClipboardFormatW :: proc(lpszFormat: LPCWSTR ) -> UINT ---
+ RemoveClipboardFormatListener :: proc(hwnd: HWND) -> BOOL ---
+ SetClipboardViewer :: proc(hWndNewViewer: HWND) -> HWND ---
SetScrollInfo :: proc(hwnd: HWND, nBar: c_int, lpsi: ^SCROLLINFO, redraw: BOOL) -> c_int ---
GetScrollInfo :: proc(hwnd: HWND, nBar: c_int, lpsi: ^SCROLLINFO) -> BOOL ---
@@ -962,3 +976,11 @@ GW_OWNER :: 4
GW_CHILD :: 5
GW_ENABLEDPOPUP :: 6
GW_MAX :: 6
+
+COPYDATASTRUCT :: struct {
+ dwData: ULONG_PTR,
+ cbData: DWORD,
+ lpData: PVOID,
+}
+
+PCOPYDATASTRUCT :: ^COPYDATASTRUCT