mirror of
https://github.com/reactos/reactos.git
synced 2024-08-08 04:08:29 +00:00
Command line option "-install" to replace previously installed shell application
svn path=/trunk/; revision=8441
This commit is contained in:
parent
44f3f0d4a0
commit
3d260251a8
|
@ -3,7 +3,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><address style="align: right;"><small>
|
<td><address style="align: right;"><small>
|
||||||
ROS Explorer Source Code Documentation
|
ROS Explorer Source Code Documentation
|
||||||
<br>generated on 26.02.2004 by <a href="http://www.doxygen.org/index.html">
|
<br>generated on 28.02.2004 by <a href="http://www.doxygen.org/index.html">
|
||||||
<img src="doxygen.png" alt="doxygen" align="middle" border=0>
|
<img src="doxygen.png" alt="doxygen" align="middle" border=0>
|
||||||
</small></address>
|
</small></address>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -620,11 +620,53 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
||||||
{
|
{
|
||||||
CONTEXT("WinMain()");
|
CONTEXT("WinMain()");
|
||||||
|
|
||||||
// create desktop window and task bar only, if there is no other shell and we are
|
BOOL any_desktop_running = IsAnyDesktopRunning();
|
||||||
// the first explorer instance
|
|
||||||
BOOL startup_desktop = !IsAnyDesktopRunning();
|
|
||||||
|
|
||||||
bool autostart = true;
|
BOOL startup_desktop;
|
||||||
|
|
||||||
|
// command line option "-install" to replace previous shell application with ROS Explorer
|
||||||
|
if (_tcsstr(lpCmdLine,TEXT("-install"))) {
|
||||||
|
// install ROS Explorer into the registry
|
||||||
|
TCHAR path[MAX_PATH];
|
||||||
|
|
||||||
|
int l = GetModuleFileName(0, path, MAX_PATH);
|
||||||
|
if (l) {
|
||||||
|
HKEY hkey;
|
||||||
|
|
||||||
|
if (!RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"), &hkey)) {
|
||||||
|
|
||||||
|
///@todo save previous shell application in config file
|
||||||
|
|
||||||
|
RegSetValueEx(hkey, TEXT("Shell"), 0, REG_SZ, (LPBYTE)path, l*sizeof(TCHAR));
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HWND shellWindow = GetShellWindow();
|
||||||
|
|
||||||
|
if (shellWindow) {
|
||||||
|
DWORD pid;
|
||||||
|
|
||||||
|
// terminate shell process for NT like systems
|
||||||
|
GetWindowThreadProcessId(shellWindow, &pid);
|
||||||
|
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
|
||||||
|
|
||||||
|
// On Win 9x it's sufficient to destroy the shell window.
|
||||||
|
DestroyWindow(shellWindow);
|
||||||
|
|
||||||
|
if (TerminateProcess(hProcess, 0))
|
||||||
|
WaitForSingleObject(hProcess, INFINITE);
|
||||||
|
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
|
||||||
|
startup_desktop = TRUE;
|
||||||
|
} else
|
||||||
|
// create desktop window and task bar only, if there is no other shell and we are
|
||||||
|
// the first explorer instance
|
||||||
|
startup_desktop = !any_desktop_running;
|
||||||
|
|
||||||
|
bool autostart = !any_desktop_running;
|
||||||
|
|
||||||
// disable autostart if the SHIFT key is pressed
|
// disable autostart if the SHIFT key is pressed
|
||||||
if (GetAsyncKeyState(VK_SHIFT) < 0)
|
if (GetAsyncKeyState(VK_SHIFT) < 0)
|
||||||
|
@ -646,6 +688,8 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdL
|
||||||
|
|
||||||
if (_tcsstr(lpCmdLine,TEXT("-noautostart")))
|
if (_tcsstr(lpCmdLine,TEXT("-noautostart")))
|
||||||
autostart = false;
|
autostart = false;
|
||||||
|
else if (_tcsstr(lpCmdLine,TEXT("-autostart")))
|
||||||
|
autostart = true;
|
||||||
|
|
||||||
#ifndef __WINE__
|
#ifndef __WINE__
|
||||||
if (_tcsstr(lpCmdLine,TEXT("-console"))) {
|
if (_tcsstr(lpCmdLine,TEXT("-console"))) {
|
||||||
|
|
Loading…
Reference in a new issue