From: Doug Coleman Date: Fri, 7 Apr 2023 05:16:46 +0000 (-0500) Subject: windows.shell32: add a bunch of guids for SHGetKnownFolderPath X-Git-Tag: 0.99~421 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=60866bf2afaf5b327e574e428331007568f736dc windows.shell32: add a bunch of guids for SHGetKnownFolderPath --- diff --git a/basis/windows/ole32/ole32.factor b/basis/windows/ole32/ole32.factor index 26773412c8..ba5d6b9697 100644 --- a/basis/windows/ole32/ole32.factor +++ b/basis/windows/ole32/ole32.factor @@ -24,12 +24,21 @@ TYPEDEF: REFGUID LPCGUID TYPEDEF: REFGUID REFIID TYPEDEF: REFGUID REFCLSID +FUNCTION: HRESULT CoInitialize ( LPVOID pvReserved ) +FUNCTION: void CoUninitialize ( ) + FUNCTION: HRESULT CoCreateInstance ( REFGUID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFGUID riid, LPUNKNOWN out_ppv ) FUNCTION: HRESULT CoCreateGuid ( GUID* pguid ) FUNCTION: BOOL IsEqualGUID ( REFGUID rguid1, REFGUID rguid2 ) FUNCTION: int StringFromGUID2 ( REFGUID rguid, LPOLESTR lpsz, int cchMax ) FUNCTION: HRESULT CLSIDFromString ( LPOLESTR lpsz, REFGUID out_rguid ) +FUNCTION: LPVOID CoTaskMemAlloc ( SIZE_T cb ) +FUNCTION: LPVOID CoTaskMemRealloc ( LPVOID pv, SIZE_T cb ) +FUNCTION: void CoTaskMemFree ( LPVOID pv ) +FUNCTION: HRESULT CreateStreamOnHGlobal ( HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPVOID* ppstm ) +FUNCTION: HRESULT CoGetClassObject ( REFCLSID rclsid, DWORD dwClsContext, LPVOID pvReserved, REFIID riid, LPVOID *ppv ) + CONSTANT: S_OK 0 CONSTANT: S_FALSE 1 CONSTANT: DRAGDROP_S_DROP 0x00040100 diff --git a/basis/windows/shell32/shell32.factor b/basis/windows/shell32/shell32.factor index 714c2b69ed..6f1058e838 100644 --- a/basis/windows/shell32/shell32.factor +++ b/basis/windows/shell32/shell32.factor @@ -1,9 +1,9 @@ ! Copyright (C) 2006, 2008 Doug Coleman. ! See https://factorcode.org/license.txt for BSD license. -USING: alien alien.c-types alien.data alien.strings alien.syntax -classes.struct io.backend kernel literals math windows -windows.com windows.com.syntax windows.kernel32 windows.messages -windows.ole32 windows.types ; +USING: accessors alien alien.c-types alien.data alien.strings +alien.syntax assocs classes.struct io.backend kernel literals +math sequences vocabs windows windows.com windows.com.syntax +windows.kernel32 windows.messages windows.ole32 windows.types ; IN: windows.shell32 CONSTANT: CSIDL_DESKTOP 0x00 @@ -180,7 +180,6 @@ INSTANCE: +win32-nt-executable+ windows-executable ! pe : program-files-common-x86 ( -- str ) CSIDL_PROGRAM_FILES_COMMONX86 shell32-directory ; - CONSTANT: SHCONTF_FOLDERS 32 CONSTANT: SHCONTF_NONFOLDERS 64 CONSTANT: SHCONTF_INCLUDEHIDDEN 128 @@ -768,7 +767,129 @@ FUNCTION: SHSTDAPI SHBindToParent ( ! FUNCTION: SHGetItemFromObject ! FUNCTION: SHGetKnownFolderIDList ! FUNCTION: SHGetKnownFolderItem -! FUNCTION: SHGetKnownFolderPath + +! GUID: 905e63b6-c1bf-494e-b29c-65b732d3d21a 0 f 0 wchar_t [ SHGetKnownFolderPath ] keep +! swap [ [ void* deref alien>native-string ] [ ] [ f ] if-zero + +TYPEDEF: wchar_t* PWSTR +STRUCT: KNOWNFOLDERID + { guid GUID } ; +TYPEDEF: KNOWNFOLDERID* REFKNOWNFOLDERID +FUNCTION: HRESULT SHGetKnownFolderPath ( REFKNOWNFOLDERID rfid, DWORD dwFlags, HANDLE hToken, PWSTR* ppszPath ) + +: get-known-folder-path ( guid -- str ) + 0 f 0 wchar_t [ SHGetKnownFolderPath ] keep + swap + [ void* deref [ alien>native-string ] [ CoTaskMemFree ] bi ] + [ 2drop f ] if-zero ; + +CONSTANT: FOLDERID_AccountPictures GUID: 008ca0b1-55b4-4c56-b8a8-4de4b299d3be +CONSTANT: FOLDERID_AddNewPrograms GUID: de61d971-5ebc-4f02-a3a9-6c82895e5c04 +CONSTANT: FOLDERID_AdminTools GUID: 724EF170-A42D-4FEF-9F26-B60E846FBA4F +CONSTANT: FOLDERID_ApplicationShortcuts GUID: A3918781-E5F2-4890-B3D9-A7E54332328C +CONSTANT: FOLDERID_AppsFolder GUID: 905e63b6-c1bf-494e-b29c-65b732d3d21a +CONSTANT: FOLDERID_AppUpdates GUID: a305ce99-f527-492b-8b1a-7e76fa98d6e4 +CONSTANT: FOLDERID_CameraRoll GUID: AB5FB87B-7CE2-4F83-915D-550846C9537B +CONSTANT: FOLDERID_CDBurning GUID: 9E52AB10-F80D-49DF-ACB8-4330F5687855 +CONSTANT: FOLDERID_CommonAdminTools GUID: D0384E7D-BAC3-4797-8F14-CBA229B392B5 +CONSTANT: FOLDERID_CommonOEMLinks GUID: C1BAE2D0-10DF-4334-BEDD-7AA20B227A9D +CONSTANT: FOLDERID_CommonPrograms GUID: F7F1ED05-9F6D-47A2-AAAE-29D317C6F066 +CONSTANT: FOLDERID_CommonStartMenu GUID: A4115719-D62E-491D-AA7C-E74B8BE3B067 +CONSTANT: FOLDERID_CommonStartup GUID: 82A5EA35-D9CD-47C5-9629-E15D2F714E6E +CONSTANT: FOLDERID_CommonTemplates GUID: B94237E7-57AC-4347-9151-B08C6C32D1F7 +CONSTANT: FOLDERID_ComputerFolder GUID: 0AC0837C-BBF8-452A-850D-79D08E667CA7 +CONSTANT: FOLDERID_ConflictFolder GUID: 4bfefb45-347d-4006-a5be-ac0cb0567192 +CONSTANT: FOLDERID_ConnectionsFolder GUID: 6F0CD92B-2E97-45D1-88FF-B0D186B8DEDD +CONSTANT: FOLDERID_Contacts GUID: 56784854-C6CB-462b-8169-88E350ACB882 +CONSTANT: FOLDERID_ControlPanelFolder GUID: 82A74AEB-AEB4-465C-A014-D097EE346D63 +CONSTANT: FOLDERID_Cookies GUID: 2B0F765D-C0E9-4171-908E-08A611B84FF6 +CONSTANT: FOLDERID_Desktop GUID: B4BFCC3A-DB2C-424C-B029-7FE99A87C641 +CONSTANT: FOLDERID_DeviceMetadataStore GUID: 5ce4a5e9-e4eb-479d-b89f-130c02886155 +CONSTANT: FOLDERID_DocumentsLibrary GUID: 7b0db17d-9cd2-4a93-9733-46cc89022e7c +CONSTANT: FOLDERID_Downloads GUID: 374de290-123f-4565-9164-39c4925e467b +CONSTANT: FOLDERID_Favorites GUID: 1777f761-68ad-4d8a-87bd-30b759fa33dd +CONSTANT: FOLDERID_Fonts GUID: fd228cb7-ae11-4ae3-864c-16f3910ab8fe +CONSTANT: FOLDERID_GameTasks GUID: 054fae61-4dd8-4787-80b6-090220c4b700 +CONSTANT: FOLDERID_Games GUID: d3e34b21-9d75-101a-8c3d-00aa001a1652 +CONSTANT: FOLDERID_History GUID: d9dc8a3b-b784-432e-a781-5a1130a75963 +CONSTANT: FOLDERID_HomeGroup GUID: b4bfcc3a-db2c-424c-b029-7fe99a87c641 +CONSTANT: FOLDERID_HomeGroupCurrentUser GUID: 9b74b6a3-0dfd-4f11-9e78-5f7800f2e772 +CONSTANT: FOLDERID_ImplicitAppShortcuts GUID: bcb5256f-79f6-4cee-b725-dc34e402fd46 +CONSTANT: FOLDERID_InternetCache GUID: 352481e8-33be-4251-ba85-6007caedcf9d +CONSTANT: FOLDERID_InternetFolder GUID: 4d9f7874-4e0c-4904-967b-40b0d20c3e4b +CONSTANT: FOLDERID_Libraries GUID: 1b3ea5dc-b587-4786-b4ef-bd1dc332aeae +CONSTANT: FOLDERID_Links GUID: bfb9d5e0-c6a9-404c-b2b2-ae6db6af4968 +CONSTANT: FOLDERID_LocalAppData GUID: f1b32785-6fba-4fcf-9d55-7b8e7f157091 +CONSTANT: FOLDERID_LocalAppDataLow GUID: a520a1a4-1780-4ff6-bd18-167343c5af16 +CONSTANT: FOLDERID_LocalizedResourcesDir GUID: 2a00375e-224c-49de-b8d1-440df7ef3ddc +CONSTANT: FOLDERID_MusicLibrary GUID: 2112ab0a-c86a-4ffe-a368-0de96e47012e +CONSTANT: FOLDERID_MusicGUID_Playlists GUID: 5f4eab9a-6833-4f61-899d-31cf46979d49 +CONSTANT: FOLDERID_NetHood GUID: c5abbf53-e17f-4121-8900-86626fc2c973 +CONSTANT: FOLDERID_NetworkFolder GUID: D20BEEC4-5CA8-4905-AE3B-BF251EA09B53 +CONSTANT: FOLDERID_OriginalImages GUID: 2C36C0AA-5812-4b87-BFD0-4CD0DFB19B39 +CONSTANT: FOLDERID_PhotoAlbums GUID: 69D2CF90-FC33-4FB7-9A0C-EBB0F0FCB43C +CONSTANT: FOLDERID_PicturesLibrary GUID: A990AE9F-A03B-4e80-94BC-9912D7504104 +CONSTANT: FOLDERID_Playlists GUID: DE92C1C7-837F-4F69-A3BB-86E631204A23 +CONSTANT: FOLDERID_PrintersFolder GUID: 76FC4E2D-D6AD-4519-A663-37BD56068185 +CONSTANT: FOLDERID_PrintHood GUID: 9274BD8D-CFD1-41c3-B35E-B13F55A758F4 +CONSTANT: FOLDERID_Profile GUID: 5E6C858F-0E22-4760-9AFE-EA3317B67173 +CONSTANT: FOLDERID_ProgramData GUID: 62AB5D82-FDC1-4dc3-A9DD-070D1D495D97 +CONSTANT: FOLDERID_ProgramFiles GUID: 905E63B6-C1BF-494E-B29C-65B732D3D21A +CONSTANT: FOLDERID_ProgramFilesCommon GUID: F7F1ED05-9F6D-47A2-AAAE-29D317C6F066 +CONSTANT: FOLDERID_ProgramFilesCommonX64 GUID: 6365D5A7-0F0D-45E5-87F6-0DA56B6A4F7D +CONSTANT: FOLDERID_ProgramFilesCommonX86 GUID: DE974D24-D9C6-4D3E-BF91-F4455120B917 +CONSTANT: FOLDERID_ProgramFilesX64 GUID: 6D809377-6AF0-444B-8957-A3773F02200E +CONSTANT: FOLDERID_ProgramFilesX86 GUID: 7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E +CONSTANT: FOLDERID_ProgramFilesX86_Common GUID: F7C73F05-CDFA-4831-9F2F-7AFA717B99E2 +CONSTANT: FOLDERID_Programs GUID: A77F5D77-2E2B-44C3-A6A2-ABA601054A51 +CONSTANT: FOLDERID_Public GUID: DFDF76A2-C82A-4D63-906A-5644AC457385 +CONSTANT: FOLDERID_PublicDesktop GUID: C4AA340D-F20F-4863-AFEF-F87EF2E6BA25 +CONSTANT: FOLDERID_PublicDocuments GUID: ED4824AF-DCE4-45A8-81E2-FC7965083634 +CONSTANT: FOLDERID_PublicDownloads GUID: 3D644C9B-1FB8-4f30-9B45-F670235F79C0 +CONSTANT: FOLDERID_PublicGameTasks GUID: debf2536-e1a8-4c59-b6a2-414586476aea +CONSTANT: FOLDERID_PublicLibraries GUID: 48daf80b-e6cf-4f4e-b800-0e69d84ee384 +CONSTANT: FOLDERID_PublicMusic GUID: dfdf76a2-c82a-4d63-906a-5644ac457385 +CONSTANT: FOLDERID_PublicPictures GUID: b6ebfb86-6907-413c-9af7-4fc2abf07cc5 +CONSTANT: FOLDERID_PublicRingtones GUID: e555ab60-153b-4d17-9f04-a5fe99fc15ec +CONSTANT: FOLDERID_PublicUserTiles GUID: 0482af6c-08f1-4c34-8c90-e17ec98b1e17 +CONSTANT: FOLDERID_PublicVideos GUID: 2400183a-6185-49fb-a2d8-4a392a602ba3 +CONSTANT: FOLDERID_QuickLaunch GUID: 52a4f021-7b75-48a9-9f6b-4b87a210bc8f +CONSTANT: FOLDERID_RecordedTVLibrary GUID: 1a6fdba2-f42d-4358-a798-b74d745926c5 +CONSTANT: FOLDERID_Ringtones GUID: c870044b-f49e-4126-a9c3-b52a1ff411e8 +CONSTANT: FOLDERID_RoamingAppData GUID: 3eb685db-65f9-4cf6-a03a-e3ef65729f3d +CONSTANT: FOLDERID_RoamingTiles GUID: f3ce0f7c-4901-4acc-8648-d5d44b04ef8f +CONSTANT: FOLDERID_SampleMusic GUID: b250c668-f57d-4ee1-a63c-290ee7d1aa1f +CONSTANT: FOLDERID_SamplePictures GUID: c4900540-2379-4c75-844b-64e6faf8716b +CONSTANT: FOLDERID_SamplePlaylists GUID: 15ca69b3-30ee-49c1-ace1-6b5ec372afb5 +CONSTANT: FOLDERID_SampleVideos GUID: 859edda-0a8d-4cfe-a27a-3e7a2077b0ad +CONSTANT: FOLDERID_SavedGames GUID: 4c5c32ff-bb9d-43b0-b5b4-2d72e54eaaa4 +CONSTANT: FOLDERID_SavedSearches GUID: 7d1d3a04-debb-4115-95cf-2f29da2920da +CONSTANT: FOLDERID_Screenshots GUID: b7bede81-df94-4682-a7d8-57a52620b86f +CONSTANT: FOLDERID_SearchHistory GUID: 0d4c3db6-03a3-462f-a0e6-08924c41b5d4 +CONSTANT: FOLDERID_SearchHome GUID: 190337d1-b8ca-4121-a639-6d472d1972a +CONSTANT: FOLDERID_SendTo GUID: 8983036C-27C0-404B-8F08-102D10DCFD74 +CONSTANT: FOLDERID_Startup GUID: B97D20BB-F46A-4C97-BA10-5E3608430854 +CONSTANT: FOLDERID_SyncManagerFolder GUID: 43668BF8-C14E-49B2-97C9-747784D784B7 +CONSTANT: FOLDERID_SyncResultsFolder GUID: 289a9a43-be44-4057-a41b-587a76d7e7f9 +CONSTANT: FOLDERID_SyncSetupFolder GUID: 0F214138-B1D3-4a90-BBA9-27CBC0C5389A +CONSTANT: FOLDERID_System GUID: 1AC14E77-02E7-4E5D-B744-2EB1AE5198B7 +CONSTANT: FOLDERID_SystemX86 GUID: 7B396E54-9EC5-4300-BE0A-2482EBAE1A26 +CONSTANT: FOLDERID_Templates GUID: A63293E8-664E-48DB-A079-DF759E0509F7 +CONSTANT: FOLDERID_UserPinned GUID: 9E3995AB-1F9C-4F13-B827-48B24B6C7174 +CONSTANT: FOLDERID_UserProfiles GUID: 0762D272-C50A-4BB0-A382-697DCD729B80 +CONSTANT: FOLDERID_UserProgramFiles GUID: 5cd7aee2-2219-4a67-b85d-6c9ce15660cb +CONSTANT: FOLDERID_UserProgramFilesCommon GUID: Bcbd3057-ca5c-4622-b42d-bc56db0ae516 +CONSTANT: FOLDERID_UsersFiles GUID: F3CE0F7C-4901-4ACC-8648-D5D44B04EF8F +CONSTANT: FOLDERID_UsersLibraries GUID: A302545D-DEFF-464b-ABE8-61C8648D939B +CONSTANT: FOLDERID_Videos GUID: 18989B1D-99B5-455B-841C-AB7C74E4DDFC +CONSTANT: FOLDERID_Windows GUID: F38BF404-1D43-42F2-9305-67DE0B28FC23 + +: all-folderid-dirs ( -- seq ) + all-words [ name>> "FOLDERID_" head? ] filter + [ execute( -- obj ) get-known-folder-path ] zip-with ; + + + ! FUNCTION: SHGetLocalizedName ! FUNCTION: SHGetMalloc ! FUNCTION: SHGetNameFromIDList