ElektroKit Framework v2.0 | ( Complemento para el núcleo de .Net Framework )

Iniciado por Eleкtro, 30 Noviembre 2015, 08:35 AM

0 Miembros y 1 Visitante están viendo este tema.

TrashAmbishion

Bueno ayude a tropezones, jajajaja   :xD :xD :xD

Excelente trabajo sigo mirando la libreria...

Salu2

Eleкtro

¡¡ NUEVA VERSIÓN v1.6 YA DISPONIBLE !!

Novedades (no se mencionan todas):

  • El type OutlookMailClient, para administrar una cuenta online de Outlook.com (Hotmail) mediante la API de Microsoft Office 365 y Active Directory (ADAL). No es una class muy completa, pero facilita y simplifica tareas cotidianas como autorizarse, obtener acceso a una carpeta, obtener los mensajes de una carpeta, eliminar mensajes y/o moverlos a otra carpeta, con lo que se puede desarrollar un bonito crawler en unos pocos y sencillos pasos, u otras trastadas mayores...
    (esta class usa métodos asíncronicos así que solo es visible en la versión de ElektroKit que corre bajo los runtimes de .Net Framework 4.5)

  • La class ImgurUtil y el type ImgurUploader, para hospedar imágenes en Internet mediante la API de Imgur.

  • La class DwmPreviewManager, para administrar las imágenes que windows usará para generar la previsualización en miniatura d enuestra app, y también la previsualización peek (Aero Peek). Esta funcionalidad es algo curiosa, me gusta inetntar cosas exóticas :).

  • Nuevas propiedades para trucar algunos parámetros de Windows en la class SystemParameters, como por ejemplo mostrar/ocultar los archivos ocultos del sistema y los archivos protegidos, activar/desactivar la selección de elementos del Explorer mediante el checkbox de selección, ejecutar las instancias de Explorer.exe en procesos paralelos, activar/desactivar el diálogo de confirmación de eliminación de archivos, y mucho más!.
    (los cambios realizados mediante esas propiedades tienen efecto AL INSTANTE, a diferencia de otras implementaciones que se pueden encontrar por Internet que se basan en un uso brusco del registro de Windows lo que implica un reinicio de sesión para aplicar los cambios ;-D)

  • Métodos para la compresión de imágenes (reducción de tamaño más bien), y la extracción y/o el conteo de iconos de un archivo, en la class ImageUtil.

  • Métodos para comprobar la versión del sistema perativo actual (incluyendo Windows 10), en la class OS.

  • Métodos para administrar el esquema de energía actual, en la class Power (véase también el type PowerPlan).

  • Métodos de carga y descarga de Hives de registro (SAM, NTUSER.DAT, etc.) en la class Registry (métodos: LoadHive y UnloadHive).

  • Propiedades para establecer el modo de error de la aplicación o el thread actual, en la class AppUtil (Propiedades: ProcessErrorMode y ThreadErrorMode)

  • Nuevos métodos de descarga asincrónica de archivos, en la class WebUtil.

  • El método ShowShellAboutDialog en la class Applets, para mostrar un diálogo de shell-about personalizado.

  • Métodos para asignar un proceso como crítico, y también para asignar o eliminar privilegios expecíficos de procesos, en la class ProcessUtil.

  • La class VisualBasicProjectFileManager para manipular en tiempo de ejecución las propiedades de un archivo de proyecto de VB.NET (proyecto.vbproj).

  • La class DelphiUtil con un simple método de conversión de equivalencia de tipos para ayudar sobre la interoperabilidad entre Delphi y .NET Framework.

  • Los siguientes types para la interoperabilidad entre Win32: SafeWindowHandle, SafeIconHandle, SafeBitmapHandle, SafeCursorHandle, SafeRegionHandle, y ZeroInvalidHandle (base class).

  • La enumeración HResult para facilitar la programación de código no administrado, la cual contiene los códigos HRESULT más conocidos, incluyendo los códigos HRESULT controlados por las excepciones administradas de .NET Framework.

  • Una basta cantidad de nuevas funciones Win32 (públicas) en la class NativeMethods, con sus correspondientes types, interfaces y enumeraciones en el namespace Elektro.Interop.Win32.

  • Se ha extendido considerablemente los types del namespace Elektro.Application.ThirdParty.TagLibSharp, ahora soportan la manipulación de tags APEv2 y Lyrics3.

  • La cantidad de extensiones de método actuales asciende a 587, aquí tienen la lista:
    https://github.com/ElektroStudios/ElektroKit/blob/master/Documentation/Extension-Method%20List.txt

