]> gitweb.factorcode.org Git - factor.git/commitdiff
windows.shell32: add a bunch of guids for SHGetKnownFolderPath
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 7 Apr 2023 05:16:46 +0000 (00:16 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Fri, 7 Apr 2023 05:16:46 +0000 (00:16 -0500)
basis/windows/ole32/ole32.factor
basis/windows/shell32/shell32.factor

index 26773412c888b000f27d15a047766515f7cc31a8..ba5d6b96974367dd7a5027d1a2c529402325ea5e 100644 (file)
@@ -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
index 714c2b69ed0336cebf67effb77a0890edd100d81..6f1058e838fd8b5b16e3a93ee29b30ebd78ce138 100644 (file)
@@ -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 <ref> [ 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 <ref> [ 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