Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#5041
Un aspecto para utilizar con la librería Postsharp, para difundir un poquito la programación orientada a aspectos (AOP).

Este aspecto en particular sirve para definir un valor mínimo y máximo para un miembro público de una class (Ej: Una propiedad Byte, Short, Integer, Long, etc...),
con esto nos aseguramos de que el valor asignado nunca supere el máximo ...ni el mínimo.

Hay bastante repetición de código ya que al parecer la Class no se puede hacer genérica.

Ejemplo de uso:
Código (vbnet) [Seleccionar]
Imports PostSharp.Aspects

Public Class MyClass

   <RangeAttribute(0S, SByte.MaxValue)>
   Dim sByteValue As SByte

   <RangeAttribute(0S, Byte.MaxValue)>
   Dim ByteValue As Byte

   <RangeAttribute(0S, Short.MaxValue)>
   Dim Int16Value As Short

   <RangeAttribute(0US, UShort.MaxValue)>
   Dim UInt16Value As UShort

   <RangeAttribute(0I, Integer.MaxValue)>
   Dim Int32Value As Integer

   <RangeAttribute(0UI, UInteger.MaxValue)>
   Dim UInt32Value As UInteger

   <RangeAttribute(0L, Long.MaxValue)>
   Dim Int64Value As Long

   <RangeAttribute(0UL, ULong.MaxValue)>
   Dim UInt64Value As ULong

   <RangeAttribute(0.0F, Single.MaxValue)>
   Dim SglValue As Single

   <RangeAttribute(0.0R, Double.MaxValue)>
   Dim DblValue As Double

End Class


Código fuente:
Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Modified : 07-June-2015
' ***********************************************************************
' <copyright file="RangeAttribute.vb" company="Elektro Studios">
'     Copyright (c) Elektro Studios. All rights reserved.
' </copyright>
' ***********************************************************************

#Region " Usage Examples "

'Imports PostSharp.Aspects
'
'Public Class Myclass
'
'    <RangeAttribute(0S, SByte.MaxValue)>
'    Dim sByteValue As SByte
'
'    <RangeAttribute(0S, Byte.MaxValue)>
'    Dim ByteValue As Byte
'
'    <RangeAttribute(0S, Short.MaxValue)>
'    Dim Int16Value As Short
'
'    <RangeAttribute(0US, UShort.MaxValue)>
'    Dim UInt16Value As UShort
'
'    <RangeAttribute(0I, Integer.MaxValue)>
'    Dim Int32Value As Integer
'
'    <RangeAttribute(0UI, UInteger.MaxValue)>
'    Dim UInt32Value As UInteger
'
'    <RangeAttribute(0L, Long.MaxValue)>
'    Dim Int64Value As Long
'
'    <RangeAttribute(0UL, ULong.MaxValue)>
'    Dim UInt64Value As ULong
'
'    <RangeAttribute(0.0F, Single.MaxValue)>
'    Dim SglValue As Single
'
'    <RangeAttribute(0.0R, Double.MaxValue)>
'    Dim DblValue As Double
'
'End Class

#End Region

#Region " Imports "

Imports PostSharp.Aspects

#End Region

#Region " Range Attribute "