Cambios:

  • He modificado el nombre de todos los valores de la enumeración WindowsMessages y EditControlMessages, del patrón "WmAbc" a "WM_Abc"; no es correcto añadir un guión bajo en .NET, pero esto facilitará la experiencia de usabilidad al programar en código no administrado.

  • He destripado y eliminado todos los miembros innecesarios del proyecto de terceros WindowsAPICodePack, como los controles de usuario, por lo que ahora es una versión reducida y liviana específica para el uso de ElektroKit. Tenerlo en cuenta, por que he eliminado muchas características que venían en la versión completa de Microsoft.

  • El proyecto ElektroKit.sln ahora es compilado con Visual Studio 2015, lo comento por que no se muy bien si esto afectará a usuarios que intenten compilar en versiones anteriores de Visual Studio.

  • El tamaño total de las librerías de ElektroKit, tanto en modo DEBUG como RELEASE, se ha reducido bastante, ahora pesan alrededor de 1,20 MB en su totalidad los 9 archivos .dll. Esto se debe al modo en que las compila Visual Studio 2015.

  • La class Input, que está relacionada con la API Win32 RAW_INPUT (implementada en funcionalidades de keylogging y mouselogging en el namespace Elektro.Core.IO) se ha dividido en dos classes distintas, Input32 y Input64. Esto es experimental y no lo he testeado, en caso de que Input32 no funcionase en equipos de 32-Bit entonces usar siempre la class Input64, debería funcionar.

Correcciones:

  • El método RedirectUrl en la class WebUtil no redireccionaba correctamente si la url apuntaba hacia ciertos servicios conocidos, como por ejemplo una url de RapidGator.net.
    El motivo de este fallo es específico de cada servidor y sus headers, pero como solución generalizada y alternativa he añadido un overload para especificar un user-agent personalizado, lo cual funcionará según que servicios (para RapidGator.net, funciona).

  • No se estaba disminuyendo correctamente a 0 la cantidad de referencias R.C.W. de algunos objetos COM que se usan internamente por algunas classes de ElektroKit,
    Esto se ha solucionado llamando directamente al método Marshal.FinalReleaseComObject() en lugar de disminuir 1 sola referencia con Marshal.ReleaseComObject().

  • Se han limpiado y dereferenciado todos los ensamblados y namespaces de .NET Framework innecesarios.

  • Algunos módulos de extensiones no eran visibles mediante Intellisense al intentar escribir el namespace completo, eso se debe a que el nombre del módulo se llamaba de la misma manera que algún método en su interior, la solución ha sido cambiar el nombre de los módulos conflictivos.
    Este cambio no afecta en absoluto en caso de que estuviesemos utilizando las extensiones de método de forma regular (type.Extension()) y no escribiendo el namespace completo (Namespace.Extension(type)).

  • Constantes refactorizaciones/optimizaciones por aquí y por allá, sin mayor importancia en realidad, pero los nombres de algunos miembros de ElektroKit pueden haber cambiado, o su modo de empleo.

Saludos!








Eleкtro

¡¡ NUEVA VERSIÓN v1.7 YA DISPONIBLE !!

En esta versión, los cambios más importantes son estéticos y no afectan al usuario final. Literálmente he tenido que modificar una a una las más de mil classes/archivos que componen a ElektroKit para realizar estos cambios; ha sido una refactorización bastante completa de la jerarquía y herencia de miembros, así que aunque esto no sea una actualización con muchas características nuevas, se puede decir que es una gran actualización como para llamarse v1.7.

Cabe mencionar que como consecuencia de los cambios estéticos, las librerias ocupen menos, y los documentos Xml mucho menos.

También he corregido algunos pequeños bugs, he añadido nuevos métodos y types, y he refactorizado algunas partes del código fuente, pero no hay nada que destacar en todo ello.

Saludos.








Eleкtro

¡¡ NUEVA VERSIÓN v1.8 YA DISPONIBLE !!

