summaryrefslogtreecommitdiff
path: root/sal/inc/systools/win32/shell9x.h
diff options
context:
space:
mode:
Diffstat (limited to 'sal/inc/systools/win32/shell9x.h')
-rw-r--r--sal/inc/systools/win32/shell9x.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/sal/inc/systools/win32/shell9x.h b/sal/inc/systools/win32/shell9x.h
new file mode 100644
index 000000000000..30716314830d
--- /dev/null
+++ b/sal/inc/systools/win32/shell9x.h
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#pragma once
+
+#ifndef _SHELL9X_H_
+#define _SHELL9X_H_
+
+#ifndef _WINDOWS_
+#include <windows.h>
+#endif
+
+#ifndef _SHLOBJ_H_
+#include <shlobj.h>
+#endif
+
+#include <shellapi.h>
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+//------------------------------------------------------------------------
+// undefine the macros defined in the shlobj.h file in order to avoid
+// warnings because of multiple defines
+//------------------------------------------------------------------------
+
+#ifdef CommandLineToArgvW
+#undef CommandLineToArgvW
+#endif
+
+#ifdef SHBrowseForFolderW
+#undef SHBrowseForFolderW
+#endif
+
+#ifdef SHGetPathFromIDListW
+#undef SHGetPathFromIDListW
+#endif
+
+#ifdef ShellExecuteExW
+#undef ShellExecuteExW
+#endif
+
+//------------------------------------------------------------------------
+// set the compiler directives for the function pointer we declare below
+// if we build sal or sal will be used as static library we define extern
+// else sal exports the function pointers from a dll and we use __declspec
+//------------------------------------------------------------------------
+
+#define SHELL9X_API extern
+
+//------------------------------------------------------------------------
+// declare function pointers to the appropriate shell functions
+//------------------------------------------------------------------------
+
+SHELL9X_API LPWSTR * ( WINAPI * lpfnCommandLineToArgvW ) ( LPCWSTR lpCmdLine, int *pNumArgs );
+SHELL9X_API LPITEMIDLIST ( WINAPI * lpfnSHBrowseForFolderW ) ( LPBROWSEINFOW lpbi );
+SHELL9X_API BOOL ( WINAPI * lpfnSHGetPathFromIDListW ) ( LPCITEMIDLIST pidl, LPWSTR pszPath );
+
+SHELL9X_API BOOL ( WINAPI * lpfnShellExecuteExW ) ( LPSHELLEXECUTEINFOW lpExecInfo );
+
+//------------------------------------------------------------------------
+// redefine the above undefined macros so that the preprocessor replaces
+// all occurrences of this macros with our function pointer
+//------------------------------------------------------------------------
+
+#define CommandLineToArgvW lpfnCommandLineToArgvW
+#define SHBrowseForFolderW lpfnSHBrowseForFolderW
+#define SHGetPathFromIDListW lpfnSHGetPathFromIDListW
+
+#define ShellExecuteExW lpfnShellExecuteExW
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif