[CMAKE]: Add a makefile to build the IDL files. Not perfect, but gets the job done.
[reactos.git] / include / psdk / shellapi.h
index 0ec5510..3a42ce5 100644 (file)
@@ -1,12 +1,18 @@
 #ifndef _SHELLAPI_H
 #define _SHELLAPI_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4201)
+#endif
+
+#if !defined(_WIN64)
+#include <pshpack1.h>
+#endif
+
 #define WINSHELLAPI DECLSPEC_IMPORT
 #define ABE_LEFT       0
 #define ABE_TOP        1
@@ -126,13 +132,40 @@ extern "C" {
 #define SHGFI_SHELLICONSIZE    4
 #define SHGFI_PIDL     8
 #define SHGFI_USEFILEATTRIBUTES        16
-#define SHERB_NOCONFIRMATION 1
-#define SHERB_NOPROGRESSUI 2
-#define SHERB_NOSOUND 4
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+#define SHIL_LARGE        0x0
+#define SHIL_SMALL        0x1
+#define SHIL_EXTRALARGE   0x2
+#define SHIL_SYSSMALL     0x3
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+#define SHIL_JUMBO        0x4
+#define SHIL_LAST         SHIL_JUMBO
+#else
+#define SHIL_LAST         SHIL_SYSSMALL
+#endif
+#endif
+
+typedef struct _SHCREATEPROCESSINFOW
+{
+    DWORD cbSize;
+    ULONG fMask;
+    HWND hwnd;
+    LPCWSTR pszFile;
+    LPCWSTR pszParameters;
+    LPCWSTR pszCurrentDirectory;
+    IN HANDLE hUserToken;
+    IN LPSECURITY_ATTRIBUTES lpProcessAttributes;
+    IN LPSECURITY_ATTRIBUTES lpThreadAttributes;
+    IN BOOL bInheritHandles;
+    IN DWORD dwCreationFlags;
+    IN LPSTARTUPINFOW lpStartupInfo;
+    OUT LPPROCESS_INFORMATION lpProcessInformation;
+} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;
 
 typedef WORD FILEOP_FLAGS;
 typedef WORD PRINTEROP_FLAGS;
-#include <pshpack1.h>
+
 typedef struct _AppBarData {
        DWORD   cbSize;
        HWND    hWnd;
@@ -302,12 +335,23 @@ typedef struct _SHNAMEMAPPINGW {
        int     cchOldPath;
        int     cchNewPath;
 } SHNAMEMAPPINGW, *LPSHNAMEMAPPINGW;
-#include <poppack.h>
 
 #define SHERB_NOCONFIRMATION 0x1
 #define SHERB_NOPROGRESSUI   0x2
 #define SHERB_NOSOUND        0x4
 
+/******************************************
+ * Links
+ */
+
+#define SHGNLI_PIDL        0x01
+#define SHGNLI_PREFIXNAME  0x02
+#define SHGNLI_NOUNIQUE    0x04
+#define SHGNLI_NOLNK       0x08
+
+BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
+BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
+
 LPWSTR * WINAPI CommandLineToArgvW(LPCWSTR,int*);
 void WINAPI DragAcceptFiles(HWND,BOOL);
 void WINAPI DragFinish(HDROP);
@@ -327,6 +371,8 @@ BOOL WINAPI Shell_NotifyIconA(DWORD,PNOTIFYICONDATAA);
 BOOL WINAPI Shell_NotifyIconW(DWORD,PNOTIFYICONDATAW);
 int WINAPI ShellAboutA(HWND,LPCSTR,LPCSTR,HICON);
 int WINAPI ShellAboutW(HWND,LPCWSTR,LPCWSTR,HICON);
+int WINAPI ShellMessageBoxA(HINSTANCE,HWND,LPCSTR,LPCSTR,UINT,...);
+int WINAPI ShellMessageBoxW(HINSTANCE,HWND,LPCWSTR,LPCWSTR,UINT,...);
 HINSTANCE WINAPI ShellExecuteA(HWND,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT);
 HINSTANCE WINAPI ShellExecuteW(HWND,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT);
 BOOL WINAPI ShellExecuteExA(LPSHELLEXECUTEINFOA);
@@ -334,14 +380,15 @@ BOOL WINAPI ShellExecuteExW(LPSHELLEXECUTEINFOW);
 int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA);
 int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW);
 void WINAPI SHFreeNameMappings(HANDLE);
-DWORD WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
-DWORD WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
+DWORD_PTR WINAPI SHGetFileInfoA(LPCSTR,DWORD,SHFILEINFOA*,UINT,UINT);
+DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR,DWORD,SHFILEINFOW*,UINT,UINT);
 BOOL WINAPI SHGetNewLinkInfoA(LPCSTR,LPCSTR,LPSTR,BOOL*,UINT);
 BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR,LPCWSTR,LPWSTR,BOOL*,UINT);
 HRESULT WINAPI SHQueryRecycleBinA(LPCSTR, LPSHQUERYRBINFO);
 HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR, LPSHQUERYRBINFO);
 HRESULT WINAPI SHEmptyRecycleBinA(HWND,LPCSTR,DWORD);
 HRESULT WINAPI SHEmptyRecycleBinW(HWND,LPCWSTR,DWORD);
+BOOL WINAPI SHCreateProcessAsUserW(PSHCREATEPROCESSINFOW);
 
 #ifdef UNICODE
 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAW_V1_SIZE
@@ -362,11 +409,13 @@ typedef LPSHNAMEMAPPINGW LPSHNAMEMAPPING;
 #define ShellAbout ShellAboutW
 #define ShellExecute ShellExecuteW
 #define ShellExecuteEx ShellExecuteExW
+#define ShellMessageBox ShellMessageBoxW
 #define SHFileOperation SHFileOperationW
 #define SHGetFileInfo SHGetFileInfoW
 #define SHGetNewLinkInfo SHGetNewLinkInfoW
 #define SHQueryRecycleBin SHQueryRecycleBinW
 #define SHEmptyRecycleBin SHEmptyRecycleBinW
+#define SHGetNewLinkInfo SHGetNewLinkInfoW
 
 #else
 #define NOTIFYICONDATA_V1_SIZE NOTIFYICONDATAA_V1_SIZE
@@ -387,11 +436,21 @@ typedef LPSHNAMEMAPPINGA LPSHNAMEMAPPING;
 #define ShellAbout ShellAboutA
 #define ShellExecute ShellExecuteA
 #define ShellExecuteEx ShellExecuteExA
+#define ShellMessageBox ShellMessageBoxA
 #define SHFileOperation SHFileOperationA
 #define SHGetFileInfo SHGetFileInfoA
 #define SHGetNewLinkInfo SHGetNewLinkInfoA
 #define SHQueryRecycleBin SHQueryRecycleBinA
 #define SHEmptyRecycleBin SHEmptyRecycleBinA
+#define SHGetNewLinkInfo SHGetNewLinkInfoA
+#endif
+
+#if !defined(_WIN64)
+#include <poppack.h>
+#endif
+
+#ifdef _MSC_VER
+#pragma warning(pop)
 #endif
 #ifdef __cplusplus
 }