Cambios y novedades (no se menciona todo):


  • Todas las clases de ElektroKit que heredan del tipo EventArgs y Exception se han agrupado en namespaces/directorios aparte, ahora el código fuente y su representación visual está algo más organizada.
  • Añadida la class HUDForm en el namespace Elektro.Application.ThirdParty.SharpDX.Types para tener la base principal con la que poder desarrollar una ventana HUD para un juego de terceros (es muy básico).
  • Añadida la class LibVideoUtil para descargar videos de Youtube mediante la librería libvideo (el sucesor no oficial de YoutubeExtractor) Elektro.Application.ThirdParty.LibVideo.Tools.LibVideoUtil.
  • Añadido varios módulos de extensiones para facilitar el uso de la API oficial de Youtube, en el namespace: Elektro.Application.ThirdParty.Google.Youtube.Extensions.
  • Añadido métodos adicionales de descagra de datos en la class WebUtil (DownloadData(), DownloadDataAsync(), DownloadImage(), DownloadImageAsync()).
  • Añadido extensiones adicionales para el reciclaje de archivos y directorios en los módulos de extensiones: Elektro.Core.IO.Extensions.FileInfo y Elektro.Core.IO.Extensions.DirectoryInfo. (FileInfo.Recycle() y DirectoryInfo.Recycle())
  • Añadido métodos de extensiones para el agrupamiento y la unión de agrupamientos para colecciones IEnumerable , en el namespace: Elektro.Core.Generics.Extensions.IEnumerable (archivos: Group.vb y Join.vb).

PD: Muchas de las características mencionadas de ElektroKit solo están disponibles en los ensamblados compilados bajo .Net Framework 4.5.

Saludos!








Eleкtro

¡¡ NUEVA VERSIÓN v1.9 YA DISPONIBLE !!

Cambios y novedades (no se menciona todo)


  • ElektroKit ahora también se distribuye bajo .NET Framework 4.6.


  • La herramienta AutomatedCompilerTask.exe que acompaña al código fuente de ElektroKit, la cual sirve para compilar de forma totalmente automatizada todas las configuraciones y plataformas del proyecto, ha sido actualizada para soportar .NET Framework 4.6.


  • Añadida la class GoogleSearch para utilizar el servicio de búsqueda de Google (de forma gratuita) mediante el type GoogleSearchOptions, y obtener los resultados de búsqueda representados con el type GoogleSearchResult.


  • El método genérico Elektro.Core.Diagnostics.Tools.ProfillingUtil.SwapObjects(Of T)(T, T) para invertir el valor de dos objetos.


  • El método Elektro.Application.UI.Tools.CLI.CLIUtil.SpinCursor() y Elektro.Application.UI.Tools.CLI.CLIUtil.SpinCursorTask() para crear una animación peculiar de "cargando..." para una aplicación de consola.




  • Se han añadido los siguientes métodos asincrónicos a la class Elektro.Application.UI.Tools.CLI.TypeWritter

    • WriteTask() As Task
    • WriteLineTask() As Task
    • WriteColorTask() As Task
    • WriteColorLineTask() As Task




  • La extensión NameValueCollection.ToGETRequestString() para facilitar el formato de un string para realizar una petición GET a un servicio Web.


  • Más overloads añadidos para el método Elektro.Application.Tools.AppUtil.SleepRandom()


  • La class Elektro.Interop.Tools.CompilerUtil.SubsystemVersions pasa de ser privada a pública, para el uso que se le pueda dar fuera de ElektroKit.


  • La class Elektro.Interop.Tools.CompilerUtil.SourceCodeTemplates pasa a llamarse Elektro.Interop.Tools.CompilerUtil.Snippets y el contenido se ha dividido en las siguientes classes:
    Elektro.Interop.Tools.CompilerUtil.Snippets.VisualBasicNET
    Elektro.Interop.Tools.CompilerUtil.Snippets.CSharp


  • Se han añadido las siguientes classes con varios snippets y plantillas de código:

    • Elektro.Interop.Tools.CompilerUtil.Snippets.DOS
    • Elektro.Interop.Tools.CompilerUtil.Snippets.javascript
    • Elektro.Interop.Tools.CompilerUtil.Snippets.Python
    • Elektro.Interop.Tools.CompilerUtil.Snippets.Regedit
    • Elektro.Interop.Tools.CompilerUtil.Snippets.Ruby
    • Elektro.Interop.Tools.CompilerUtil.Snippets.VisualBasicScript


  • Se han añadido overloads del método Elektro.Interop.Tools.CompilerUtil.CompileProject()para poder utilizar el compilador MsBuild.exe para .NET Framework 4.5, 4.6, y 4.6.1,
    y también para poder compilar una configuración y plataforma específica del proyecto (ej. Release -> Any CPU)


  • Una variedad de extensiones para la conversión de types y exportación de formatos para los siguientes types: DataTable, DataGridView, ListView.
    Lista completa:

    • DataTable.ExportToCSV() As String
    • DataTable.ExportToXml() As String
    • DataTable.ToDataGridView() As DataGridView
    • DataTable.ToListView() As ListView
    • DataTable.ToList() As List(Of Dictionary(Of String, Object))


    • DataGridView.ExportToCSV() As String
    • DataGridView.ExportToXml() As String
    • DataGridView.ToDataTable() As DataTable
    • DataGridView.ToListView() As ListView


    • ListView.ExportToCSV() As String
    • ListView.ExportToXml() As String
    • ListView.ToDataTable() As DataTable
    • ListView.ToDataGridView() As DataGridView

    ( todos ellos con ejemplos de uso prácticos y sencillos. )


