mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 22:33:00 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
56
base/shell/rshell/CMakeLists.txt
Normal file
56
base/shell/rshell/CMakeLists.txt
Normal file
|
@ -0,0 +1,56 @@
|
|||
PROJECT(SHELL)
|
||||
|
||||
set_cpp(WITH_RUNTIME)
|
||||
|
||||
include_directories(
|
||||
${REACTOS_SOURCE_DIR}/sdk/lib/atl)
|
||||
|
||||
spec2def(rshell.dll rshell.spec ADD_IMPORTLIB)
|
||||
|
||||
list(APPEND SOURCE
|
||||
misc.cpp
|
||||
${CMAKE_CURRENT_BINARY_DIR}/rshell.def)
|
||||
|
||||
add_library(rshell SHARED ${SOURCE})
|
||||
|
||||
set_module_type(rshell win32dll UNICODE)
|
||||
|
||||
target_link_libraries(rshell
|
||||
shellbars
|
||||
shellmenu
|
||||
shelldesktop
|
||||
atlnew
|
||||
uuid
|
||||
wine)
|
||||
|
||||
add_importlibs(rshell
|
||||
browseui
|
||||
uxtheme
|
||||
shlwapi
|
||||
advapi32
|
||||
shell32
|
||||
comctl32
|
||||
gdi32
|
||||
ole32
|
||||
user32
|
||||
msvcrt
|
||||
kernel32
|
||||
ntdll)
|
||||
|
||||
add_custom_command(TARGET rshell POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:rshell>"
|
||||
"$<TARGET_FILE_DIR:explorer>/$<TARGET_FILE_NAME:rshell>"
|
||||
COMMENT "Copying to output directory")
|
||||
|
||||
add_custom_command(TARGET rshell POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:rshell>"
|
||||
"$<TARGET_FILE_DIR:filebrowser>/$<TARGET_FILE_NAME:rshell>"
|
||||
COMMENT "Copying to output directory")
|
||||
|
||||
add_custom_command(TARGET rshell POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}" -E copy
|
||||
"$<TARGET_FILE:rshell>"
|
||||
"$<TARGET_FILE_DIR:filebrowser>/$<TARGET_FILE_NAME:rshell>"
|
||||
COMMENT "Copying to output directory")
|
263
base/shell/rshell/misc.cpp
Normal file
263
base/shell/rshell/misc.cpp
Normal file
|
@ -0,0 +1,263 @@
|
|||
/*
|
||||
* ReactOS Explorer
|
||||
*
|
||||
* Copyright 2014 Giannis Adamopoulos
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library 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 for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#define WIN32_NO_STATUS
|
||||
#define _INC_WINDOWS
|
||||
#define COM_NO_WINDOWS_H
|
||||
|
||||
#define COBJMACROS
|
||||
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <winreg.h>
|
||||
#include <wingdi.h>
|
||||
#include <winnls.h>
|
||||
#include <wincon.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlobj.h>
|
||||
#include <shlobj_undoc.h>
|
||||
#include <shlwapi.h>
|
||||
#include <shlguid_undoc.h>
|
||||
#include <uxtheme.h>
|
||||
#include <strsafe.h>
|
||||
|
||||
#include <atlbase.h>
|
||||
#include <atlcom.h>
|
||||
#include <atlwin.h>
|
||||
#include <undocshell.h>
|
||||
#include <undocuser.h>
|
||||
|
||||
#include <shellutils.h>
|
||||
|
||||
#include <wine/debug.h>
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern HINSTANCE shell32_hInstance;
|
||||
|
||||
HRESULT WINAPI RSHELL_CStartMenu_CreateInstance(REFIID riid, void **ppv);
|
||||
HRESULT WINAPI RSHELL_CMenuDeskBar_CreateInstance(REFIID riid, LPVOID *ppv);
|
||||
HRESULT WINAPI RSHELL_CMenuSite_CreateInstance(REFIID riid, LPVOID *ppv);
|
||||
HRESULT WINAPI RSHELL_CMenuBand_CreateInstance(REFIID riid, LPVOID *ppv);
|
||||
HRESULT WINAPI RSHELL_CMergedFolder_CreateInstance(REFIID riid, LPVOID *ppv);
|
||||
}
|
||||
|
||||
DWORD WINAPI WinList_Init(void)
|
||||
{
|
||||
/* do something here (perhaps we may want to add our own implementation fo win8) */
|
||||
return 0;
|
||||
}
|
||||
|
||||
class CRShellModule : public CComModule
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
CRShellModule gModule;
|
||||
CAtlWinModule gWinModule;
|
||||
|
||||
HINSTANCE shell32_hInstance = NULL;
|
||||
|
||||
static LSTATUS inline _RegSetStringValueW(HKEY hKey, LPCWSTR lpValueName, LPCWSTR lpStringData)
|
||||
{
|
||||
DWORD dwStringDataLen = lstrlenW(lpStringData);
|
||||
|
||||
return RegSetValueExW(hKey, lpValueName, 0, REG_SZ, (BYTE *) lpStringData, 2 * (dwStringDataLen + 1));
|
||||
}
|
||||
|
||||
static HRESULT RegisterComponent(REFGUID clsid, LPCWSTR szDisplayName)
|
||||
{
|
||||
WCHAR szFilename[MAX_PATH];
|
||||
WCHAR szClsid[MAX_PATH];
|
||||
WCHAR szRoot[MAX_PATH];
|
||||
|
||||
if (!StringFromGUID2(clsid, szClsid, _countof(szClsid)))
|
||||
return E_FAIL;
|
||||
|
||||
if (!GetModuleFileNameW(shell32_hInstance, szFilename, _countof(szFilename)))
|
||||
return E_FAIL;
|
||||
|
||||
HRESULT hr = StringCchPrintfW(szRoot, 0x104u, L"CLSID\\%s", szClsid);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
DWORD dwDisposition;
|
||||
HKEY hkRoot;
|
||||
if (RegCreateKeyExW(HKEY_CLASSES_ROOT, szRoot, 0, NULL, 0, KEY_WRITE, 0, &hkRoot, &dwDisposition) != 0)
|
||||
return E_FAIL;
|
||||
|
||||
HKEY hkServer;
|
||||
|
||||
_RegSetStringValueW(hkRoot, NULL, szDisplayName);
|
||||
|
||||
if (RegCreateKeyExW(hkRoot, L"InprocServer32", 0, NULL, 0, KEY_SET_VALUE, 0, &hkServer, &dwDisposition) != 0)
|
||||
{
|
||||
RegCloseKey(hkRoot);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
_RegSetStringValueW(hkServer, NULL, szFilename);
|
||||
_RegSetStringValueW(hkServer, L"ThreadingModel", L"Both");
|
||||
|
||||
RegCloseKey(hkServer);
|
||||
RegCloseKey(hkRoot);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT UnregisterComponent(REFGUID clsid)
|
||||
{
|
||||
WCHAR szClsid[MAX_PATH];
|
||||
WCHAR szRoot[MAX_PATH];
|
||||
HKEY hkRoot;
|
||||
|
||||
if (!StringFromGUID2(clsid, szClsid, _countof(szClsid)))
|
||||
return E_FAIL;
|
||||
|
||||
HRESULT hr = StringCchPrintfW(szRoot, 0x104u, L"CLSID\\%s", szClsid);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
if (RegOpenKeyExW(HKEY_CLASSES_ROOT, szRoot, 0, KEY_WRITE, &hkRoot) != 0)
|
||||
return E_FAIL;
|
||||
|
||||
RegDeleteKeyW(hkRoot, L"InprocServer32");
|
||||
RegCloseKey(hkRoot);
|
||||
|
||||
RegDeleteKeyW(HKEY_CLASSES_ROOT, szRoot);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
|
||||
{
|
||||
if (dwReason == DLL_PROCESS_ATTACH)
|
||||
{
|
||||
shell32_hInstance = hInstance;
|
||||
|
||||
gModule.Init(NULL, hInstance, NULL);
|
||||
DisableThreadLibraryCalls(hInstance);
|
||||
}
|
||||
else if (dwReason == DLL_PROCESS_DETACH)
|
||||
{
|
||||
shell32_hInstance = NULL;
|
||||
gModule.Term();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HRESULT
|
||||
WINAPI
|
||||
DllCanUnloadNow(void)
|
||||
{
|
||||
gModule.DllCanUnloadNow();
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
STDAPI
|
||||
DllRegisterServer(void)
|
||||
{
|
||||
RegisterComponent(CLSID_StartMenu, L"Shell Start Menu");
|
||||
RegisterComponent(CLSID_MenuDeskBar, L"Shell Menu Desk Bar");
|
||||
RegisterComponent(CLSID_MenuBand, L"Shell Menu Band");
|
||||
RegisterComponent(CLSID_MenuBandSite, L"Shell Menu Band Site");
|
||||
RegisterComponent(CLSID_MergedFolder, L"Merged Shell Folder");
|
||||
RegisterComponent(CLSID_RebarBandSite, L"Shell Rebar Band Site");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
STDAPI
|
||||
DllUnregisterServer(void)
|
||||
{
|
||||
UnregisterComponent(CLSID_StartMenu);
|
||||
UnregisterComponent(CLSID_MenuDeskBar);
|
||||
UnregisterComponent(CLSID_MenuBand);
|
||||
UnregisterComponent(CLSID_MenuBandSite);
|
||||
UnregisterComponent(CLSID_MergedFolder);
|
||||
UnregisterComponent(CLSID_RebarBandSite);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
class CRShellClassFactory :
|
||||
public CComObjectRootEx<CComMultiThreadModelNoCS>,
|
||||
public IClassFactory
|
||||
{
|
||||
private:
|
||||
CLSID m_Clsid;
|
||||
|
||||
public:
|
||||
CRShellClassFactory() {}
|
||||
virtual ~CRShellClassFactory() {}
|
||||
|
||||
HRESULT Initialize(REFGUID clsid)
|
||||
{
|
||||
m_Clsid = clsid;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/* IClassFactory */
|
||||
virtual HRESULT WINAPI CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObject)
|
||||
{
|
||||
*ppvObject = NULL;
|
||||
|
||||
if (IsEqualCLSID(m_Clsid, CLSID_StartMenu))
|
||||
return RSHELL_CStartMenu_CreateInstance(riid, ppvObject);
|
||||
|
||||
if (IsEqualCLSID(m_Clsid, CLSID_MenuDeskBar))
|
||||
return RSHELL_CMenuDeskBar_CreateInstance(riid, ppvObject);
|
||||
|
||||
if (IsEqualCLSID(m_Clsid, CLSID_MenuBand))
|
||||
return RSHELL_CMenuBand_CreateInstance(riid, ppvObject);
|
||||
|
||||
if (IsEqualCLSID(m_Clsid, CLSID_MenuBandSite))
|
||||
return RSHELL_CMenuSite_CreateInstance(riid, ppvObject);
|
||||
|
||||
if (IsEqualCLSID(m_Clsid, CLSID_MergedFolder))
|
||||
return RSHELL_CMergedFolder_CreateInstance(riid, ppvObject);
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
virtual HRESULT WINAPI LockServer(BOOL fLock)
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
BEGIN_COM_MAP(CRShellClassFactory)
|
||||
COM_INTERFACE_ENTRY_IID(IID_IClassFactory, IClassFactory)
|
||||
END_COM_MAP()
|
||||
};
|
||||
|
||||
STDAPI
|
||||
DllGetClassObject(
|
||||
REFCLSID rclsid,
|
||||
REFIID riid,
|
||||
LPVOID *ppv)
|
||||
{
|
||||
if (!ppv)
|
||||
return E_INVALIDARG;
|
||||
|
||||
*ppv = NULL;
|
||||
|
||||
return ShellObjectCreatorInit<CRShellClassFactory>(rclsid, riid, ppv);
|
||||
}
|
14
base/shell/rshell/rshell.spec
Normal file
14
base/shell/rshell/rshell.spec
Normal file
|
@ -0,0 +1,14 @@
|
|||
@ stdcall -private DllCanUnloadNow()
|
||||
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||
@ stdcall -private DllRegisterServer()
|
||||
@ stdcall -private DllUnregisterServer()
|
||||
@ stdcall CStartMenu_CreateInstance(ptr ptr) RSHELL_CStartMenu_CreateInstance
|
||||
@ stdcall CMenuDeskBar_CreateInstance(ptr ptr) RSHELL_CMenuDeskBar_CreateInstance
|
||||
@ stdcall CMenuSite_CreateInstance(ptr ptr) RSHELL_CMenuSite_CreateInstance
|
||||
@ stdcall CMenuBand_CreateInstance(ptr ptr) RSHELL_CMenuBand_CreateInstance
|
||||
@ stdcall CMergedFolder_CreateInstance(ptr ptr) RSHELL_CMergedFolder_CreateInstance
|
||||
@ stdcall CBandSite_CreateInstance(ptr ptr ptr) RSHELL_CBandSite_CreateInstance
|
||||
@ stdcall CBandSiteMenu_CreateInstance(ptr ptr) RSHELL_CBandSiteMenu_CreateInstance
|
||||
@ stdcall ShellDDEInit(long);
|
||||
@ stdcall SHCreateDesktop(ptr);
|
||||
@ stdcall SHDesktopMessageLoop(ptr);
|
Loading…
Add table
Add a link
Reference in a new issue