''' <summary>
''' Aspect that when applied to a property, defines its minimum and maximum value.
''' </summary>
<Serializable>
Public Class RangeAttribute : Inherits LocationInterceptionAspect

#Region " Properties "

   ''' <summary>
   ''' Gets or sets the minimum value.
   ''' </summary>
   Private Property Min As Object

   ''' <summary>
   ''' Gets or sets the maximum value.
   ''' </summary>
   Private Property Max As Object

#End Region

#Region " Constructors "

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="SByte"/> datatype.
   ''' </summary>
   ''' <param name="minInt8">The minimum <see cref="SByte"/> value.</param>
   ''' <param name="maxInt8">The maximum <see cref="SByte"/> value.</param>
   Public Sub New(ByVal minInt8 As SByte, ByVal maxInt8 As SByte)

       Me.Min = minInt8
       Me.Max = maxInt8

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Byte"/> datatype.
   ''' </summary>
   ''' <param name="minUInt8">The minimum <see cref="Byte"/> value.</param>
   ''' <param name="maxUInt8">The maximum <see cref="Byte"/> value.</param>
   Public Sub New(ByVal minUInt8 As Byte, ByVal maxUInt8 As Byte)

       Me.Min = minUInt8
       Me.Max = maxUInt8

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Short"/> datatype.
   ''' </summary>
   ''' <param name="minInt16">The minimum <see cref="Short"/> value.</param>
   ''' <param name="maxInt16">The maximum <see cref="Short"/> value.</param>
   Public Sub New(ByVal minInt16 As Short, ByVal maxInt16 As Short)

       Me.Min = minInt16
       Me.Max = maxInt16

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="UShort"/> datatype.
   ''' </summary>
   ''' <param name="minUInt16">The minimum <see cref="UShort"/> value.</param>
   ''' <param name="maxUInt16">The maximum <see cref="UShort"/> value.</param>
   Public Sub New(ByVal minUInt16 As UShort, ByVal maxUInt16 As UShort)

       Me.Min = minUInt16
       Me.Max = maxUInt16

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Integer"/> datatype.
   ''' </summary>
   ''' <param name="minInt32">The minimum <see cref="Integer"/> value.</param>
   ''' <param name="maxInt32">The maximum <see cref="Integer"/> value.</param>
   Public Sub New(ByVal minInt32 As Integer, ByVal maxInt32 As Integer)

       Me.Min = minInt32
       Me.Max = maxInt32

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="UInteger"/> datatype.
   ''' </summary>
   ''' <param name="minUInt32">The minimum <see cref="UInteger"/> value.</param>
   ''' <param name="maxUInt32">The maximum <see cref="UInteger"/> value.</param>
   Public Sub New(ByVal minUInt32 As UInteger, ByVal maxUInt32 As UInteger)

       Me.Min = minUInt32
       Me.Max = maxUInt32

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Long"/> datatype.
   ''' </summary>
   ''' <param name="minInt64">The minimum <see cref="Long"/> value.</param>
   ''' <param name="maxInt64">The maximum <see cref="Long"/> value.</param>
   Public Sub New(ByVal minInt64 As Long, ByVal maxInt64 As Long)

       Me.Min = minInt64
       Me.Max = maxInt64

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="ULong"/> datatype.
   ''' </summary>
   ''' <param name="minUInt64">The minimum <see cref="ULong"/> value.</param>
   ''' <param name="maxUInt64">The maximum <see cref="ULong"/> value.</param>
   Public Sub New(ByVal minUInt64 As ULong, ByVal maxUInt64 As ULong)

       Me.Min = minUInt64
       Me.Max = maxUInt64

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Single"/> datatype.
   ''' </summary>
   ''' <param name="minSingle">The minimum <see cref="Single"/> value.</param>
   ''' <param name="maxSingle">The maximum <see cref="Single"/> value.</param>
   Public Sub New(ByVal minSingle As Single, ByVal maxSingle As Single)

       Me.Min = minSingle
       Me.Max = maxSingle

   End Sub

   ''' <summary>
   ''' Initializes a new instance of the <see cref="RangeAttribute"/> class for <see cref="Double"/> datatype.
   ''' </summary>
   ''' <param name="minDouble">The minimum <see cref="Double"/> value.</param>
   ''' <param name="maxDouble">The maximum <see cref="Double"/> value.</param>
   Public Sub New(ByVal minDouble As Double, ByVal maxDouble As Double)

       Me.Min = minDouble
       Me.Max = maxDouble

   End Sub

   ''' <summary>
   ''' Prevents a default instance of the <see cref="RangeAttribute"/> class from being created.
   ''' </summary>
   Private Sub New()
   End Sub

#End Region

