Autor
|
Tema: ElektroKit Framework v2.0 | ( Complemento para el núcleo de .Net Framework ) (Leído 36,045 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
estoy haciendo lo siguiente añado la referencia Declaro una variable Dim prueba As Elektro.Net.Tools.NetworkUtil
prueba me sale sin ningun metodo ni propiedad... que puede estar pasando toy con vs2015 Hola No sale ningún miembro por que no le has asignado ningún valor a dicha variable (es una referecia nula), pero de todas formas la clase Elektro.Net.Tools.NetworkUtil no es instanciable, por lo que no le encuentro sentido a lo que estás intentando, ¿Cual es tu intención con esa variable?. Si lo que pretendes es crear una referencia corta del espacio de nombres, entonces puedes hacerlo de la siguiente manera: Imports prueba = Elektro.Net.Tools.NetworkUtil Public NotInheritable Class Form1 : Inherits Form Private Sub Test() Handles MyBase.Load Dim ip As String = prueba.GetPublicIp() Console.WriteLine(ip) End Sub End Class
PD: Las clases que son instanciables están en los nombres de espacios que empiezan por: Elektro.X.Types (en este caso Elektro.Net.Types), y las que no son instanciables están en los espacios de nombre que empiezan por: Elektro.X.Tools (en este caso Elektro.Net.Tools). Espero que te sirva de ayuda! Saludos
|
|
« Última modificación: 14 Abril 2016, 20:32 pm por Eleкtro »
|
En línea
|
|
|
|
TrashAmbishion
Desconectado
Mensajes: 756
|
El ejemplo de NetWorkTrafficMonitor cuando lo cargo en el VS2010 de mi trabajo me da 1 error.......
Error 1
'Elektro.Net.Types.NetworkTrafficMonitor.Protected Friend Event TrafficChanged(sender As Object, e As Elektro.Net.Types.TrafficChangedEventArgs)' is not accessible in this context because it is 'Protected Friend'.
Salu2
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
@TrashAmbishion 'Elektro.Net.Types.NetworkTrafficMonitor.Protected Friend Event TrafficChanged(sender As Object, e As Elektro.Net.Types.TrafficChangedEventArgs)' is not accessible in this context because it is 'Protected Friend'. Has descubierto un bug de diseño. Por algún motivo le cambié la visibilidad al evento (no se por qué lo hice, despues de haberlo testeado y haber escrito el ejemplo que estuviste intentado usar xD). Si quieres puedes recompilar tu mismo la libería, solo tienes que buscar la clase NetworkTrafficMonitor y modificar la visibilidad del miembro... de: Protected Friend Event TrafficChanged As EventHandler(Of TrafficChangedEventArgs)
a: Public Event TrafficChanged As EventHandler(Of TrafficChangedEventArgs)
De todas formas, aquí te subo la librería ya corregida y con algunos otros cambios: (Elektro.Net.dll v1.6 BETA; .NetFx4.0; AnyCPU\Debug)
Y aquí tienes un ejemplo de uso (actualizado): Imports Elektro.Net.Enums Imports Elektro.Net.Tools Imports Elektro.Net.Types Public NotInheritable Class Form1 : Inherits Form Friend WithEvents NetMon As NetworkTrafficMonitor Private Sub Form1_Shown() Handles MyBase.Shown Me.InitializeNetMon() End Sub Private Sub InitializeNetMon() Try If Not NetworkTrafficMonitor.GetAvaliableInterfaceNames.Any() Then Throw New Exception("Any available network interface found.") Else Me.NetMon = New NetworkTrafficMonitor(NetworkTrafficMonitor.GetAvaliableInterfaceNames.First()) Me.NetMon.UpdateBehavior = TrafficMonitorUpdateBehavior.FireAlwaysAfterTick Me.NetMon.UpdateInterval = 1000 ' 1 sec Me.NetMon.Start() End If Catch ex As Win32Exception When ex.ErrorCode = -2147467259 MessageBox.Show("Cannot initialize network monitor. Ensure to enable performance counters service.", "", MessageBoxButtons.OK, MessageBoxIcon.Error) Catch ex As Exception Throw End Try End Sub ''' ---------------------------------------------------------------------------------------------------- ''' <summary> ''' Handles the <see cref="NetworkTrafficMonitor.TrafficChanged"/> event of the NetMon instance. ''' </summary> ''' ---------------------------------------------------------------------------------------------------- ''' <param name="sender"> ''' The source of the event. ''' </param> ''' ''' <param name="e"> ''' The <see cref="TrafficChangedEventArgs"/> instance containing the event data. ''' </param> ''' ---------------------------------------------------------------------------------------------------- Private Sub NetMon_TrafficChanged(ByVal sender As Object, ByVal e As TrafficChangedEventArgs) _ Handles NetMon.TrafficChanged Me.LabelBytesReceived.Text = String.Format("Bytes received: {0} kb", (e.BytesReceived / 1024).ToString("n2")) Me.LabelDlSpeed.Text = String.Format("DL Speed: {0} kb/sec", (e.DiffBytesReceived / 1024).ToString("n2")) Me.LabelBytesSent.Text = String.Format("Bytes sent: {0} kb", (e.BytesSent / 1024).ToString("n2")) Me.LabelUlSpeed.Text = String.Format("UL Speed: {0} kb/sec", (e.DiffBytesSent / 1024).ToString("n2")) End Sub Private Sub BtDownloadUrl_Click() Handles BtDownloadUrl.Click Dim url As String = "http://download.thinkbroadband.com/10MB.zip" Dim client As New WebClient() client.DownloadFileAsync(New Uri(url), Path.GetTempFileName()) End Sub Private Sub BtPauseMon_Click() Handles BtPauseMon.Click If Me.NetMon.IsActive Then Me.NetMon.Stop() Else Me.NetMon.Start() End If End Sub End Class
Saludos
|
|
« Última modificación: 18 Abril 2016, 10:08 am por Eleкtro »
|
En línea
|
|
|
|
Lekim
Desconectado
Mensajes: 268
|
Hola elektro Me ha surgido el siguiente problema con Elektro.Kit El ensamblado al que se hace referencia "Elektro.Net" no se pudo resolver Advertencia 1 El ensamblado al que se hace referencia "Elektro.Net" no se pudo resolver porque tiene una dependencia de "System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" que no se encuentra en la versión de .NET Framework de destino actual ".NETFramework,Version=v4.0,Profile=Client". Quite las referencias a ensamblados que no se encuentran en la versión de .NET Framework de destino o cambie el destino del proyecto. WindowsApplication1
s2s
Añado... Versión utilizada: VB2010 (posiblemente sea el problema)
|
|
« Última modificación: 16 Abril 2016, 10:43 am por Lekim »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
Lekim, me gustaría poder ayudarte pero ese problema no tiene relación con mi librería, es un problema de referencias de las librerías de .Net Framework.
Cómo indica en el warning, estás focalizando hacia la versión compacta (o 'perfil cliente') de los runtimes de .NetFx 4.0, lo que deberías hacer para resolverlo creo que ya lo sabes, debes focalizar a la versión completa en tu proyecto, y para ello debes tener instalada la versión completa de los runtimes, además del paquete de focalización para Visual Studio (Microsoft Multi-Targeting for .NET Framework 4, eso estando en VS2010 claro, en versiones superiores no es necesario), o simplemente podrías intentar descargar/obtener la librería System.web.dll (versión completa) y referenciar manualmente dicha librería en tu proyecto.
De todas formas, respecto a mi librería Elektro.Net.dll, deberías poder ignorar (y ocultar) el warning sin problema alguno, puesto que deberías poder utilizar todos los miembros del namespace Elektro.Net excepto aquellos que referencien miembros de la versión completa de System.Web.dll (que serán apenas 2 o 3 métodos de la clase Elektro.Net.Tools.WebUtil).
Saludos
|
|
« Última modificación: 16 Abril 2016, 12:07 pm por Eleкtro »
|
En línea
|
|
|
|
Lekim
Desconectado
Mensajes: 268
|
...simplemente podrías intentar descargar/obtener la librería System.web.dll (versión completa) y referenciar manualmente dicha librería en tu proyecto
Pues eso hice, pero aún así persistía el problema. Lo que quería usar era Elektro.Net.Enums.GoogleLanguage. El caso es que este problema me ha servido para aprender actualizar el Framework de versiones viejas de VB.NET incluso en SO como XP. Y se soluciona el problema. Ya no da error. Ahora mismo estoy haciendo un tutorial, que colgaré en el foro, útil para los que usen vb2010 o vb2012. Muy curioso. Por cierto, Net simplemente deshabilitaba el Elektro.kit, con lo cual tengo que referenciarlo de nuevo. La verdad es que el truquillo podría explicarse en tres líneas, pero creo que vale la pena explicarlo al detalle y con imágenes.
|
|
« Última modificación: 16 Abril 2016, 13:59 pm por Lekim »
|
En línea
|
|
|
|
TrashAmbishion
Desconectado
Mensajes: 756
|
Excelente, Las modificaciones dieron resultados nada mas me dio un error a la hora de detectar el adaptador. Cambio reciente:NetworkTrafficMonitor.GetAvaliableInterfaceNames.Any()
Esto no rula algo pasa con esa función de arriba. Me.netMon = New NetworkUtil.NetworkTrafficMonitor(NetworkTrafficMonitor.GetAvaliableInterfaceNames.First)
Ok, con la línea de arriba toma el 1er adaptador en mi caso "isatap" y trata de trabajar con él, ahora no recuerdo si brinca porque no lo logra o si es porque el valor que espera es un integer despues aclaro esto. Solución que tome para mi caso muy particular, cargue los adaptadores en un listbox emparejado con su indice porque el espera un integer. Listo todos los adaptadores For Each adpcont In NetworkTrafficMonitor.GetAvaliableInterfaceNames Next
Y al selecionarlo se lo paso: Me.NetMon = New NetworkTrafficMonitor(NetworkTrafficMonitor.GetAvaliableInterfaceNames(adpcont))
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
No hay ningún error en lo que comentas, pero creo que existe algo de malentendimiento por tu parte sobre el manejo de colecciones genéricas en general, te explico: La extensión de LINQ IEnumerable.Any() (en: GetAvailableInterfaceNames().Any()) sirve para evaluar si una colección enumerable está vacía, la extensión Any() devolverá True si está vacía, de lo contrario, False. ¿Qué problema le encuentras?, "no rula" puede significar mil cosas distintas, intenta ser más específico. El único motivo por el cual la extensión Any() podría dar una excepción, sería al utilizar dicha extensión para evaluar una colección nula ( Nothing), pero si observamos el código fuente de mi función, podemos comprobar que en ningun caso se devuelve una colección nula: Public Shared Function GetAvailableInterfaceNames() As IEnumerable(Of String) If PerformanceCounterCategory.Exists("Network Interface") Then Return New PerformanceCounterCategory("Network Interface").GetInstanceNames() Else Return Enumerable.Empty(Of String)() End If End Function
Mi función GetAvailableInterfaceNames() devuelve una colección enumerable, por lo que efectivamente, como toda otra colección/Array, tiene un indexer que puedes utilizar para especificar un elemento de la colección (es decir, un nombre de adaptador) según el índice, por ejemplo: Dim adapterName As String = GetAvailableInterfaceNames(2). La extensión de LINQ IEnumerable.First() devuelve el primer elemento de una colección. Recuerda que el código de ejemplo es eso, un ejemplo que toma la primera interfaz de red encontrada (asumiendo que existe al menos una) con: GetAvailableInterfaceNames().First(). Saludos
|
|
« Última modificación: 16 Abril 2016, 22:39 pm por Eleкtro »
|
En línea
|
|
|
|
TrashAmbishion
Desconectado
Mensajes: 756
|
Hola, Reformulando la respuesta... Esa línea trabaja bien lo que sucede es que devuelve "true" y entra a Throw New Exception("Any available network interface found.")
En la ventana de Inmediato le hice un print a: ? NetworkTrafficMonitor.GetAvaliableInterfaceNames.First()
Y me devuelve "isatap.{7F59D061-64A2-4292-B817-69CFF83CE3A8}", entonces le hice un For Each para ver todos los valores que tenía y me mostró todos los adaptadores incluyendo la tarjeta de red Realtek. Asi que le quite ese If y lo adapté como habia comentado anteriormente... Disculpa la mala explicación.. Salu2
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.822
|
Hola, Reformulando la respuesta... Esa línea trabaja bien lo que sucede es que devuelve "true" y entra a Throw New Exception("Any available network interface found.")
Coño, que despiste, tienes razón, en el código de ejemplo evaluo si es igual a True, cuando debería evaluar si es igual a False, para lanzar la excepción. Ahora entiendo a lo que te refieres, disculpa. Ya está corregido, simplemente hay que añadirle un Not a la condicional: If Not NetworkTrafficMonitor.GetAvaliableInterfaceNames.Any() Then Throw New Exception("Any available network interface found.")
Saludos!
|
|
« Última modificación: 18 Abril 2016, 10:12 am por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Un .NET framework para linux
.NET (C#, VB.NET, ASP)
|
BADBYTE-K
|
3
|
9,228
|
2 Junio 2006, 20:59 pm
por SeniorX
|
|
|
Framework para PHP
PHP
|
zimio
|
5
|
3,301
|
1 Julio 2008, 21:01 pm
por FeArX
|
|
|
Framework para Proyecto PHP
« 1 2 »
PHP
|
19.5
|
12
|
10,033
|
6 Febrero 2009, 21:16 pm
por pablopazos
|
|
|
NovaXplosion Framework - Framework de pentest [Unete al desarrollo!]
« 1 2 3 »
Java
|
Debci
|
24
|
15,580
|
28 Enero 2010, 18:00 pm
por Debci
|
|
|
Manual 02 para aprender YII FRAMEWORK [ Instalacion de Mbmenu en YII FRAMEWORK]
PHP
|
Graphixx
|
0
|
5,784
|
10 Noviembre 2011, 19:43 pm
por Graphixx
|
|