Correcciones


  • En el método Elektro.Application.Tools.AppUtil.SleepRandom(), el parámetro del tipo TimeSpan se interpretaba en segundos, no millisegundos.








Eleкtro

¡¡ NUEVA VERSIÓN v2.0 YA DISPONIBLE !!

Aparte de las típicas adiciones de métodos y funciones, la corrección de algunas cosas, o la actualización y refactorización de otras tantas, no solo del código sino también de la documentación, estos son algunos de cambios y novedades importantes de esta nueva versión:



  • Se ha añadido un nuevo método experimental SafePInvoke en la class Elektro.Interop.Tools.UnmanagedUtil, su propósito es doble, proporcionar mayor control al llamar a funciones Win32 y hacerlo escribiendo menos código del habitual.


  • Se ha añadido una nueva class Elektro.Core.Xml.Tools.JsonUtil, con utilidades para código JSON, entre ellos convertir un código JSON a varios tipos admiinstrados de Xml, y un método para embellecer y/o minificar un código de JSON (BeautifyJson/MinifyJson).


  • En el espacio de nombres Elektro.Application.ThirdParty.Office365.Types, la class OutlookMailClient pasa a llamarse OutlookMailClientExperimental, y ahora hay una nueva class OutlookMailClient. La diferencia está en que se utilizan las nuevas builds de la API de Microsoft, he dejado la versión antigua o "experimental" por que en mi caso me resulta muy útil, sobre todo por la facilidad de login en una cuenta de Outlook.com.


  • Se ha añadido un nuevo type, Elektro.Core.IO.Types.FileSignature, con el que podemos crear y representar una firma de archivo. Y el type Elektro.Core.IO.Types.FileTypeMatch con el que podemos obtener los datos de un análisis de firmas.


  • Más overloads añadidos a la class Elektro.System.Tools.Registry para la manipulación de entradas del registro de Windows.


  • (Esto solo afecta al examinar el código fuente) Todas las definiciones de funciones de la API de Windows se han reorganizado de forma alfabetica (por nombre de la dll) de la siguiente manera:



  • Se han añadido las siguientes extensiones de método en el espacio de nombres Elektro.Core.Generics.Extensions.Nullable para la conversión entre tipos de datos nulables:

    • Nullable(Of TSource, TTarget).ConvertTo(Func(Of TSource, TTarget)) As Nullable(Of TTarget)
    • Nullable(Of T)().ConvertToNonNullable(T) As T()


  • Se han añadido una nueva class Elektro.Core.IO.Tools.FileTypeUtil.vb la cual sirve para determinar el tipo de archivo de un archivo, examinando la cabecera con una lista de firmas (la cual es extendible en tiempo de ejecución), estos son las funciones expuestas en dicha class:

    • GetFileTypeMatch(FileInfo, FileType) As FileTypeMatch
    • GetFileTypeMatch(String, FileType) As FileTypeMatch
    • GetFileTypeMatches(FileInfo) As List(Of FileTypeMatch)
    • GetFileTypeMatches(FileInfo, FileType()) As List(Of FileTypeMatch)
    • GetFileTypeMatches(String) As List(Of FileTypeMatch)
    • GetFileTypeMatches(String, FileType()) As List(Of FileTypeMatch)


  • Se ha añadido una nueva class Elektro.Multimedia.Gaming.Types.SnesRom para representar y manipular una ROM de super nintendo (para hacer rom hacking),
    en combinación con el type SnesCountry y las siguientes enumeraciones:

    • SnesBankTypeEnum
    • SnesCartridgeTypeEnum
    • SnesHeaderTypeEnum
    • SnesLicenseCodeEnum
    • SnesRegionTypeEnum
    • SnesRomSizeEnum
    • SnesSramSizeEnum


  • Se han añadido más plantillas de código fuente y snippets predefinidos en el espacio de nombres Elektro.Interop.Tools.CompilerUtil.SourceCodeTemplates:

    • SourceCodeTemplates.PowerShell
    • SourceCodeTemplates.Regedit

    Y se han actualizado y/o también optimizado el resto de plantillas de otros lenguajes que ya estaban definidos.


  • Se ha añadido una nueva class Elektro.System.Tools.SystemInfo.Steam para obtener información de una instalación del cliente de video juegos Steam, mediante las sigueintes propiedades


    • AccountRecoveryUrl As String
    • ClientCulture As CultureInfo
    • ClientFile As FileInfo
    • ClientLanguage As String
    • InstallDir As DirectoryInfo
    • IsInstalled As Boolean
    • RegistryInstallPath As String
    • RegistryUninstallPath As String
    • Version As Version


  • Se ha añadido la class Elektro.System.Tools.SystemInfo.Volume para obtener información de los volúmenes (particiones) montados en el sistema. Estas son algunas de las propiedades que podemos encontrar en dicha class:

    • ExtendedUncPathPrefix As String
    • IsCompressed(String) As Boolean
    • IsReadOnly(String) As Boolean
    • MaxComponentPathLength(String) As Integer
    • MaxExtendedPathLength As Integer
    • MaxPathLength As Integer
    • SerialNumber(String) As String
    • SupportsEncryption(String) As Boolean
    • SupportsExtendedFileAttributes(String) As Boolean
    • SupportsExtendedPath(String) As Boolean
    • SupportsFileCompression(String) As Boolean
    • SupportsHardLinks(String) As Boolean


  • Se han añadido los siguientes tweaks en la class Elektro.System.Tools.Tweaking.SystemParameters para manipular distintos aspectos de la configuración del sistema operativo:

    • AeroPeekEnabled As Boolean
    • BingSearchEnabled As Boolean
    • CombineSystemTrayIcons As Boolean
    • CombineTaskbarApplications As Boolean
    • ConsoleBackColor As ConsoleColor
    • ConsoleBufferAmount As Integer
    • ConsoleBufferSize As Integer
    • ConsoleEditEnabled As Boolean
    • ConsoleForeColor As ConsoleColor
    • ConsoleTransparency As Single
    • Consolev2Enabled As Boolean
    • CortanaEnabled As Boolean
    • CortanaSearchBoxEnabled As Boolean
    • CortanaSearchEnabled As Boolean
    • DesktopAutoColorizationEnabled As Boolean
    • ExplorerNavigationPanelEnabled As Boolean
    • ExtendedPathsEnabled As Boolean
    • FolderMergeConflictDialogEnabled As Boolean
    • HideDrivesWithNoMedia As Boolean
    • HotCornerTopLeftEnabled As Boolean
    • LowDiskFreeSpaceNotificationEnabled As Boolean
    • MinimumSelectedItemsToInvokeMenu As Integer
    • MyPCDisplayName As String
    • NotepadWordwrapEnabled As Boolean
    • NotificationCenterEnabled As Boolean
    • SecurityCenterNotificationsEnabled As Boolean
    • ShowFrequentDirsInQuickAccess As Boolean
    • ShowFullPathInExplorer As Boolean
    • ShowOneDriveInFolderBrowser As Boolean
    • ShowOneDriveInMyPC As Boolean
    • ShowQuickAccessInFolderBrowser As Boolean
    • ShowQuickAccessInMyPC As Boolean
    • ShowRecentItemsInQuickAccess As Boolean
    • ShowShortcutFileExtension As Boolean
    • ShowShortcutSuffix As Boolean
    • ShowUrlFileExtension As Boolean
    • ShowWindowsStorePinnedInTaskbar As Boolean
    • SlowSearchNotificationEnabled As Boolean
    • WindowArrangementEnabled As Boolean
    • WindowsErrorReportingEnabled As Boolean