#Region " Methods "

   ''' <summary>
   ''' Method invoked <i>instead</i> of the <c>Set</c> semantic of the field or property to which the current aspect is applied,
   ''' i.e. when the value of this field or property is changed.
   ''' </summary>
   ''' <param name="args">Advice arguments.</param>
   Public Overrides Sub OnSetValue(ByVal args As LocationInterceptionArgs)

       Dim value As Object = args.Value

       Select Case True

           Case TypeOf value Is SByte
               If DirectCast(value, SByte) < CSByte(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, SByte) > CSByte(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CSByte(value))

           Case TypeOf value Is Byte
               If DirectCast(value, Byte) < CByte(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Byte) > CByte(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CByte(value))

           Case TypeOf value Is Short
               If DirectCast(value, Short) < CShort(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Short) > CShort(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CShort(value))

           Case TypeOf value Is UShort
               If DirectCast(value, UShort) < CUShort(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, UShort) > CUShort(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CUShort(value))

           Case TypeOf value Is Integer
               If DirectCast(value, Integer) < CInt(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Integer) > CInt(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CInt(value))

           Case TypeOf value Is UInteger
               If DirectCast(value, UInteger) < CUInt(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, UInteger) > CUInt(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CUInt(value))

           Case TypeOf value Is Long
               If DirectCast(value, Long) < CLng(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Long) > CLng(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CLng(value))

           Case TypeOf value Is ULong
               If DirectCast(value, ULong) < CULng(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, ULong) > CULng(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CULng(value))

           Case TypeOf value Is Single
               If DirectCast(value, Single) < CSng(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Single) > CSng(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CSng(value))

           Case TypeOf value Is Double
               If DirectCast(value, Double) < CDbl(Me.Min) Then
                   value = Me.Min
               ElseIf DirectCast(value, Double) > CDbl(Me.Max) Then
                   value = Me.Max
               End If
               args.SetNewValue(CDbl(value))

       End Select

   End Sub

#End Region

End Class

#End Region
#5042
Cita de: nolasco281 en  7 Junio 2015, 07:58 AMEste trozo de codigo  son los procesos que no deberian ejecutarse y en caso que desee mostrar todos los procesos deberia de agregarlos al array?
Código (vbnet) [Seleccionar]

Dim blacklisted As IEnumerable(Of String) =
   {
       "audiodg",
       "csrss",
       "Idle",
       "services",
       "smss",
       "System"
   }

Son los procesos de la lista negra, procesos excluidos de la query de LINQ.

Idle y System son pseudo-procesos (y por lo tanto, daría error la query al intentar obtener una ruta que no existe), y los otros son procesos protegidos.

De todas formas ten en cuenta que lo que escribí es un ejemplo básico que se puede extender para adaptarlo a "X" necesidades, si quieres hacer una buena réplica entonces deberías mostrar lo mismo que muestra el administrador de tareas de Windows.




Cita de: nolasco281 en  7 Junio 2015, 07:58 AMy esta parte por que solo muestra la ruta del  proceso pero no el nombre o la ruta ya contiene el nombre del proceso? por que declara pNames.

Obviamente la ruta del archivo contiene el nombre del archivo.

¿Por qué declaré pNames y pPaths por separado?, para mostrar dos ejemplos distintos, uno para obtener solo el nombre, y el otro para obtener la ruta completa.




Cita de: nolasco281 en  7 Junio 2015, 07:58 AM
Código (vbnet) [Seleccionar]
ListBox1.Items.AddRange(pPaths.ToArray)

me dice lo siquiente


Fíjate bien, estás utilizando un ListView, no un ListBox.

Debes pasarle cómo argumento un array de ListViewItem, o un ListViewItemcollection:

Código (vbnet) [Seleccionar]
With ListView1

   .View = View.Details
   .Columns.Add("ExecutablePath")
   .Items.AddRange((From path As String In pPaths Select New ListViewItem({path})).ToArray)

End With


Saludos!
#5043
Cita de: engel lex en  7 Junio 2015, 07:49 AMElectro, ve "starving games" y después podrás opinar que es una película basura (y te darás cuenta que tu escala puede iniciar en 0 y no 1)

Lo peor de todo es que ya la vi entera (para poder criticar con mayor objetividad xD), "Los muertos del hambre" se títula en España, pf!, claramente se lleva un:



Lo mismo ocurre con todo el resto de películas que han hecho los mismos productores de esa peli, año tras año, no se si realmente alguien puede considerar ese tipo de películas cómo "comedia"... es humor raro ...¿para niños de 4 años?.


Cita de: engel lex en  7 Junio 2015, 07:49 AMUna película 7 de 10 para ver que recomiendo y quedarse "wtf!" es "predestination", es interesante, y agradablemente decepcionante

Hace mucho, pero mucho, muchísimo ...¡la tira de años!... que no me sorprende ninguna película, será que he visto demasiadas, pero recientemente hay una que "me ha devuelto a la vida", de verdad que hacía mucho que no sentía tantanta emoción con una película ...más bien tensión, se trata del reciente remake de "Mad Max", si tengo que recomendar alguna peli del momento entonces sin duda es esa, una pelicula que consigue que no te despegues de la pantalla ni para parpadear, ¡pura tensión!.

TL/DR:
Y ya que hablamos de películas, la película del momento que menos me gusta es "Extraterrestrial", podría puntarla con un 2 y estaría siendo generoso; es la típica película de terror con monstruos, solo que los monstruos son Aliens, pero mezclar el género de terror con alienígenas de esa manera... ponen al típico alien gris cómo si fueran monstruos/bichos malvados que se suben por las paredes y te acosan en la puerta de tu casa hasta que salgas... comerte o violarte o secuestrarte, es muy poco creible esto de los Aaliens haciendo "bullying", en algunas partes de la película me daba la sensación que el director de la peli pretendía transmitir al espectador que los Aliens son una especie de hienas depredadoras y aterradoras al hacecho de humanos, en fin, me parece muy absurdo el estilo que le han dado en ese aspecto, directamente son más monstruos que alienígenas.

Tengo muchas películas favoritas de antaño y de ahora, pero creo que ninguna dejaría con cara de "wtf".

Saludos!
Saludos!
#5044
Cita de: dimitrix en  7 Junio 2015, 06:48 AMyo recomiendo mucho la película Mr. Nobody

Ya vuelvo a tener fe en ti xD.

Cita de: dimitrix en  7 Junio 2015, 06:48 AMcreo que la película puede ser profunda, pero igual que si me dejas una mesa y dos horas observándola, al final acabaré pensando como sería el árbol del que sacaron la madera y en que lugar y día forjaron los clavos que sujetan las patas de la mesa.

Pero entonces simplemente es que tú eres una persona profunda, no la película, ni tampoco la susodicha mesa.

Creo que no es discutible, la """"actriz"""" principal de Chappie habría encajado mejor en un papel de una película porno:
Yo-Landi Visser (cuidado, la imagen puede herir la sensibilidad de algunas personas)

...O de zombies, con el resto de su pandilla.

No te lo discuto más, es solo que me indigno yo solo con estas peliculas-basura...!!

Saludos!
#5045
Cita de: dimitrix en  7 Junio 2015, 05:09 AM
Chappie

Creo que puede llegar a ser profunda

Me has decepcionado... :xD

Chappie es una película que dentro de lo que cabé me gustó, por que usa la tecnología del cine combinada con un tema actual del siglo XXI, los robots (un tema muy quemado, todo hay que decirlo),
cómo película y dentro de lo que cabe en esta era de los refritos y los directores sin ideas hollywoodienses, se puede decir que Chappie es una película que está bien, con un argumento y un guión pasables ...muy mediocres cómo todo lo que hacen ahora pero pasables al fin y al cabo, es una película de esas que una vez vista ya la has disfrutado (si has podido disfrutar) y no tienes ganas de volverla a ver; Mi valoración: un 5 de 10.

Ahora... ¿PROFUNDA?, un film cuyo reparto de actores principales consiste en todo menos actores, ya que los "actores" son los integrantes de un grupo de música, un grupo cuya música por cierto no transmite NADA (aparte de asco), y con unas pintas entre yonki, cani, mongolo, y steampunk (son así en la vida real, no solo en la peli) que dan pena y verguenza ajena, pf, venga ya, Chappie está muy lejos de considerarse cómo algo profundo cuando el único actor que tiene la suficiente experiencia y carisma para poder transmitir sensaciones profundas es el malo de la película xD, pf, nada, es muy mediocre empezando por sus ""actores"", su argumento, su "trama", su guión, y toda la película en si misma.

En mi opinión, es una película de esas que o te gusta bastante o la odias mucho, ya que tiene esa peculiaridad que será desagradable para algunos y a otros puede que incluso les guste... pero lo cierto es que lo mires por donde lo mires Chappie es una película muy del montón, cómo son la mayoría de películas de este tipo de temática.

Yo sin duda vería la de El caballero negro.

Saludos!
#5046
Cita de: SAGA-gl en  7 Junio 2015, 05:45 AM...necesito la opinión d expertos(elektro por nombrar alguno, por ser siempre el q m comprendió y sin ofender a nadie) en el tema q siemp m guiaron en el desarrollo d esta aplicación.....muchísimas graxias d antemano....slds!!

No me sobreestimes, nunca he necesitado profundizar en la administración de bases de datos, y eso significa que seguramente no se lo suficiente.

Lo único que yo puedo decirte es que pienso que deberías desarrollar el código, la "funcionalidad" que mencionas, y luego publicarlo aquí, compartir el código para que podamos analizarlo en busca de posibles conflictos u optimizaciones que sugerirte.

Saludos!
#5047
¿Estás compilando la app bajo x86, x64, o neutral?.

¿Alguna limitación en la versión objetivo de .Net framework? (-LINQ)

¿C#, Vb.Net, o cualquiera de los dos?, no somos adivinos.

Puedes utilizar la Class "Process":

Código (vbnet) [Seleccionar]
Dim blacklisted As IEnumerable(Of String) =
   {
       "audiodg",
       "csrss",
       "Idle",
       "services",
       "smss",
       "System"
   }

Dim processes As IEnumerable(Of Process) =
   System.Diagnostics.Process.GetProcesses

Dim pNames As IEnumerable(Of String) =
   From p As Process In processes
   Where Not blacklisted.Contains(p.ProcessName)
   Order By p.ProcessName Ascending
   Select String.Format("{0}.exe", p.ProcessName).ToLower
   Distinct

Dim pPaths As IEnumerable(Of String) =
   From p As Process In processes
   Where Not blacklisted.Contains(p.ProcessName)
   Order By p.MainModule.FileName Ascending
   Select p.MainModule.FileName.ToLower
   Distinct

ListBox1.Items.AddRange(pPaths.ToArray)


Y, si estás desarrollando la app para arquitectura x86, para comunicarte con los procesos x64 puedes realizar una consulta a WMI (Windows Management Instrumentation):

Win32_Process class (Windows) - MSDN

Código (vbnet) [Seleccionar]
Public Shared Function GetProcesses() As ManagementObjectCollection

   Using searcher As New ManagementObjectSearcher(queryString:="SELECT * FROM Win32_Process")

       Return searcher.Get

   End Using

End Function

Dim processes As ManagementObjectCollection =
   GetProcesses()

Dim pNames As IEnumerable(Of String) =
   From mo As ManagementObject In processes.Cast(Of ManagementObject)()
   Order By DirectCast(mo.Properties("Name").Value, String) Ascending
   Select DirectCast(mo.Properties("Name").Value, String).ToLower
   Distinct

Dim pPaths As IEnumerable(Of String) =
   From mo As ManagementObject In processes.Cast(Of ManagementObject)()
   Where Not mo.Properties("ExecutablePath").Value Is Nothing
   Order By DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower Ascending
   Select DirectCast(mo.Properties("ExecutablePath").Value, String).ToLower
   Distinct

ListBox1.Items.AddRange(pPaths.ToArray)


Nota: Recuerda que la Class "ManagementObjectCollection" es Disposable.

También puedes utilizar las funciones de la API de Windows:
Process Walking - MSDN
PSAPI Functions - MSDN

(de esto no pongo un ejemplo ya que no tengo ...pero por Google debe haber; y elaborarlo me costaría el esfuerzo de escribir aproximadamente +1.000 lineas de P/Invoking)

Saludos!
#5048
Scripting / Re: wifi autoejecutable .dat
7 Junio 2015, 01:37 AM
Bienvenido al foro.

1• Publica las preguntas sobre Batch en el foro adeacuado.
2• Es obligatorio usar las etiquetas de código al publicar un bloque de código.
3• LEE LAS NORMAS DEL FORO ANTES DE PUBLICAR.




¿Qué significa "no logro ejecutarlo"?, se específico con el error que tengas, no somos adivinos.

De todas formas, prueba así:

Script.cmd:
Código (dos) [Seleccionar]
@echo off
echo Levantar virtual wifi www.wifimx.com ^(windows7 y 8^)
echo.
echo Script proporcionado por la genial web www.wifimx.com
echo.
call
set /P "nombrered=Escribe el Nombre de tu red y pulsa enter:"
set /P "pass=Introduce el password y pulsa enter ( minimo 8 caracteres):"
netsh wlan set hostednetwork mode=allow ssid="%nombrered%" key="%pass%"
netsh wlan start hostednetwork
echo Pulsa enter para detener la red
pause
netsh wlan stop hostednetwork


Saludos!
#5049
Cita de: gonzalitosk8 en  6 Junio 2015, 20:29 PMes posible que al ejecutarse evite el inicio de unas funciones dll?

Si, es posible siempre que hayan programado el código fuente para ese fín; se puede hookear "X" función de "X" .dll para procesar y alterar el comportamiento de sus llamadas, así cómo cancelarlas/ignorarlas.

Cita de: gonzalitosk8 en  6 Junio 2015, 20:29 PMen programación c# es posible crear algún archivo que ejecute una dll específicamente al iniciar el exe?

¿Qué estás preguntando exactamente?, ¿puedes ser más específico?, una .dll difiere de un executable en que precisamente no es un archivo ejecutable, ya que no provee un punto de entrada (entry point) que determine una función principal a la cual se le pase el control para iniciar su ejecución.

Si lo que pretendes es cargar una .dll y utilizar sus funciones, puedes hacerlo, sí;
en caso de que eso sea lo que pretendes, y si es un ensamblado .Net, entonces la solución más sencilla sería referenciar dicha .dll en tú solución de Visual Studio, la solución compleja sería cargar dinamicamente la .dll en tiempo de ejecución utilizando la técnica Reflection, con los miembros de la Class System.Reflection.Assembly, empezando por el miembro para cargar el ensamblado (System.Reflection.Aassembly.LoadFile()) y posteriórmente los miembros para localizar las funciones de dicha dll;
si por lo contrario es una .dll desarrollada en C/C++, entonces debes crear un wrapper, en esencia constaría de una Class de C# donde deberías declarar las mismas funciones que tiene la .dll y con sus mismas firmas (es decir, la misma parametización equivalente a .Net), es una tarea sencilla siempre y cuando conozcas cómo ha sido desarrollada dicha .dll, debes conocer los nombres de dichas funciones y también sus firmas, ya que debido a la naturaleza de C++, esto último es indescifrable mediante ingeniería inversa, no puedes saber a ciencia cierta si una función compilada toma un string cómo argumento, o un entero, a menos que hayas intentado pasarle ambos tipos de argumentos para salir de dudas, por suerte hay herramientas que facilitan en parte el análisis de una dll, cómo por ejemplo "Dll Export Viewer" de Nirsoft.

Saludos
#5050
Redes / Re: Ayuda!Rastrear
6 Junio 2015, 19:39 PM
Con una IP lo que puedes rastrear es la centralita del servicio proveedor de Internet (ISP) de donde proviene esa IP, que no precisamente tiene por que ser la misma ciudad que el PC que está usando esa IP; por ejemplo, al geolocalizar mi IP, aparecerá casi en la otra frontera del país de donde realmente me encuentro yo ubicado.

Puedes utilizar cualquier servicio online de localización geográfica (Geolocation), ElHacker.net tiene uno:
Geolocalizador Ip (Localizar una ip)

Saludos