Показать полную графическую версию : [решено] Скрытие значков и гаджетов рабочего стола программно
MegaFlops
29-05-2011, 18:35
Здравствуйте. Меня интересует можно ли как ни будь программно скрывать/отображать значки и гаджеты рабочего стола
http://s004.radikal.ru/i205/1105/06/29df0ebe238e.png
т.е. ставить и убирать эти галочки.
volod3000
01-06-2011, 15:56
Скрытие всех значков на Рабочем столе
Cоздайте DWORD-параметр NoDesktop со значением 1 в разделе HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
__________________________________________________________________
Вот еще полезная информация (http://digest.subscribe.ru/inet/review/n96840335.html)
и еще , ветка гаджетов вот : HKEY_CLASSES_ROOT\DesktopBackground\Shell\Gadgets , а дальше нужно экспериментировать .
MegaFlops
01-06-2011, 20:38
Cоздайте DWORD-параметр NoDesktop со значением 1 в разделе HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer »
Не пойдет, срабатывает только после перезагрузки системы, а мне нужно без перезагрузки.
Delirium
02-06-2011, 01:01
Не пойдет, срабатывает только после перезагрузки системы, а мне нужно без перезагрузки. »
Значит запускай bat файл примерно такого содержания:
taskkill /F /IM "explorer.exe"
start explorer
произойдет перезапуск оболочки.
MegaFlops
02-06-2011, 22:53
Работает но эффект не такой как мне нужен.
Если скрывать через реестр, то срываются не только значки, но и перестаёт работать рабочий стол (в смысле не работает правый клик, выделение, перетаскивание).
А если скрывать через правый клик --> вид --> отображать значки рабочего стола скрываются только значки, а остальное всё работает.
Как быть а ?
вот код на C#, скрывает значки
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Text;
using System.ComponentModel;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
DesktopIcons.Hide();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
public static class DesktopIcons
{
#region Declarations
delegate bool EnumCallback(IntPtr hwnd, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnumWindows(EnumCallback lpEnumFunc, IntPtr lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern IntPtr GetWindow(IntPtr hWnd, GWConstants iCmd);
enum GWConstants : int
{
GW_HWNDFIRST,
GW_HWNDLAST,
GW_HWNDNEXT,
GW_HWNDPREV,
GW_OWNER,
GW_CHILD,
GW_MAX
}
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int GetClassName(IntPtr hWnd, [Out] StringBuilder buf, int nMaxCount);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool ShowWindow(IntPtr hWnd, int nShow);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool IsWindowVisible(IntPtr hWnd);
#endregion
static IntPtr hDesktop = IntPtr.Zero;
#region Methods
static string GetClassNameFromHWND(IntPtr hWnd)
{
StringBuilder sb = new StringBuilder(256);
int len = GetClassName(hWnd, sb, sb.Capacity);
if (len > 0)
return sb.ToString(0, len);
throw new Win32Exception(Marshal.GetLastWin32Error());
}
public static void Show()
{
if (hDesktop != IntPtr.Zero && !IsWindowVisible(hDesktop))
ShowWindow(hDesktop, 5);
else
EnumWindows(new EnumCallback(EnumWins), (IntPtr)5);
}
public static void Hide()
{
if (hDesktop != IntPtr.Zero && IsWindowVisible(hDesktop))
ShowWindow(hDesktop, 0);
else
EnumWindows(new EnumCallback(EnumWins), IntPtr.Zero);
}
static bool EnumWins(IntPtr hWnd, IntPtr lParam)
{
if (hWnd != IntPtr.Zero)
{
IntPtr hDesk = GetWindow(hWnd, GWConstants.GW_CHILD);
if (hDesk != IntPtr.Zero && GetClassNameFromHWND(hDesk) == "SHELLDLL_DefView")
{
hDesk = GetWindow(hDesk, GWConstants.GW_CHILD);
if (hDesk != IntPtr.Zero && GetClassNameFromHWND(hDesk) == "SysListView32")
{
ShowWindow(hDesk, lParam.ToInt32());
hDesktop = hDesk;
return false;
}
}
}
return true;
}
#endregion
}
}
а чтобы скрыть гаджеты надо убить процесс sidebar.exe, после его запуска гаджеты снова появятся на своих местах
MegaFlops
03-06-2011, 15:32
вот код на C#, скрывает значки »
Отлично работает.
Всем кто помогал большое спасибо, вопрос снят.
rectator
19-01-2013, 12:02
А можно ли какой-либо батник или VBScript для этого сделать? Очень надо!
rectator
01-04-2013, 21:08
Помогите!
Скомпилируйте кто-нибудь этот код! Очень надо. Ребёнок замучил иконки эти таскать...
Вот пример на Delphi, как включить / отключить все объекты на Рабочем Столе:
{Disable:}
EnableWindow(FindWindowEx(FindWindow
('Progman', nil), HWND(0), 'ShellDll_DefView', nil),
FALSE) ;
{Enable:}
EnableWindow( FindWindowEx( FindWindow
('Progman', nil), HWND(0), 'ShellDll_DefView', nil),
TRUE) ;
http://rghost.ru/44957498
включить / отключить все объекты на Рабочем Столе
Desktop.exe /d
Desktop.exe /e
Запуск без параметров скрывает иконки, повторный запуск отображает.
rectator
03-04-2013, 10:28
Только хотел обрадоваться - но не работает к сожалению этот файл у меня...
Desktop.exe /d
Desktop.exe /e
Запуск без параметров скрывает иконки, повторный запуск отображает. »
Проверил на XP и Win 7, все работает.
После Desktop.exe /d иконки не активны, их нельзя перетащить.
rectator
03-04-2013, 13:43
А у меня они активны и с ними можно делать всё что угодно - даже от имени администратора запускал - всё бестолку.
rectator, а скрытие работает?
rectator
03-04-2013, 13:59
Нет, не работает. К сожелению.
rectator, Попробуйте с отключенным антивирусом.
Какая ОС ?
rectator
03-04-2013, 14:11
ОС: Windows 7 без SP1
Антивирус отключил - результат тот же.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.