Eleкtro

Hola!.

Algunas personas me han preguntado por que ElektroKit ha desaparecido de Github y NuGet (esto está en proceso todavía), pues bien, voy a explicarlo:

Para mi ha sido un placer compartir este gran proyecto de manera gratuita y desinteresada durante más de un año, actualización tras actualización, esfuerzo tras esfuerzo por perfeccionar este framework, pero ha llegado el momento de intentar sacarle un beneficio convirtiéndolo en un producto de pago, sobre todo con la nueva llegada de la versión (privada) 2.1

Así pues, les comunico que a partir de ahora ElektoKit se vuelve un producto de pago.

Si alguien estuviese interesado en adquirir ElektroKit, por favor, que esa persona se comunique conmigo mediante el e-mail que se muestra en mi perfil de usuario de este foro, y le informaré los pasos a seguir.

[youtube=640,360]https://www.youtube.com/watch?v=9l4EAk4dSOA[/youtube]

Espero que vosotros también hayais disfrutado de esta librería y os haya servido tanto como a mi. Ya no tiene sentido que este tema siga abierto... Cierro El Tema.

NOTA: PUEDEN ENCONTRAR ELEKTROKIT Y OTROS DE MIS PRODUCTOS A LA VENTA EN CODECANYON.

¡Un saludo y feliz año!