ACTUALIZADO EL 27/JUNIO/2015
• ¿ Para que sirve esto ?
EnvironmentUtil.vb es una Class con un conjunto de Classes hijas que cumplen diversas funcionalidades relacionadas con el entorno de Windows, funcionalidades que mediante la librería de classes de .NET Framework no se pueden llevar a cabo, y en algunos casos para simplificar a éstas,
permite modificar muchos parámetros del sistema cómo por ejemplo la velocidad del mouse o del teclado, así cómo desde poder registrar una variable de entorno en el sistema, modificar el wallpaper del escritorio, mostrar u ocultar el escritorio o la barra de tareas, anclar o desanclar items en la barra de tareas o el menú de inicio, hasta iterar las ventanas del explorador de Windows o notificar ciertos eventos del sistema (y del registro) para afectar los cambios.
En resumen, sirve para todo un poco, ya que hace un poco de casi todo, pero obviamente le faltan muchísimas posibles funcionalidades adicionales.
La Class consta de más de 8.000 lineas de código, esto hace un poco compleja la manutención y depuración del código, es posible que haya algún bug que no he detectado todavía, sean tolerantes con esto y sean libres de reportarme cualquier problema para poder corregirlo.
Acepto cualquier tipo de crítica y/o petición para añadirle nuevas funcionalidades a este proyecto, ya que a pesar de ser tanto código lo cierto es que por ahora cumple poquitas funciones, si les ha gustado entonces dejen su omentario y no tienen más que decirme que característica les gustaría que implementase en esta class ...la única condición es que la característica debe estar relacionada con la temática de la Class .
• ¿ Cómo lo hago funcionar ?
La Class contiene varias classes hijas cuyo nombre ya da una pista sobre el tipo de funcionalidades que se pueden encontrar:
- EnvironmentUtil.EnvironmentVariables
- EnvironmentUtil.FileSystem
- EnvironmentUtil.OS
- EnvironmentUtil.Programs
- EnvironmentUtil.Shell
- EnvironmentUtil.Shell.Desktop
- EnvironmentUtil.Shell.Explorer
- EnvironmentUtil.Shell.StartMenu
- EnvironmentUtil.Shell.TaskBar
- EnvironmentUtil.Theming
Algunas funcionalidades requieren que se añada algunas referencias al proyecto:
- Microsoft Shell Controls And Automation (COM) (Interop.SHDocVw.dll)
- Microsoft Internet Controls (COM) (Interop.Shell32.dll)
La Class se puede utilizar directamente copiando todo el código en una nueva Class, o también se puede compilar el código en una librería dinámica dll.
A cada miembro le añadí documentación XML para IntelliSense, para entender cual es el propósito de cada miembro, y cómo hacerlo funcionar explicando cada parámetro.
Además, abajo puedne ver el diagrama de Classes, y además también, en la cabecera de la Class, pueden encontrar una región que contiene un sumario de los miembros públicos de cada clase hija.
Importante:
Debo mencionar que yo he compartido la class "compactada" así muy "arrejuntada" o cómo quieran llamarlo pero solamente lo he hecho para que sea facil su distribuición en un único archivo.
Si van a usar/compilar este proyecto, entonces lo correcto sería separar las clases hijas en distintos archivos ...sobre todo para que el mantenimiento no se vuelva una pesadilla entre tantos miles de lineas de código.
• Código fuente:
http://pastebin.com/2WW6j3h8
• Lista de propiedades, métodos y funciones públicas (y los types que acepta cada overload)
Código
#Region " Public Members Summary " #Region " Child Util-Classes " EnvironmentUtil.EnvironmentVariables EnvironmentUtil.FileSystem EnvironmentUtil.OS EnvironmentUtil.Programs EnvironmentUtil.Shell EnvironmentUtil.Shell.Desktop EnvironmentUtil.Shell.Explorer EnvironmentUtil.Shell.StartMenu EnvironmentUtil.Shell.TaskBar EnvironmentUtil.Theming #End Region #Region " Properties " EnvironmentUtil.EnvironmentVariables.CurrentVariables(EnvironmentUtil.EnvironmentUser) As ReadOnlyCollection(Of EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo) EnvironmentUtil.OS.ActiveWindowTrackingEnabled As Boolean EnvironmentUtil.OS.ActiveWindowTrackingTimeout As UShort EnvironmentUtil.OS.BeepEnabled As Boolean EnvironmentUtil.OS.BlockSendInputResetsEnabled As Boolean EnvironmentUtil.OS.BorderMultiplierFactor As Integer EnvironmentUtil.OS.CaretWidth As Integer EnvironmentUtil.OS.CleartypeEnabled As Boolean EnvironmentUtil.OS.ClientAreaAnimationEnabled As Boolean EnvironmentUtil.OS.ComboBoxAnimationEnabled As Boolean EnvironmentUtil.OS.CurrentArchitecture() As EnvironmentUtil.OS.Architecture EnvironmentUtil.OS.CursorShadowEnabled As Boolean EnvironmentUtil.OS.DoubleClickSize As Size EnvironmentUtil.OS.DoubleClickTime As Integer EnvironmentUtil.OS.DragFullWindowsEnabled As Boolean EnvironmentUtil.OS.DragSize As Size EnvironmentUtil.OS.DropShadowEnabled As Boolean EnvironmentUtil.OS.FlatMenuEnabled As Boolean EnvironmentUtil.OS.FocusBorderSize As Size EnvironmentUtil.OS.FontSmoothingContrast As Integer EnvironmentUtil.OS.FontSmoothingEnabled As Boolean EnvironmentUtil.OS.ForegroundFlashCount As UShort EnvironmentUtil.OS.ForegroundLockTimeout As UShort EnvironmentUtil.OS.HotTrackingEnabled As Boolean EnvironmentUtil.OS.HungAppTimeout As Integer EnvironmentUtil.OS.IconSpacing As Size EnvironmentUtil.OS.IconTitleWrappingEnabled As Boolean EnvironmentUtil.OS.KeyboardDelay As Integer EnvironmentUtil.OS.KeyboardSpeed As Integer EnvironmentUtil.OS.ListBoxSmoothScrollingEnabled As Boolean EnvironmentUtil.OS.MenuAccessKeysUnderlined As Boolean EnvironmentUtil.OS.MenuAnimationEnabled As Boolean EnvironmentUtil.OS.MenuFadeEnabled As Boolean EnvironmentUtil.OS.MenuShowDelay As Integer EnvironmentUtil.OS.MessageDuration As Long EnvironmentUtil.OS.MouseButtonsSwapEnabled As Boolean EnvironmentUtil.OS.MouseClickLockEnabled As Boolean EnvironmentUtil.OS.MouseClickLockTime As Integer EnvironmentUtil.OS.MouseHoverSize As Size EnvironmentUtil.OS.MouseHoverTime As Integer EnvironmentUtil.OS.MouseSonarEnabled As Boolean EnvironmentUtil.OS.MouseSpeed As Integer EnvironmentUtil.OS.MouseTrailAmount As Integer EnvironmentUtil.OS.MouseVanishEnabled As Boolean EnvironmentUtil.OS.MouseWheelScrollLines As Integer EnvironmentUtil.OS.OverlappedContentEnabled As Boolean EnvironmentUtil.OS.PopupMenuAlignment As LeftRightAlignment EnvironmentUtil.OS.ScreensaverEnabled As Boolean EnvironmentUtil.OS.ScreensaverPath As String EnvironmentUtil.OS.ScreensaverTimeout As Integer EnvironmentUtil.OS.ScreensaveSecureEnabled As Boolean EnvironmentUtil.OS.SelectionFadeEnabled As Boolean EnvironmentUtil.OS.SnapToDefaultEnabled As Boolean EnvironmentUtil.OS.SystemDateTime As Date EnvironmentUtil.OS.SystemLanguageBarEnabled As Boolean EnvironmentUtil.OS.TitleBarGradientEnabled As Boolean EnvironmentUtil.OS.ToolTipAnimationEnabled As Boolean EnvironmentUtil.OS.UIEffectsEnabled As Boolean EnvironmentUtil.OS.WaitToKillAppTimeout As Integer EnvironmentUtil.OS.WaitToKillServiceTimeout As Integer EnvironmentUtil.OS.WheelscrollChars As Integer EnvironmentUtil.Programs.DefaultWebBrowser() As String EnvironmentUtil.Programs.IExplorerVersion() As Version EnvironmentUtil.Shell.Explorer.ExplorerWindows As ReadOnlyCollection(Of ShellBrowserWindow) EnvironmentUtil.Shell.Explorer.ExplorerWindowsFolders As ReadOnlyCollection(Of Shell32.Folder2) EnvironmentUtil.Shell.TaskBar.ClassName() As String EnvironmentUtil.Shell.TaskBar.Hwnd() As Intptr EnvironmentUtil.Theming.AeroEnabled() As Boolean EnvironmentUtil.Theming.AeroSupported() As Boolean EnvironmentUtil.Theming.CurrentTheme() As EnvironmentUtil.Theming.ThemeInfo EnvironmentUtil.Theming.CurrentWallpaper() As String EnvironmentUtil.Theming.WallpaperAsJpegIsSupported() As Boolean EnvironmentUtil.Theming.WallpaperStylesFitFillAreSupported() As Boolean #End Region #Region " Types " EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo EnvironmentUtil.Theming.ThemeInfo #End Region #Region " Functions " EnvironmentUtil.EnvironmentVariables.GetValue(EnvironmentUtil.EnvironmentUser, String, Boolean) As String EnvironmentUtil.EnvironmentVariables.GetVariableInfo(EnvironmentUtil.EnvironmentUser, String, Boolean) As EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo EnvironmentUtil.FileSystem.GetItemVerbs(String) As IEnumerable(Of FolderItemVerb) EnvironmentUtil.FileSystem.ItemNameIsInvalid(String) As Boolean EnvironmentUtil.FileSystem.ItemNameOrPathIsInvalid(String) As Boolean EnvironmentUtil.FileSystem.ItemPathIsInvalid(String) As Boolean #End Region #Region " Methods " EnvironmentUtil.EnvironmentVariables.RegisterVariable(EnvironmentUtil.EnvironmentUser, EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo, Boolean) EnvironmentUtil.EnvironmentVariables.RegisterVariable(EnvironmentUtil.EnvironmentUser, String, String, Boolean) EnvironmentUtil.EnvironmentVariables.UnregisterVariable(EnvironmentUtil.EnvironmentUser, String, Boolean) EnvironmentUtil.FileSystem.InvokeItemVerb(String, String) EnvironmentUtil.OS.NotifyDirectoryAttributesChanged(String) EnvironmentUtil.OS.NotifyDirectoryCreated(String) EnvironmentUtil.OS.NotifyDirectoryDeleted(String) EnvironmentUtil.OS.NotifyDirectoryRenamed(String, String) EnvironmentUtil.OS.NotifyDriveAdded(String, Boolean) EnvironmentUtil.OS.NotifyDriveRemoved(String) EnvironmentUtil.OS.NotifyFileAssociationChanged() EnvironmentUtil.OS.NotifyFileAttributesChanged(String) EnvironmentUtil.OS.NotifyFileCreated(String) EnvironmentUtil.OS.NotifyFileDeleted(String) EnvironmentUtil.OS.NotifyFileRenamed(String, String) EnvironmentUtil.OS.NotifyFreespaceChanged(String) EnvironmentUtil.OS.NotifyMediaInserted(String) EnvironmentUtil.OS.NotifyMediaRemoved(String) EnvironmentUtil.OS.NotifyNetworkFolderShared(String) EnvironmentUtil.OS.NotifyNetworkFolderUnshared(String) EnvironmentUtil.OS.NotifyUpdateDirectory(String) EnvironmentUtil.OS.NotifyUpdateImage() EnvironmentUtil.OS.ReloadSystemCursors() EnvironmentUtil.OS.ReloadSystemIcons() EnvironmentUtil.OS.RunDateTime() EnvironmentUtil.OS.RunExecuteDialog() EnvironmentUtil.OS.RunFindComputer() EnvironmentUtil.OS.RunFindFiles() EnvironmentUtil.OS.RunFindPrinter() EnvironmentUtil.OS.RunHelpCenter() EnvironmentUtil.OS.RunSearchCommand() EnvironmentUtil.OS.RunTrayProperties() EnvironmentUtil.OS.RunWindowsSecurity() EnvironmentUtil.OS.RunWindowSwitcher() EnvironmentUtil.Shell.Desktop.CascadeWindows() EnvironmentUtil.Shell.Desktop.Hide() EnvironmentUtil.Shell.Desktop.Show() EnvironmentUtil.Shell.Desktop.TileWindowsHorizontally() EnvironmentUtil.Shell.Desktop.TileWindowsVertically() EnvironmentUtil.Shell.Desktop.ToggleState() EnvironmentUtil.Shell.Explorer.AddFileToRecentDocs(String) EnvironmentUtil.Shell.Explorer.RefreshWindows() EnvironmentUtil.Shell.StartMenu.PinItem(String) EnvironmentUtil.Shell.StartMenu.UnpinItem(String) EnvironmentUtil.Shell.TaskBar.Hide(Boolean) EnvironmentUtil.Shell.TaskBar.PinItem(String) EnvironmentUtil.Shell.TaskBar.Show(Boolean) EnvironmentUtil.Shell.TaskBar.UnpinItem(String) EnvironmentUtil.Theming.RemoveDesktopWallpaper() EnvironmentUtil.Theming.SetDesktopWallpaper(String, EnvironmentUtil.Theming.WallpaperStyle) EnvironmentUtil.Theming.SetSystemCursor(String, EnvironmentUtil.Theming.CursorType) #End Region #End Region
• Diagrama de Classes: