elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)  (Leído 2,948 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
[SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
« en: 27 Junio 2015, 19:40 pm »


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
  1. #Region " Public Members Summary "
  2.  
  3. #Region " Child Util-Classes "
  4.  
  5. EnvironmentUtil.EnvironmentVariables
  6. EnvironmentUtil.FileSystem
  7. EnvironmentUtil.OS
  8. EnvironmentUtil.Programs
  9. EnvironmentUtil.Shell
  10. EnvironmentUtil.Shell.Desktop
  11. EnvironmentUtil.Shell.Explorer
  12. EnvironmentUtil.Shell.StartMenu
  13. EnvironmentUtil.Shell.TaskBar
  14. EnvironmentUtil.Theming
  15.  
  16. #End Region
  17.  
  18. #Region " Properties "
  19.  
  20. EnvironmentUtil.EnvironmentVariables.CurrentVariables(EnvironmentUtil.EnvironmentUser) As ReadOnlyCollection(Of EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo)
  21. EnvironmentUtil.OS.ActiveWindowTrackingEnabled As Boolean
  22. EnvironmentUtil.OS.ActiveWindowTrackingTimeout As UShort
  23. EnvironmentUtil.OS.BeepEnabled As Boolean
  24. EnvironmentUtil.OS.BlockSendInputResetsEnabled As Boolean
  25. EnvironmentUtil.OS.BorderMultiplierFactor As Integer
  26. EnvironmentUtil.OS.CaretWidth As Integer
  27. EnvironmentUtil.OS.CleartypeEnabled As Boolean
  28. EnvironmentUtil.OS.ClientAreaAnimationEnabled As Boolean
  29. EnvironmentUtil.OS.ComboBoxAnimationEnabled As Boolean
  30. EnvironmentUtil.OS.CurrentArchitecture() As EnvironmentUtil.OS.Architecture
  31. EnvironmentUtil.OS.CursorShadowEnabled As Boolean
  32. EnvironmentUtil.OS.DoubleClickSize As Size
  33. EnvironmentUtil.OS.DoubleClickTime As Integer
  34. EnvironmentUtil.OS.DragFullWindowsEnabled As Boolean
  35. EnvironmentUtil.OS.DragSize As Size
  36. EnvironmentUtil.OS.DropShadowEnabled As Boolean
  37. EnvironmentUtil.OS.FlatMenuEnabled As Boolean
  38. EnvironmentUtil.OS.FocusBorderSize As Size
  39. EnvironmentUtil.OS.FontSmoothingContrast As Integer
  40. EnvironmentUtil.OS.FontSmoothingEnabled As Boolean
  41. EnvironmentUtil.OS.ForegroundFlashCount As UShort
  42. EnvironmentUtil.OS.ForegroundLockTimeout As UShort
  43. EnvironmentUtil.OS.HotTrackingEnabled As Boolean
  44. EnvironmentUtil.OS.HungAppTimeout As Integer
  45. EnvironmentUtil.OS.IconSpacing As Size
  46. EnvironmentUtil.OS.IconTitleWrappingEnabled As Boolean
  47. EnvironmentUtil.OS.KeyboardDelay As Integer
  48. EnvironmentUtil.OS.KeyboardSpeed As Integer
  49. EnvironmentUtil.OS.ListBoxSmoothScrollingEnabled As Boolean
  50. EnvironmentUtil.OS.MenuAccessKeysUnderlined As Boolean
  51. EnvironmentUtil.OS.MenuAnimationEnabled As Boolean
  52. EnvironmentUtil.OS.MenuFadeEnabled As Boolean
  53. EnvironmentUtil.OS.MenuShowDelay As Integer
  54. EnvironmentUtil.OS.MessageDuration As Long
  55. EnvironmentUtil.OS.MouseButtonsSwapEnabled As Boolean
  56. EnvironmentUtil.OS.MouseClickLockEnabled As Boolean
  57. EnvironmentUtil.OS.MouseClickLockTime As Integer
  58. EnvironmentUtil.OS.MouseHoverSize As Size
  59. EnvironmentUtil.OS.MouseHoverTime As Integer
  60. EnvironmentUtil.OS.MouseSonarEnabled As Boolean
  61. EnvironmentUtil.OS.MouseSpeed As Integer
  62. EnvironmentUtil.OS.MouseTrailAmount As Integer
  63. EnvironmentUtil.OS.MouseVanishEnabled As Boolean
  64. EnvironmentUtil.OS.MouseWheelScrollLines As Integer
  65. EnvironmentUtil.OS.OverlappedContentEnabled As Boolean
  66. EnvironmentUtil.OS.PopupMenuAlignment As LeftRightAlignment
  67. EnvironmentUtil.OS.ScreensaverEnabled As Boolean
  68. EnvironmentUtil.OS.ScreensaverPath As String
  69. EnvironmentUtil.OS.ScreensaverTimeout As Integer
  70. EnvironmentUtil.OS.ScreensaveSecureEnabled As Boolean
  71. EnvironmentUtil.OS.SelectionFadeEnabled As Boolean
  72. EnvironmentUtil.OS.SnapToDefaultEnabled As Boolean
  73. EnvironmentUtil.OS.SystemDateTime As Date
  74. EnvironmentUtil.OS.SystemLanguageBarEnabled As Boolean
  75. EnvironmentUtil.OS.TitleBarGradientEnabled As Boolean
  76. EnvironmentUtil.OS.ToolTipAnimationEnabled As Boolean
  77. EnvironmentUtil.OS.UIEffectsEnabled As Boolean
  78. EnvironmentUtil.OS.WaitToKillAppTimeout As Integer
  79. EnvironmentUtil.OS.WaitToKillServiceTimeout As Integer
  80. EnvironmentUtil.OS.WheelscrollChars As Integer
  81. EnvironmentUtil.Programs.DefaultWebBrowser() As String
  82. EnvironmentUtil.Programs.IExplorerVersion() As Version
  83. EnvironmentUtil.Shell.Explorer.ExplorerWindows As ReadOnlyCollection(Of ShellBrowserWindow)
  84. EnvironmentUtil.Shell.Explorer.ExplorerWindowsFolders As ReadOnlyCollection(Of Shell32.Folder2)
  85. EnvironmentUtil.Shell.TaskBar.ClassName() As String
  86. EnvironmentUtil.Shell.TaskBar.Hwnd() As Intptr
  87. EnvironmentUtil.Theming.AeroEnabled() As Boolean
  88. EnvironmentUtil.Theming.AeroSupported() As Boolean
  89. EnvironmentUtil.Theming.CurrentTheme() As EnvironmentUtil.Theming.ThemeInfo
  90. EnvironmentUtil.Theming.CurrentWallpaper() As String
  91. EnvironmentUtil.Theming.WallpaperAsJpegIsSupported() As Boolean
  92. EnvironmentUtil.Theming.WallpaperStylesFitFillAreSupported() As Boolean
  93.  
  94. #End Region
  95.  
  96. #Region " Types "
  97.  
  98. EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo
  99. EnvironmentUtil.Theming.ThemeInfo
  100.  
  101. #End Region
  102.  
  103. #Region " Functions "
  104.  
  105. EnvironmentUtil.EnvironmentVariables.GetValue(EnvironmentUtil.EnvironmentUser, String, Boolean) As String
  106. EnvironmentUtil.EnvironmentVariables.GetVariableInfo(EnvironmentUtil.EnvironmentUser, String, Boolean) As EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo
  107. EnvironmentUtil.FileSystem.GetItemVerbs(String) As IEnumerable(Of FolderItemVerb)
  108. EnvironmentUtil.FileSystem.ItemNameIsInvalid(String) As Boolean
  109. EnvironmentUtil.FileSystem.ItemNameOrPathIsInvalid(String) As Boolean
  110. EnvironmentUtil.FileSystem.ItemPathIsInvalid(String) As Boolean
  111.  
  112. #End Region
  113.  
  114. #Region " Methods "
  115.  
  116. EnvironmentUtil.EnvironmentVariables.RegisterVariable(EnvironmentUtil.EnvironmentUser, EnvironmentUtil.EnvironmentVariables.EnvironmentVariableInfo, Boolean)
  117. EnvironmentUtil.EnvironmentVariables.RegisterVariable(EnvironmentUtil.EnvironmentUser, String, String, Boolean)
  118. EnvironmentUtil.EnvironmentVariables.UnregisterVariable(EnvironmentUtil.EnvironmentUser, String, Boolean)
  119. EnvironmentUtil.FileSystem.InvokeItemVerb(String, String)
  120. EnvironmentUtil.OS.NotifyDirectoryAttributesChanged(String)
  121. EnvironmentUtil.OS.NotifyDirectoryCreated(String)
  122. EnvironmentUtil.OS.NotifyDirectoryDeleted(String)
  123. EnvironmentUtil.OS.NotifyDirectoryRenamed(String, String)
  124. EnvironmentUtil.OS.NotifyDriveAdded(String, Boolean)
  125. EnvironmentUtil.OS.NotifyDriveRemoved(String)
  126. EnvironmentUtil.OS.NotifyFileAssociationChanged()
  127. EnvironmentUtil.OS.NotifyFileAttributesChanged(String)
  128. EnvironmentUtil.OS.NotifyFileCreated(String)
  129. EnvironmentUtil.OS.NotifyFileDeleted(String)
  130. EnvironmentUtil.OS.NotifyFileRenamed(String, String)
  131. EnvironmentUtil.OS.NotifyFreespaceChanged(String)
  132. EnvironmentUtil.OS.NotifyMediaInserted(String)
  133. EnvironmentUtil.OS.NotifyMediaRemoved(String)
  134. EnvironmentUtil.OS.NotifyNetworkFolderShared(String)
  135. EnvironmentUtil.OS.NotifyNetworkFolderUnshared(String)
  136. EnvironmentUtil.OS.NotifyUpdateDirectory(String)
  137. EnvironmentUtil.OS.NotifyUpdateImage()
  138. EnvironmentUtil.OS.ReloadSystemCursors()
  139. EnvironmentUtil.OS.ReloadSystemIcons()
  140. EnvironmentUtil.OS.RunDateTime()
  141. EnvironmentUtil.OS.RunExecuteDialog()
  142. EnvironmentUtil.OS.RunFindComputer()
  143. EnvironmentUtil.OS.RunFindFiles()
  144. EnvironmentUtil.OS.RunFindPrinter()
  145. EnvironmentUtil.OS.RunHelpCenter()
  146. EnvironmentUtil.OS.RunSearchCommand()
  147. EnvironmentUtil.OS.RunTrayProperties()
  148. EnvironmentUtil.OS.RunWindowsSecurity()
  149. EnvironmentUtil.OS.RunWindowSwitcher()
  150. EnvironmentUtil.Shell.Desktop.CascadeWindows()
  151. EnvironmentUtil.Shell.Desktop.Hide()
  152. EnvironmentUtil.Shell.Desktop.Show()
  153. EnvironmentUtil.Shell.Desktop.TileWindowsHorizontally()
  154. EnvironmentUtil.Shell.Desktop.TileWindowsVertically()
  155. EnvironmentUtil.Shell.Desktop.ToggleState()
  156. EnvironmentUtil.Shell.Explorer.AddFileToRecentDocs(String)
  157. EnvironmentUtil.Shell.Explorer.RefreshWindows()
  158. EnvironmentUtil.Shell.StartMenu.PinItem(String)
  159. EnvironmentUtil.Shell.StartMenu.UnpinItem(String)
  160. EnvironmentUtil.Shell.TaskBar.Hide(Boolean)
  161. EnvironmentUtil.Shell.TaskBar.PinItem(String)
  162. EnvironmentUtil.Shell.TaskBar.Show(Boolean)
  163. EnvironmentUtil.Shell.TaskBar.UnpinItem(String)
  164. EnvironmentUtil.Theming.RemoveDesktopWallpaper()
  165. EnvironmentUtil.Theming.SetDesktopWallpaper(String, EnvironmentUtil.Theming.WallpaperStyle)
  166. EnvironmentUtil.Theming.SetSystemCursor(String, EnvironmentUtil.Theming.CursorType)
  167.  
  168. #End Region
  169.  
  170. #End Region

• Diagrama de Classes:















« Última modificación: 27 Junio 2015, 20:03 pm por Eleкtro » En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
« Respuesta #1 en: 27 Junio 2015, 20:23 pm »

¡Grandísimo aporte Elektro! ¡Enorme! Sigues en tus trece ;)

Me ha llamado la atención los métodos de notifificación, ¿a caso estás hookeando algun módulo para que te chive que carpetas (por ejemplo) se han creado en X directorio? ¿O usas algún componente COM?

Saludos.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
« Respuesta #2 en: 27 Junio 2015, 20:32 pm »

Gracias por comentar.

¿a caso estás hookeando algun módulo para que te chive que carpetas (por ejemplo) se han creado en X directorio?

Esos métodos de notificación son un simple wrapper de la función SHChangeNotify
Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

Los métodos de notificación están ahí para que cada uno quiera darle los propósitos que uno quiera, es útil por ejemplo al registrar una asociación de archivo, o tras modificar los iconos del sistema, o si tienes la ventana del explorer abierta en "Mi PC" y quieres refrescar los cambios de espacio libre en los labels, o si hookeas alguna función que crea carpetas y quieres notificar al sistema la carpeta creada por algún motivo cómo has mencionado, simplemente están ahí para cualquier uso.

Saludos!
« Última modificación: 27 Junio 2015, 20:47 pm por Eleкtro » En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
« Respuesta #3 en: 27 Junio 2015, 21:08 pm »

Los métodos de notificación están ahí para que cada uno quiera darle los propósitos que uno quiera, es útil por ejemplo al registrar una asociación de archivo, o tras modificar los iconos del sistema, o si tienes la ventana del explorer abierta en "Mi PC" y quieres refrescar los cambios de espacio libre en los labels, o si hookeas alguna función que crea carpetas y quieres notificar al sistema la carpeta creada por algún motivo cómo has mencionado, simplemente están ahí para cualquier uso.

Solo concierne a la aplicación, vale pensé que era global.

Por lo demás buen trabajo, supongo que lo habrás incluido en los posts recopilatorios. Sino chincheta (sin problemas).

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: [SOURCE] Environment Util (Un set de classes para VB.Net sobre el entorno Win)
« Respuesta #4 en: 27 Junio 2015, 21:40 pm »

Solo concierne a la aplicación, vale pensé que era global.

Si te refieres a que si había implementado algún Hook para interceptar la eliminación de archivos de manera global o algo parecido... pues no.

En cambio, si lo dices por esto:
Citar
Notifies the system of an event that an application has performed. An application should use this function if it performs an action that may affect the Shell.

...entonces no te dejes engañar confundir por lo que pone, si que afecta de manera global, por ejemplo si eliminas un archivo desde la consola de Windows y quieres refrescar los cambios de la carpeta donde se eliminó, puedes hacerlo llamando a esa función desde tu app.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines