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ú

Temas - Lekim

#46
Hola

En la empresa donde trabajo los pedidos aparecen con símbolos extraños en sustitución de á,è,ó,...,ñ y ç, que son del tipo á, Ã-, etc

Creo que podría ser que el sistema tiene como configuración regional la alfabetización inglesa, pero no estoy seguro de si es por eso o del programa que imprime los pedidos.

¿Alguna idea?

Gracias
#47
Hola

España es el país de los pillos, los tramposos, los estafadores, y los listillos... :¬¬

Los/as empresarios/as españoles/as,  se han sacado de la manga una forma de conseguir trabajadores/as GRATIS y se llama 'Convenio de Prácticas (becarios)'. Vale no es nuevo pero enseguida entenderás porqué lo digo.

Ya no les basta con contratar a trabajadores con 'mínima discapacidad' (si estás en silla de ruedas no les vales), para beneficiarse de ayudas y bonificaciones. Con trabajadores que lo mismo tienen una quemadura con secuelas o un poco de sordera. En fin buscan trabajadores que puedan cumplir y que tengan alguna 'tara' los suficientemente importante como para que disponga de un certificado  de discapacidad, pero que sea la más mínima posible y así poder beneficiarse de su contratación.




Ahora la moda es el Convenio de Prácticas. Durante hace un mes, más o menos, me estoy encontrando ofertas de empleo bastante a menudo demandando trabajadores dispuestos a trabajar por convenio, es decir SIN CONTRATO.

Existe el Convenio de Prácticas y Contrato de Prácticas. El primero es sin contrato  y el segundo es con contrato y sueldo.

Curiosamente se está demandando mucho para trabajos de baja cualificación. Por favor, ¿becario para mozo de almacén? No se si reír o llorar. Así que yo voy a la universidad y estudio por ejemplo...periodismo, y me contratan de becario para preparar pedidos en un almacén, o descargar y cargar camiones. Alucino en colores

Pues a esto hemos llegado.

NO ACEPTÉIS ESTOS TRABAJOS sin no cumplís los requisitos que ahora mencionaré, pues si no es así, te están tomando el pelo.



Requisitos para poder realizar un convenio de prácticas
- Estar matriculado en una Universidad o un centro de formación autorizado para la firma de convenios de prácticas con empresas.
- Que la actividad de las prácticas esté relacionada con la formación del estudiante.
- Haber superado el 50% de los créditos necesarios para obtener la titulación.
- Si se trata de prácticas curriculares (incluidas en el plan de estudios), el estudiante debe estar matriculado en la asignatura vinculada a esas prácticas.
- No tener relación contractual alguna con la empresa o institución en la que se vayan a realizar las prácticas.


OJO  :rolleyes:
Que la actividad de las prácticas esté relacionada con la formación del estudiante.

Fuente:
primerempleo


En definitiva, ¿Tienes más de cuarenta? Pues se pasan por el forro de los huevos toda tu experiencia, tus títulos  (mira que me dieron la vara con lo de la ESO y el Bachillerato, lo tengo ¿y para qué?) . Se pasan por el forro todo, lo que quieren es ahorrarse dinerito y se les ocurre la brillante idea de contratar a estudiantes de Universidad, sin contrato y puede que sin pagar, porque aunque deban puede que no lo hagan.


Luego importan el black friday para incentivar el consumo, porque quieren que compremos pero no que cobremos.

Si no cobramos, no compramos, si cobramos poco, compramos poco, así de simple.

¡Que no te tomen el pelo!

Se nota que estoy enfadado ¿no? pues sí , y mucho.





#48
Hi

Lo que intento es lo siguiente:
-Obtengo código fuente de una página y lo cargo en A
-Cargo la página en el Webbrowser:  WB.DocumentText= A
-Cuando cargue la página llama al evento ReadWeb
-ReadWeb obtiene datos en modo lista y lo Carga en una variable List
-Desde Button_Click llamo a la clase  e intento obtener dicha lista.

Problema: No puedo obtener dicha lista.

Código (vbnet) [Seleccionar]
Class clsGetDataWeb
   Dim Lista As New List(Of String)
   Dim WB As New WebBrowser
   Dim strUrl As String = "http://www...."
   Dim WebSource As String = Nothing


   Public Sub GetDataWeb()

       '//OBTIENE EL CÓDIGO FUENTE DE LA PÁGINA
       Try
           WebSource = GetWebSource(strUrl) 'Obtiene el código de la página
       Catch ex As Exception
           MessageBox.Show(ex.Message)
           Exit Sub
       End Try

       'LLama al evento DocumentCompletes
       AddHandler WB.DocumentCompleted, AddressOf WB_DocumentCompleted

       'Carga el código html en WB
       WB.ScriptErrorsSuppressed = True
       WB.DocumentText = WebSource


   End Sub
   Private Sub WB_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs)
           ReadWeb(WB)
   End Sub
   Private Sub ReadWeb(ByVal WBrowser As WebBrowser)
       Dim document As System.Windows.Forms.HtmlDocument = WBrowser.Document
       Dim doc As HtmlDocument = WBrowser.Document
       Dim divs As HtmlElementCollection = doc.GetElementsByTagName("td")
       Lista.Clear()
       For Each div As HtmlElement In divs
           If div.GetAttribute("classname") = "Canción" Then Lista.Add(div.InnerText)
       Next
       Lista= Lista.Distinct.ToList
   End Sub

   Private Function GetWebSource(ByVal strUrl As String) As String
          ...AQUÍ CÓDIGO PARA OBTENER EL CÓDIGO FUENTE DE LA PÁGINA WEB
Return CódigoFuente
   End Function

   Public ReadOnly Property ParameterNames() As IEnumerable(Of String)
       Get
           Return New List(Of String)(Lista)
       End Get
   End Property

End Class

#End Region



Y desde el un evento click:

Código (vbnet) [Seleccionar]
'//Llamo a
Dim ClassDW As New clsGetDataWeb
       ClassDW.GetDataWeb()
       For Each N As String In ClassDW.ParameterNames
           ListBox1.Items.Add(n)
       Next



He constatado por puntos de interrupción que el código de la página lo obtiene y la lista también. Creo que el problema tiene relación con Evento DocumentCompleted y la propiedad Get

parace como si se estableciese la propiedad antes de que se obtenga la lista

Gracias

[SOLUCIONADO]

Era lo que yo pensaba  :-\

Se carga la propiedad antes de que se obtenga la lista. Para solucionarlo he añadido un simple código de espera
Código (vbnet) [Seleccionar]
   Public ReadOnly Property ParameterNames() As System.Collections.Generic.ICollection(Of String)
       Get

           While [LISTA].Count = 0
               My.Application.DoEvents()
           End While

           Return New List(Of String)([LISTA])
       End Get
   End Property

#49
Hola

He creado este código para cambiar el estilo de las ventanas, se puede invertir la barra de título sin alterar el resto del form, bloquear el form, quitar los botones, desactivar botones de la barra, cambiar la posición de título de la barra de título, quitar los bordes, mostrar el form como un popup menú, etc.

Los cambios son combinables en algunos casos.



CAMBIAR EL ESTILO DE LAS VENTANAS

Código (vbnet) [Seleccionar]
#Region "Cambiar estilo de la ventana"
Public Module modChangeStyleWindow
   Const GWL_ID = (-12)
   Const GWL_STYLE = (-16)
   Const HWND_NOTOPMOST = -2
   Const SWP_NOZORDER = &H4
   Const SWP_NOSIZE = &H1
   Const SWP_NOMOVE = &H2
   Const SWP_FRAMECHANGED = &H20
   Const SWP_DRAWFRAME = SWP_FRAMECHANGED

   Enum WindowsStyle
       WS_SIZABLE = &H0                                'Con todos los botones y la barra de título
       WS_SIZABLE_DISABLEMAXB = &HFFFFFFFFFFFFFFFF     'Desactiva el botón maximizar
       WS_SIZABLE_DISABLEMINB = &HFFFFFFFFFFFE5E08     'Desactiva el botón minimizar
       WS_DLGFRAME_DISABLE = &H5FD8220                 'Cuadro diálogo desactivado (no permite ninguna interacción con el form)
       WS_DLGFRAME_FIXEDSINGLE = &HFFFFFFFFFFF9CA28    'Cuadro diálogo no redimensionable
       WS_DLGFRAME_SIZABLE = &HFFFFFFFFFFFDC5B0        'Cuadro diálogo redimensionable
       WS_DISABLED = &H8000000                         'Desactivado (no permite ninguna interacción con el form)
       WS_SYSMENU_DISABLE = &H5F5E100                  'Desactiva el menú y desactivado              
       WS_SYSMENU_SIZABLE = &HFFFFFFFFFFF8F350         'Desactiva el menú y redimensionable
       WS_SYSMENU_FIXEDSINGLE = &HFFFFFFFFFFF4EC10     'Desactiva el menú y no es redimensionable
       WS_FIXEDSINGLE = &HFFFFFFFFFFFCEAF0             'No redimensionable
       WS_FIXEDSINGLE_DISABLEMAXB = &HFFFFFFFFFFFBBA40 'No redimensionable y desactiva el botón maximizar
       WS_FIXEDSINGLE_DISABLEMINB = &HFFFFFFFFFFFAEF20 'No redimensionable y desactvia el botón minimizar
       WS_NOBORDER = &H325AA0                          'Sin bordes
       WS_FLAT3D = &HB1FE68                            'Sin bordes con línea exterior
       WS_POPUP = &H712CA8                             'Menú Popup
   End Enum

   <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
   Private Function SetWindowLong(ByVal hwnd As IntPtr, _
                                         ByVal nIndex As Integer, _
                                         ByVal dwNewLong As Integer) As Integer
   End Function


   <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=False)> _
   Private Function SetWindowPos(ByVal hwnd As IntPtr, _
                                        ByVal hWndInsertAfter As IntPtr, _
                                        ByVal X As Integer, _
                                        ByVal y As Integer, _
                                        ByVal cx As Integer, _
                                        ByVal cy As Integer, _
                                        ByVal wFlags As Integer) As Integer
   End Function


   <System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="GetWindowLongA", SetLastError:=True)> _
   Private Function GetWindowLong(ByVal hWnd As IntPtr, _
                                         <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.I4)> ByVal nIndex As Integer) As Integer
   End Function

   Public Sub ChangeStyleWindow(ByVal hwnd As IntPtr, ByVal StyleForm As Integer, ByVal SetStyle As Boolean)
       'mantiene el tamaño de la ventana
       Dim stl As Integer = GetWindowLong(hwnd, GWL_STYLE)

       Select Case SetStyle
           '//Solo Ventana 'Sizable'
           'Case True : If stl = &H16CF0000 Then stl += StyleForm
           'Case False : If stl = &H16CF0000 + StyleForm Then stl -= StyleForm
           '//Cualquier tipo de ventana u objeto con handle
           Case True : stl += StyleForm
           Case False : stl -= StyleForm
       End Select

       SetWindowLong(hwnd, GWL_STYLE, stl)
       Call SetWindowPos(hwnd, HWND_NOTOPMOST, Nothing, Nothing, Nothing, Nothing, _
       SWP_NOZORDER + SWP_NOSIZE + SWP_NOMOVE + SWP_DRAWFRAME)
   End Sub

End Module
#End Region



CAMBIAR EL ESTILO DE LA BARRA
Código (vbnet) [Seleccionar]
Region "Cambiar estilo de la Barra de Título"
Module modChangeStyleBar
   Const GWL_ID = (-12)
   Const GWL_STYLE = (-16)
   Const GWL_EXSTYLE = (-20)
   Const HWND_NOTOPMOST = -2
   Const SWP_NOZORDER = &H4
   Const SWP_NOSIZE = &H1
   Const SWP_NOMOVE = &H2
   Const SWP_FRAMECHANGED = &H20
   Const SWP_DRAWFRAME = SWP_FRAMECHANGED

   Enum WStyleBarTitle
       WStB_NORMAL_THICKBORDER = &H200                             'Normal con borde ancho
       WStB_NORMALCAPTIONLEFT = &H0                                'Título a la izquierda
       WStB_NORMAL_CAPTIONRIGHT = &H1000                           'Título a la derecha
       WStB_INVERT_CAPTIONLEFT = &H405000                          'Invertido con título a la izquierda
       WStB_INVERT_CAPTIONRIGHT = &H400000                         'Invertido con título a la derecha
       WStB_TOOLWINDOW_CAPTIONLEFT = &H6590                        'Tool window con título a la izquierda y borde fino
       WStB_TOOLWINDOW_CAPTIONRIGHT = &H5580                       'Tool window con título a la derecha y borde fino
       WStB_TOOLWINDOW_THICKBORDER_CAPTONLEFT = &H68F              'Tool window con título a la izquierda y borde grueso
       WStB_TOOLWINDOW_THICKBORDER_CAPTONRIGHT = &H5A80            'Tool window con título a la derecha y borde grueso
       WStB_TOOLWINDOWS_INVERT_CAPTIONLEFT = &H401080              'Tool window Invertido con título a la izquierda y borde fino
       WStB_TOOLWINDOWS_INVERT_CAPTIONRIGHT = &H400180             'Tool window invertido con título a la derecha y borde fino
       WStB_TOOLWINDOWS_INVERT_THICKBORDER_TITLELEFT = &H403390    'Tool window Invertido con título a la izquierda y borde grueso
       WStB_TOOLWINDOWS_INVERT_THICKBORDER_TITLERIGHT = &H400290   'Tool window invertido con título a la derecha y borde grueso
       WS_EX_DLGMODALFRAME = &H1
       WS_EX_NOPARENTNOTIFY = &H4
       WS_EX_TOPMOST = &H8
       WS_EX_ACCEPTFILES = &H10                                    'Cambia el cursor cuando se arrastr un archivo a la ventana
       WS_EX_TRANSPARENT = &H20
       WS_EX_MDICHILD = &H40
       WS_EX_TOOLWINDOW = &H80
       WS_EX_WINDOWEDGE = &H100
       WS_EX_CLIENTEDGE = &H200
       WS_EX_CONTEXTHELP = &H400
       WS_EX_RIGHT = &H1000
       WS_EX_LEFT = &H0
       WS_EX_RTLREADING = &H2000
       WS_EX_LTRREADING = &H0
       WS_EX_LEFTSCROLLBAR = &H4000
       WS_EX_RIGHTSCROLLBAR = &H0
       WS_EX_CONTROLPARENT = &H10000
       WS_EX_STATICEDGE = &H20000
       WS_EX_APPWINDOW = &H40000
       WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
       WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE Or WS_EX_TOOLWINDOW Or WS_EX_TOPMOST)
       WS_EX_LAYERED = &H80000
       WS_EX_NOINHERITLAYOUT = &H100000 ' Disable inheritence of mirroring by children
       WS_EX_LAYOUTRTL = &H400000 ' Right to left mirroring
       WS_EX_COMPOSITED = &H2000000
       WS_EX_NOACTIVATE = &H8000000
   End Enum
   <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True)> _
   Private Function SetWindowLong(ByVal hwnd As IntPtr, _
                                         ByVal nIndex As Integer, _
                                         ByVal dwNewLong As Integer) As Integer
   End Function


   <System.Runtime.InteropServices.DllImport("user32.dll", SetLastError:=False)> _
   Private Function SetWindowPos(ByVal hwnd As IntPtr, _
                                        ByVal hWndInsertAfter As IntPtr, _
                                        ByVal X As Integer, _
                                        ByVal y As Integer, _
                                        ByVal cx As Integer, _
                                        ByVal cy As Integer, _
                                        ByVal wFlags As Integer) As Integer
   End Function


   <System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint:="GetWindowLongA", SetLastError:=True)> _
   Private Function GetWindowLong(ByVal hWnd As IntPtr, _
                                         <System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.I4)> ByVal nIndex As Integer) As Integer
   End Function

   'Estilo de la barra de título
   Public Sub ChangeStyleBarWindow(ByVal hwnd As IntPtr, ByVal StyleBar As Integer)
       SetWindowLong(hwnd, GWL_EXSTYLE, StyleBar)
       Call SetWindowPos(hwnd, HWND_NOTOPMOST, Nothing, Nothing, Nothing, Nothing, _
       SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or SWP_DRAWFRAME)
   End Sub
End Module
#End Region




EJEMPLO DE USO


Si se aplican varias veces el mismo estilo se pueden obtener estilos curiosos.



Código (vbnet) [Seleccionar]
   Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
       For i As Integer = 0 To 5
           modChangeStyleWindow.ChangeStyleWindow(Me.Handle, WindowsStyle.WS_SYSMENU_FIXEDSINGLE, True)
       Next i
   End Sub



para modo popup:

Código (vbnet) [Seleccionar]
  modChangeStyleWindow.ChangeStyleWindow(Me.Handle, WindowsStyle.WS_POPUP, True)


Para invertir la barra de título:
Código (vbnet) [Seleccionar]
      Call modChangeStyleBar.ChangeStyleBarWindow(Me.Handle, modChangeStyleBar.WStyleBarTitle.WStB_INVERT_CAPTIONRIGHT)


Invertido y desactivado:
Código (vbnet) [Seleccionar]
  Call modChangeStyleWindow.ChangeStyleWindow(Me.Handle, modChangeStyleWindow.WindowsStyle.WS_DISABLED, True)
       Call modChangeStyleBar.ChangeStyleBarWindow(Me.Handle, modChangeStyleBar.WStyleBarTitle.WStB_INVERT_CAPTIONRIGHT)



Espero os sirva  ;)

Sl2s



Se me olvidaba, para restaurar la ventana establecer 'False'
'Activa el cambio
Código (vbnet) [Seleccionar]
Call modChangeStyleWindow.ChangeStyleWindow(Me.Handle, modChangeStyleWindow.WindowsStyle.WS_DISABLED, True)

'Desactiva el cambio (en este caso se tendría que hacer con un timer o similar ya que WS_DISABLE no permite la interacción con el form ni con los controles que contiene)
Código (vbnet) [Seleccionar]
Call modChangeStyleWindow.ChangeStyleWindow(Me.Handle, modChangeStyleWindow.WindowsStyle.WS_DISABLED, False)

sl2s
#50
.NET (C#, VB.NET, ASP) / Importar APIs
24 Noviembre 2015, 00:45 AM
Hola

///IMPORTAR APIs///
Quiero compartir esta código curioso para importar APIs de librerías DLL y de aplicaciones. Es muy útil.

Código (vbnet) [Seleccionar]
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim DialogoAbrir As New System.Windows.Forms.OpenFileDialog
       DialogoAbrir.Title = "Abrir..."
       DialogoAbrir.FilterIndex = 1
       DialogoAbrir.Filter = "*.dll|*.dll|*.exe|*.exe"
       DialogoAbrir.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System)
       If DialogoAbrir.ShowDialog() = DialogResult.OK Then
ImportAPI(DialogoAbrir.FileName)
       End If

       

   End Sub
   Sub ImportAPI(ByVal Path_Dll As String)

       '//VB6
       'Dim Path_Link As String = DirProgramFiles & "\Microsoft Visual Studio\VB98\link.exe"

       '****IMPORTANTE****:
       '//VB2010
       'link.exe se encuentra en:
       'C:\Archivos de programa\Microsoft Visual Studio 10.0\VC\bin\
       'Tiene dependencia con 'mspdb100.dll' que se encuentra en:
       'C:\Archivos de programa\Microsoft Visual Studio 10.0\Common7\IDE
       'Haz una copia de link.exe en  ...\Common7\IDE de lo contrario dará error al no encontrar 'mspdb100.dll'

       '//VS2012 64bits
       'link.exe se encuentra en:
       'C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
       'mspdb100.dll' se encuentra en:
       'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

       Dim DirProgramFiles As String

       If Environment.Is64BitOperatingSystem Then
           DirProgramFiles = (Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86))
       Else
           DirProgramFiles = (Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))
       End If

       Dim Path_Link As String  = (DirProgramFiles & "\Microsoft Visual Studio 10.0\Common7\IDE\link.exe")
       Dim FileTemp As String = System.IO.Path.GetTempFileName     'Crea un archivo temporal
       Dim C34 As String = Convert.ToChar(34)

       'Linea de comandos para link.exe
       Dim StartLink As String = String.Format("{0}{1}{2} /dump /exports {3}{4}{5} /out:{6}{7}{8}", _
                                               C34, Path_Link, C34, _
                                               C34, Path_Dll, C34, _
                                               C34, FileTemp, C34)
       Try
           'Ejecuta link.exe
           Dim myProcess As New Process()
           myProcess.StartInfo.UseShellExecute = False
           myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
           myProcess.StartInfo.FileName = StartLink
           myProcess.StartInfo.CreateNoWindow = True
           myProcess.Start()
       Catch ex As Exception
           MessageBox.Show("No se encuentra link.exe")
       End Try


        Me.Cursor = Cursors.WaitCursor
       System.Threading.Thread.Sleep(2000)
       Me.Cursor = Cursors.Default

       Dim strBuffer As New System.IO.StreamReader(FileTemp)
       TextBox1.Text = strBuffer.ReadToEnd
       strBuffer.Close()
       FileIO.FileSystem.DeleteFile(FileTemp)

   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub
End Class


Sl2





El método también se puede usar para obtener información a través de aplicaciones que usen comandos

Este ejemplo obtiene es el resultado de hacer: ping www.google.es

Código (vbnet) [Seleccionar]

Public Class Form1

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub


   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim sCommand As String = String.Format("""{0}"" /r ping {1} >", "cmd.exe", "www.elhacker.net")
       TextBox1.Text = GetResultCommand(sCommand)
   End Sub

#Region "GetResultCommand"
   Public Function GetResultCommand(ByVal sCommandLine As String) As String
       Dim FileTemp As String = System.IO.Path.GetTempFileName     'Crea un archivo temporal
       Dim C34 As String = Convert.ToChar(34)
       Dim Result As String = Nothing


       sCommandLine = String.Format(sCommandLine & "{0}{1}{2}", C34, FileTemp, C34)


       Try
           Dim myProcess As New Process()
           With myProcess
               .StartInfo.UseShellExecute = False
               .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
               .StartInfo.FileName = sCommandLine
               .StartInfo.CreateNoWindow = True
               .Start()
           End With

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try

       Me.Cursor = Cursors.WaitCursor
       System.Threading.Thread.Sleep(2000)

       Dim FileAccesible As Boolean = False
       While FileAccesible = False
           Try
               Dim strBuffer As New System.IO.StreamReader(FileTemp, System.Text.Encoding.GetEncoding("ibm850"))
               Result = strBuffer.ReadToEnd()
               FileAccesible = True
               strBuffer.Close()

           Catch ex As Exception
               FileAccesible = False
           End Try
            My.Application.DoEvents()
       End While
       Me.Cursor = Cursors.Default
       FileIO.FileSystem.DeleteFile(FileTemp)
       Return Result
   End Function
#End Region
End Class


Mediante este...snippet, supongo. Se obtendría el resultado de una línea de comandos que usáramos en la consola de windows:


Código (vbnet) [Seleccionar]
GetResultCommand(LÍNA DE COMANDO)

Es importante poner entre comillas la aplicación a la que llamamos:
""cmd.exe""

Código (vbnet) [Seleccionar]
Dim sCommand As String = String.Format("""cmd.exe"" /r ping {0} ", "www.elhacker.net")

para menos lío también se puede llamar así:

Código (vbnet) [Seleccionar]
Dim sCommand As String = String.Format("""{0}"" /r ping {1} ", "cmd.exe", "www.elhacker.net")

el caso es que la aplicación quede entre comillas.

[MODIFICACADO]
Bueno, he hecho una pequeña modificación porque me he dado cuenta que claro, no todas las aplicaciones con comandos tienen el mismo comando de salida. Por ejemplo link.exe tiene /out: y cmd.exe tiene '>'. Así que esto es mejor aplicarlo cuando establecemos el comando y no desde el snippet

Con lo cual quedaría así con link.exe:
Código (vbnet) [Seleccionar]
     Dim sCommand As String = String.Format("""{0}"" /dump /exports {1} /out:", _
"C:\Archivos de programa\Microsoft Visual Studio 10.0\Common7\IDE\link.exe", _
   "c:\windows\system32\shell32.dll")
       TextBox1.Text = GetResultCommand(sCommand)


o así en con cmd.exe:
Código (vbnet) [Seleccionar]
  Dim sCommand As String = String.Format("""{0}"" /r ping {1} >", "cmd.exe", "www.elhacker.net")
       TextBox1.Text = GetResultCommand(sCommand)


Y he modificado esta línea quitando '>':

Código (vbnet) [Seleccionar]
sCommandLine = String.Format(sCommandLine & "{0}{1}{2}", C34, FileTemp, C34)

También he añadido:
Código (vbnet) [Seleccionar]
System.Text.Encoding.GetEncoding("ibm850")

Que no se en otra compu, pero en la mía si no establezco esta codificación para leer el archivo no se ven correctamente las vocales con acento.

-------------------------------------------------------



         ALGUNOS COMANDOS INTERESANTES PARA OBTENER INFORMACIÓN
       Dim sCommand As String = String.Format("""{0}"" /r dir C: >", "cmd.exe")
         
    Dim sCommand As String = String.Format("""{0}"" /r ping {1} >", "cmd.exe", "www.elhacker.net")
   
   Para mostrar todo el contenido de la tabla de rutas IP
   Dim sCommand As String = String.Format("""{0}"" /r route print >", "cmd.exe")

     Muestra la configuración de TCP/IP completa de todos los adaptadores
       Dim sCommand As String = String.Format("""{0}"" /r ipconfig /all >", "cmd.exe")


       Muestra una lista de todos los controladores de dispositivo instalados y sus propiedades.
       [modo tabla]
       Dim sCommand As String = String.Format("""{0}"" /r driverquery >", "cmd.exe")
       [modo csv]
       Dim sCommand As String = String.Format("""{0}"" /r driverquery /fo csv >", "cmd.exe")


       Muestra los archivos en lista donde se ejecuta esta apliación
       Dim sCommand As String = String.Format("""{0}"" /r tree /f >", "cmd.exe")

       Muestra todos los archivos del directorio C: (puede tardar un poco según el disco)
       Dim sCommand As String = String.Format("""{0}"" /r tree c:\ /f >", "cmd.exe")


       [Este es muy buen comando]
       Muestra información de configuración detallada acerca de un equipo y su sistema operativo
       (puedes usar 'csv' o 'list' en lugar de 'table'
   Dim sCommand As String = String.Format("""{0}"" /r systeminfo /fo table >", "cmd.exe")
       
   Para obtener información de un determinado host (sistema)
       comando= 'systeminfo /s HOST /fo table'
       Para(obtener) 'HOST'  escribe hostname en la consola y luego lo incorporas en el siguente
       comando, en este caso es 'mypc'
       Dim sCommand As String = String.Format("""{0}"" /r systeminfo /s mypc /fo table >", "cmd.exe")

       Muestra una lista de los servicios que se están ejecutando
Dim sCommand As String = String.Format("""{0}"" /r Net start  >", "cmd.exe")

       Muestra las conexiones activas
       Dim sCommand As String = String.Format("""{0}"" /r netstat >", "cmd.exe")

       Muestra todas las conexiones y puertos de escucha
       'Dim sCommand As String = String.Format("""{0}"" /r netstat -a >", "cmd.exe")

       Muestra el ejecutable que crea cada conexión o puerto de(escucha)
       Dim sCommand As String = String.Format("""{0}"" /r netstat -b >", "cmd.exe")

       Muestra las estadísticas Ethernet. Se puede combinar con la opción()-s
       Dim sCommand As String = String.Format("""{0}"" /r netstat -e >", "cmd.exe")

       Muestra estadísticas por protocolo. De forma predeterminada,
       se muestran para IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP y
       UDPv; se puede utilizar la opción -p para especificar un
       subconjunto de los valores predeterminados
       Dim sCommand As String = String.Format("""{0}"" /r netstat -s >", "cmd.exe")


       CONSEJO:
       'ALGUNOS COMANDOS PERMITEN USAR TRES TIPOS DE LISTA [LIST|CSV|TABLE]
       usando CSV puedes acceder fácilmente a la información usando SPLIT
       MODO CSV: "infoA","InfoB","infoC","InfoD"
       Ejemplo:
       Devuelve la dirección de control de acceso a medios (MAC, media access control) y  lista de los protocolos de red asociados con cada la dirección de todas las tarjetas de red de cada equipo
       Dim sCommand As String = String.Format("""{0}"" /r getmac  /fo csv /nh /v >", "cmd.exe")
       Dim sCommand As String = String.Format("""{0}"" /r getmac  /s mypc /fo csv >", "cmd.exe")


Espero que os sirva

sl2  :D



[condejo]
Para un TextBox u otro control de texto usa la fuente Courier New para que las tablas se muestren de forma ordenada.
#51
Hola

Iré al grano, utilizando la función Process.GetProcesses() puedo obtener información del los procesos del sistema así como el Handle o el MainWindowHandle de la ventana principal de un proceso.

El problema es que en algunos casos  MainWindowHandle  devuelve 0

Recordé un viejo código de VB que tenía por ahí. Y tras un buen rato probando lo conseguí pasar a VB.NET, ya que usa APIs y si no se usa bien devuelve error o valores nulos.

Se necesita el ID de un proceso para obtener el handle principal, y dado que la clase  Process no devuelve valor nulo con los IDs obtengo todos los Handles en la lista.


Ahí va el code  ;):

////OBTENER HANDLE PROCESO////

Código (vbnet) [Seleccionar]
#Region "Obtener Handle Proceso"
Public Module modProcessHandle
   <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
   Private Function FindWindow(ByVal lpClassName As String, _
   ByVal lpWindowName As String) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Public Function GetParent(ByVal hWnd As IntPtr) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Private Function GetWindow(ByVal hWnd As IntPtr, _
   ByVal wCmd As Integer) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Private Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, _
   ByRef lpdwProcessId As Integer) As IntPtr
   End Function


   Public Function GetProcessHandle(ByVal ProcessId As Integer) As IntPtr
       Dim HwndTemporal As IntPtr
       Dim idProc As Integer = 0
       Dim HWND As IntPtr = IntPtr.Zero
       Const GW_HWNDNEXT = 2
       HwndTemporal = FindWindow(Nothing, Nothing)
       ' Loop hasta que encuentra una coincidencia o no hay más identificadores de ventana:
       Do Until HwndTemporal = IntPtr.Zero
           ' Comprueba que no tenga ninguna ventana 'Parent'
           If GetParent(HwndTemporal) = IntPtr.Zero Then
               GetWindowThreadProcessId(HwndTemporal, idProc)
               If ProcessId.Equals(idProc) Then
                   HWND = HwndTemporal 'Devuelve el handle encontrado
                   Return HWND
                   Exit Do ' Salir de bucle
               End If
           End If
           idProc = 0
           'Siguiente identificador de ventana
           HwndTemporal = GetWindow(HwndTemporal, GW_HWNDNEXT)
       Loop
       Return HWND
   End Function

End Module
#End Region



Aquí un ejemplo de como usarlo para obtener una lista con los procesos en ejecución sus handles y su Class Name.


Código (vbnet) [Seleccionar]
Option Strict On
Option Explicit On
Imports System.Runtime.InteropServices
Imports System.Text

Public Class Form1
   <DllImport("user32.dll", CharSet:=CharSet.Auto)>
   Private Shared Function GetClassName(ByVal hWnd As IntPtr, _
  ByVal lpClassName As System.Text.StringBuilder, _
  ByVal nMaxCount As Integer) As Integer
   End Function
   Dim ClassName As StringBuilder = New StringBuilder(256)
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       ListView1.Columns.Add("Name", 100)
       ListView1.Columns.Add("MainHandle", 100)
       ListView1.Columns.Add("ClassName", 200)
       ListView1.Columns.Add("MainHandle", 100)
       ListView1.Columns.Add("ClassName", 200)
       ListView1.View = View.Details
       ListView1.FullRowSelect = True
       'Recorre los procesos y agrega la información al ListView
       For Each Proceso In Process.GetProcesses()
           Dim Handle As IntPtr = modProcessHandle.GetProcessHandle(Proceso.Id)
           If Handle <> IntPtr.Zero Then
               'Nombre Proceso
               ListView1.Items.Add(Proceso.ProcessName)

               'MainWindowHandle
               ListView1.Items(ListView1.Items.Count - 1).SubItems.Add _
                   (Conversion.Hex(Proceso.MainWindowHandle.ToInt32))
               'ClassName
               ClassName.Clear()
               GetClassName(CType(Proceso.MainWindowHandle.ToInt32, IntPtr), ClassName, ClassName.Capacity)
               ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(ClassName.ToString)

               'MainWindowHandle
               ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(Conversion.Hex(CInt(Handle)))
               'ClassName
               ClassName.Clear()
               GetClassName(Handle, ClassName, ClassName.Capacity)
               ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(ClassName.ToString)

           End If
       Next
   End Sub

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub
End Class
#Region "Obtener Handle Proceso"
Public Module modProcessHandle
   <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
   Private Function FindWindow(ByVal lpClassName As String, _
   ByVal lpWindowName As String) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Public Function GetParent(ByVal hWnd As IntPtr) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Private Function GetWindow(ByVal hWnd As IntPtr, _
   ByVal wCmd As Integer) As IntPtr
   End Function
   <DllImport("user32.dll", ExactSpelling:=True, CharSet:=CharSet.Auto)> _
   Private Function GetWindowThreadProcessId(ByVal hWnd As IntPtr, _
   ByRef lpdwProcessId As Integer) As IntPtr
   End Function


   Public Function GetProcessHandle(ByVal ProcessId As Integer) As IntPtr
       Dim HwndTemporal As IntPtr
       Dim idProc As Integer = 0
       Dim HWND As IntPtr = IntPtr.Zero
       Const GW_HWNDNEXT = 2
       HwndTemporal = FindWindow(Nothing, Nothing)
       ' Loop hasta que encuentra una coincidencia o no hay más identificadores de ventana:
       Do Until HwndTemporal = IntPtr.Zero
           ' Comprueba que no tenga ninguna ventana 'Parent'
           If GetParent(HwndTemporal) = IntPtr.Zero Then
               GetWindowThreadProcessId(HwndTemporal, idProc)
               If ProcessId.Equals(idProc) Then
                   HWND = HwndTemporal 'Devuelve el handle encontrado
                   Return HWND
                   Exit Do ' Salir de bucle
               End If
           End If
           idProc = 0
           'Siguiente identificador de ventana
           HwndTemporal = GetWindow(HwndTemporal, GW_HWNDNEXT)
       Loop
       Return HWND
   End Function

End Module
#End Region



Como demostración he hecho que se muestre en una columna los handles obtenidos con la clase Process y otra columna con los handles obtenidos con el snippet. Se puede ver que con algunos procesos ocultos, es decir no son visibles, se devuelve valor 0, pero con el snippet se obtiene el handle sin problemas. Además se obtienen los nombres de clase (ClassName) que sin los Handles de las ventanas no es posible obtenerlos. Por lo menos que yo sepa.

La primera columna ClassName se obtiene con MainWindowHandle del Procces. La segunda columna ClassName se obtiene con los handles obtenidos con el snippet.


Si hay otra forma más sencilla, decídmelo  :-*


El código original VB6 está en el siguiente enlace:
CodeVB

Espero que os sirva...

Saludos
#52
.NET (C#, VB.NET, ASP) / Virus heurístico
18 Noviembre 2015, 17:58 PM
Hola
Los antivirus borran mis programas. ¿Cómo evitarlo?

sl2
#53
Hola

Pues el asunto ya lo explica todo. Extraigo el código de una página web y no aparecen caracteres especiales como los acentos y creo que la 'ñ' tampoco.

Mi código es el siguiente:

Código (vbnet) [Seleccionar]
        Dim UrlCode As String = Nothing
       Dim myHttpWebRequest As System.Net.HttpWebRequest = _
           CType(System.Net.WebRequest.Create("https://foro.elhacker.net/net/el_codigo_html_extraido_de_una_web_no_muestra_acentos_aeo-t444215.0.html;msg2046878#msg2046878"),  _
               System.Net.HttpWebRequest)
       myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)" '".NET Framework Test Client"
       ' The response object of 'HttpWebRequest' is assigned to a 'HttpWebResponse' variable.
       Dim myHttpWebResponse As System.Net.HttpWebResponse = CType(myHttpWebRequest.GetResponse(), System.Net.HttpWebResponse)
       ' Display the contents of the page to the console.
       Dim streamResponse As System.IO.Stream = myHttpWebResponse.GetResponseStream()
       Dim streamRead As New System.IO.StreamReader(streamResponse)

       UrlCode = streamRead.ReadToEnd

       streamRead.Close()
       streamResponse.Close()
       myHttpWebResponse.Close()


En lugar del acento aparece un cuadrito 'cami[]n'

Gracias



Ya lo solucioné, añadiendo System.Text.Encoding.

Código (vbnet) [Seleccionar]
 Dim streamRead As New System.IO.StreamReader(streamResponse, System.Text.Encoding.GetEncoding(1252))

También me ha servido poner System.Text.Encoding.Default

Código (vbnet) [Seleccionar]
Dim streamRead As New System.IO.StreamReader(streamResponse, System.Text.Encoding.Default)

Parece ser que es debido a la conversión de la Web a Unicode  que hace Net.
#54
Dudas Generales / Ver series retro
10 Noviembre 2015, 15:21 PM
Hola
Estoy buscando donde ver online la serie 'Los ángeles de Charlie (1976)'. Busco en Google y me sale seriesyonkies por ejemplo pero a la hora de verlo no hay manera, me dice o que actualice Flash que ya lo he actualizado oy firefox que también lo tengo actualizado, pero desde el propio firefox no desde el enlace que te proponen ¿lógico no?.

¿Dónde puedo verla?

Gracias



Bueno, he vuelto a probar y ahora me lleva a una página en blanco.
#55
Hola

El otro día me conecté a la red usando el móvil como modem. Mi movil  tiene límite de datos, y pasado 1 GB, me cobran 1 € cada 100 mb. En fin, un timo. Es para uso mínimo

El caso es que me conecté desde XP y afortunadamente tengo un programa que hice yo mismo para controlar subida y la bajada.  Se que hay herramientas para verlo pero se muestra en bytes y no suma la bajada y la subida, lo cual lo que cuenta es todo en este caso.

Por suerte me percaté pronto de que había algo descargando sin parar y desconecté la conexión. Hice lo siguiente:
- Mediante el Firewall de mi antivirus bloquee la conexión de programas que tratan de utilizar a la red.
-Desconecté Windows Update. Además ya lo tenía en avisarme y no descargar.
-Mediante un programa What's Running, compruebo que se conecta a la red. También desde consola.

Veo que sea lo que sea usa svchost.exe

Por mucho que haga no conseguía averiguar qué es lo que se estaba descargando y qué programa lo hacía. Hasta que  me puse con los servicios. Al final resulta que era: Servicio de transferencia inteligente en segundo plano

Lo deshabilité y listo ya no descargaba nada en absoluto. Sólo cuando navegaba ya que al hacerlo se descargan y envían datos.

Si tengo deshabilitado Windows Update ¿Qué programa usaba o qué se descargaba a través de este servicio?

Gracias








#56
Hola

Mediante este código obtengo los bytes enviados y recibidos por la red.

Código (vbnet) [Seleccionar]
 Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) _
   Handles Timer1.Tick
       Dim nics As System.Net.NetworkInformation.NetworkInterface()
       nics = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()

       For Each nic As NetworkInterface In nics
           Dim S As Integer = nic.NetworkInterfaceType
 
           If nic.OperationalStatus = 1 Then
               If S = NetworkInterfaceType.Wireless80211 Or S = NetworkInterfaceType.Ethernet Then
                   Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics
                   ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces.First.GetIPv4Statistics
                   Label1.Text = String.Format("Enviado: {0} bytes", ipv4Stats.BytesSent.ToString("##,##"))
                   Label2.Text = String.Format("Recibido: {0} bytes", ipv4Stats.BytesReceived.ToString("##,##"))

               End If
               If S = NetworkInterfaceType.Ppp Then
                   Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics
                   ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(1).GetIPv4Statistics
                   Label1.Text = String.Format("Enviado: {0} bytes", ipv4Stats.BytesSent.ToString("##,##"))
                   Label2.Text = String.Format("Recibido: {0} bytes", ipv4Stats.BytesReceived.ToString("##,##"))
               End If
           End If
       Next
   End Sub




Pero no cuadra con los mostrados por Windows a través del cuadro "Estado de Conexión de red inalámbrica":





Gracias

#57
Hola

Estoy intentando cargar una imagen que tengo en la carpeta Recursos del proyecto en
un  botón. pero no lo consigo porque no se poner la dirección de imagen

He probado esto:
Código (xml) [Seleccionar]
 <Button>
<Image Height="18" Source="/WpfApplication1;component/Resources/Ir.png" Stretch="Fill" Width="18"/>
</Button>


y esto:
Código (xml) [Seleccionar]
 <Button>
<Image Height="18" Source="/Resources/Ir.png" Stretch="Fill" Width="18"/>
</Button>


y esto:
Código (xml) [Seleccionar]
 <Button>
<Image Height="18" Source="Res/Ir.png" Stretch="Fill" Width="18"/>
</Button>



Pero nada no se carga

Gracias



Ya lo he conseguido  :laugh:

Código (xml) [Seleccionar]
<Application x:Class="Application"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   StartupUri="MainWindow.xaml">
   <Application.Resources>
       <ImageBrush x:Key="OpenImage">
           <ImageBrush.ImageSource>
                        <BitmapImage UriSource="/Resources/open.png" />
           </ImageBrush.ImageSource>
       </ImageBrush>

       <Style TargetType="Button">
           <Setter Property="Background" Value="{StaticResource OpenImage}"/>
       </Style>
       
   </Application.Resources>
</Application>


Una cosa importante. Por defecto la imagen colocada en Resources tiene la propiedad 'Acción de compilación' establecidad en 'Ninguno'. Hay que establecerlo como' Resource'
#58
Hola

Pues eso, ayer estuve más de una hora cambiando esto y aquello para evitar que al hacer clic sobre el ComboBox NO despliegue la lista pero SI que lo haga la pulsar el botón.

Si el ComboBox no está personalizado, es decir, que no le hemos aplicado ningún estilo, basta con cambiar la propiedad IsEditable a True

Código (xml) [Seleccionar]
<ComboBox Name="ComboBox1" IsEditable="True"  Height="25" Width="150" Margin="0,20,0,0"> </ComboBox>

Pero cuando se le aplica un estilo no hay forma de conseguir que no despliegue la lista al hacer clic sobre él.

Aquí dejo un enlace con un ejemplo de estilo para el ComboBox
ComboBox ControlTemplate Example

Si establezco IsEditable= "True" se puede editar pero al hacer clic sobre el cuadro de texto para editarlo se despliega la lista.

Gracias

#59
Hola

Mi portátil (con Windows Vista) tenía un disco de 250 GB y al cambiarlo por uno de 500 GB los drivers originales de Intel no eran compatibles con el disco de 250 y no me funcionaba Widnows Update. Tras mucho navegar vi en un foro que alguien había encontrado esa relación y lo solucionó. Me bajé una versión actualizada 'Intel Rapid Storage Technology Driver v9.5.6.1001 REV. SoftPaq NUMBER:  SP47845'. Y problema solucionado.

Estas son las especificaciones del dispositivo:
DEVICES SUPPORTED:  
PCI\VEN_8086&DEV_3B29="Intel(R) 5 Series 4 Port SATA AHCI Controller"


y mi CPU:
Intel(R) Core(TM)2 Duo CPU     P8400  @ 2.26GHz, 2267 Mhz, 2 procesadores principales, 2 procesadores lógicos

Parece ser que tiene que ver con el AHCI (Advanced Host Controller Interface) o RAID.

Pero esto no acaba aquí, ayer tras instalar Windows 7 en un PC (no le meto Linux porque no tiene conexión a Internet). Pues vi que el disco del PC tenía un programa para controlar el CPU mostrando los vatios que consumía. Busqué lo mismo en el disco del portátil y por error instalé los drivers antiguos de Intel. El resultado un mensaje de error de Windows Live Mail:"Error 0x8E5E0247". El cual no relacioné para nada con el tema de los drivers, y busqué incesantemente una solución en Google, hasta que me acordé de haber instalado los programas 'Intel® Matrix Storage Manager' y Intel Turbo Memmory (que también te instala los drivers antiguos NO compatible con disco de 500GB ). Entonces intenté iniciar Windows Update y como esperaba tampoco funcionaba.

Desinstalé los programas de Intel y luego al reiniciar PANTALLAZO AZUL. Tuve que iniciar el modo reparación y restaurar el sistema a un punto anterior.

Dicho todo esto, no entiendo qué tiene que ver windows Live Mail y Windows Update con el CPU y el disco de 500GB. No entiendo esa dependéncia de Windows Update y  Windows Live Mail con Intel y sus drivers, la verdad.

Espero que alguien pueda explicarme la relación.

Aquí otro usuario se encontró con el mismo problema y lo solución del mismo modo:
http://programacion-vision-digital.bligoo.com.mx/resuelto-windows-update-error-0x8e5e0247-en-windows-7


#60
Hola

Hola me gustaría saber como salir de la aplicación cuando todavía no se a salido de DO/LOOP

Mi método clásico siempre ha sido poner END en el evento Unload en VB y también en Dispose en Net. No se si habrá otra manera también sencilla.

Por ejemplo he creado un Bucle Do/Loop en el que creo un reloj en el cual si han pasado 10 segundos se sale de del bucle. La razón es porque quiero que el bucle dure un mínimo de 10 segundos a espera que se cumpla una condición y si pasados los 10 segundos no se cumple sale del bucle.

Aquí va el supercódigo de ejemplo :P
Código (vbnet) [Seleccionar]
Option Strict On
Option Explicit On
Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim SecA As TimeSpan, SecB As TimeSpan
       SecA = TimeSpan.FromTicks(Date.Now.Ticks)
       Do
           SecB = TimeSpan.FromTicks(Date.Now.Ticks).Subtract(SecA)
           Me.Text = CStr(SecB.Seconds)
           If CInt(SecB.Seconds) = 10 Then Exit Do
           My.Application.DoEvents()
       Loop 'While (podría poner condición y si se cumple sale antes de los 10 segundos)
   End Sub

   Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
       End
   End Sub
End Class


El problema está en que si quito
Código (vbnet) [Seleccionar]
   Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
       End
   End Sub


No se puede cerrar la apliación hasta que no pasen los 10 segundos
#61
Hola

He usado dos componentes que he añadido al cuadro de herramientas con el fin de usar el motor de firefox: WebKitBrowser y GeckoFX

El caso que puedo configurar Firefox para que use el Socks v5 en lugar de Proxy HTTP. Pero no he visto la forma de hacer que estos motores  en Vb.net usen socks.

Se que es un poco complicado el tema. Si lo sabéis bien, si no pues nada que se le va hacer.

MAS INFORMACIÓN:
Con WebKitBrowser he seguido el siguiente tutorial:

http://thebot.net/threads/vb-net-how-to-make-a-firefox-webbrowser.142359/

Componente WebKit
http://webkitdotnet.sourceforge.net/downloads.php
http://sourceforge.net/projects/webkitdotnet/?source=typ_redirect


Con GeckoFX he seguido el siguiente turorial
http://www.scenebeta.com/tutorial/como-usar-el-motor-de-mozilla-firefox-en-vb-net


GeckoFX
http://sourceforge.net/projects/geckofx/

Necesita los archivos  Xulrunner que se añaden a la carpeta  Debug de nuestro proyecto:
https://eclipse.org/atf/old/downloads/base_files/manualXulrunner_section.php

Gracias
#62
Hola

Estoy intentando cambiar el color del resaltado de selección y las lenguetas que se ven de color amarillo  con efecto de botón convexo en el entorno de desarrollo de VB.NET2010. Como se puede ver en esta imagen (la lengueta en la que pone Start Page y en la selección de Simple Calculator):





Ya he mirado en Herramientas/Opciones/Entorno/Fuentes y Colores y ya harto de buscar he cambiado todo lo que fuera amarillo o similar, pero nada, sigue igual.

No me gusta el escritorio demasiado iluminado por lo que el tema de mi escritorio es oscuro y con letras blancas. Ocurre que como el resaltado es amarillo al cambiarse a letras blancas no se ve una porra de lo que dice.

Aunque no pueda cambiar el color del resaltado, al menos poder cambiar el color de la fuente.

Gracias
#63
Hola

He conseguido hacer el efecto Glass o cristal con una ventana. Y sin transparentar los controles, porque es lo que he encontrado buscando por ahí.

Pero lo que yo quiero es aplicar opacidad (no el efecto glass) pero únicamente a la ventana. Cuando cambio la propiedad Opacity a la ventana. por ejemplo a 0.75,  todo el contenido de la misma también se vuelve opaca.

¿Alguien sabe como evitar esto?

Gracias




Código (vbnet) [Seleccionar]
<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525" Opacity="0.75" AllowsTransparency="True" WindowStyle="None">
    <Window.Background>
        <SolidColorBrush Color="Red" Opacity="0.75"/>
    </Window.Background>
    <Grid Height="158" Width="274"  Background="Black" Opacity="1">
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="71,70,0,0" Name="Button1" VerticalAlignment="Top" Width="75" Opacity="1" />
    </Grid>
</Window>
#64
Hola amigos

Jugué a toda la serie de NFS, no he probado los actuales, me quedé en NFS UNDERGROUND. Me gustaría saber si hay algún truco para hacer que los coches corran más en este juego.

Con los anteriore desarrollé un truco muy curioso para hacer que mi coche corriera como una bestia, dejando a todos atrás antes de la primera curva  :P

El truco era el siguiente:
NFS3 y NFS Road Challenge(1999)

Entra en  GAMEDATA/CARMODEL/ y si quieres modificar el Corvette abres la carpata CORV. Después abre el archivo car.viv que debe abrirse con un heditor hexadecimal.

Podéis encontrar la siguiente lista de valores:

mass [kg](2)
1472.000000
number of gears (reverse + neutral + forward gears)(3)
8
number of gears (automatic, r, n, forward)(75)
6
gear shift delay (ticks)(4)
6
shift blip in rpm (size 8)(5)
0,0,300,225,200,175,150,100
brake blip in rpm (size 8)(6)
0,0,300,225,200,175,150,100
velocity to rpm ratio (size 8)(7)
-279.710358,0.000000,256.561890,171.684280,125.387398,96.451843,84.877625,76.196953
velocity to rpm ratio automatic(size 8)(76)
-203.437241,0.000000,271.841888,144.804672,88.837219,75.511640,0.000000,0.000000
gear ratios (size 8)(8)
2.900000,0.000000,2.660000,1.780000,1.300000,1.000000,0.740000,0.500000
gear ratios automatic (size 8)(77)
2.290000,0.000000,3.060000,1.630000,1.000000,0.700000,0.000000,0.000000
gear efficiency (size 8)(9)
0.799988,0.000000,0.870000,0.870000,0.849991,0.899994,0.950000,1.120000
gear efficiency automatic (size 8)(78)
0.799988,0.000000,0.930000,0.880000,0.900000,1.100000,0.000000,0.000000
torque curve (size 41) in 256rpm increments(10)
190.000000,190.452438,195.723282,292.907043,381.565521,387.813019,394.548645,404.267029,412.944153,417.109161,422.738434,433.150970,442.587341,449.529053,457.609619,468.022156,474.529999,474.529999,467.208679,449.854431,432.500214,415.145966,397.791718,380.437469,363.083252,345.729004,328.374756,311.020508,293.666290,276.312042,258.957794,241.603561,224.249313,206.895081,189.540833,172.186600,154.832367,137.478119,120.123878,102.769638,85.415398
final gear(11)
3.420000
final gear automatic(79)
3.150000
engine minimum rpm(12)
900
engine redline in rpm(13)
6000
maximum velocity of car [m/s](14)
78.230003
top speed cap [m/s](15)
78.230003
front drive ratio(16)
0.000000
Uses Antilock Brake System(17)
1
maximum braking deceleration(18)
10.060000
front bias brake ratio(19)
0.532800
gas increasing curve(20)
16,16,16,16,16,16,16,16
gas decreasing curve(21)
32,32,32,32,32,32,32,32
brake increasing curve(22)
64.000000,32.000000,16.000000,8.000000,4.000000,2.000000,1.000000,1.000000
brake decreasing curve(23)
32.000000,32.000000,32.000000,32.000000,32.000000,32.000000,32.000000,32.000000
wheel base(24)
2.654300
front grip bias(25)
0.490000
power steering (boolean)(26)
1
minimum steering acceleration(27)
17.100000
turn in ramp(28)
16.000000
turn out ramp(29)
32.000000
lateral acceleration grip multiplier(30)
3.300000
aerodynamic downforce multiplier(31)
0.001263
gas off factor(32)
0.315000
g transfer factor(33)
0.420000
turning circle radius(34)
6.100000
tire specs front(35)
245,45,17
tire specs rear(36)
275,40,18
tire wear(37)
0.000000
Slide Multiplier(38)
1.000000
Spin Velocity Cap(39)
0.349991
Slide Velocity Cap(40)
0.199997
Slide Assistance Factor(41)
128.000000
Push Factor(42)
9000
Low Turn Factor (the lower the figure, the better the turn)(43)
0.020996
High Turn Factor (the lower the figure, the better the turn)(44)
0.025986
pitch roll factor(45)
1.030000
road bumpiness factor(46)
0.950000
spoiler function type(47)
0
spoiler activation speed [m/s](48)
0.000000
gradual turn cutoff(49)
80
medium turn cutoff(50)
110
sharp turn cutoff(51)
184
medium turn speed modifier(52)
0.950000
sharp turn speed modifier(53)
0.930000
extreme turn speed modifier(54)
0.900000
subdivide level(55)
3
camera arm(56)
0.250000
Body Damage(57)
0.000000
Engine Damage(58)
0.000000
Suspension Damage(59)
0.000000
Engine Tuning(60)
1.000000
Brake Balance(61)
0.000000
Steering Speed(62)
1.000000
Gear Rat Factor(63)
1.000000
Suspension Stiffness(64)
1.000000
Aero Factor(65)
1.000000
Tire Factor(66)
1.000000


El truco consiste en modificar dichos valores hasta obtener el rendimiento que buscas en el coche, hasta conseguir incluso que no derrape o debería decir resvale, porque a veces parece que van sobre hielo.

Estas son las modificaciones, pero tengo que decir que no todos los coches responderán igual. La razón es que no todos los coches tienen los mismo valores y la combinación de valores hace que el coche no responda igual. Si solo quieres que corra más basta con reducir su peso  mass [kg] . Ahora, si quieres que derrape menos y que responda al instante y cambiar el máximo de su aceleración entonces ya debes modificar otras cosas.


mass [kg]   1472.000000  ----> cambias a   ----> 1000.000000

velocity to rpm ratio (size 8)(7) -1999.99999,0.000000... ----> cambias a   ----> -279.710358,0.0....

velocity to rpm ratio automatic(size 8)(76)  --> -1999.99999,0.000000,390.05 lo mismo  a --> -203.437241,0.000000...

gear ratios (size 8)(8) 2.850000,0..  ----> cambias a   ---->  -203.437241,0.000000

engine minimum rpm(12)  900 ----> cambias a   ---->  950

engine redline in rpm(13)  6000 ----> cambias a   ---->  8100


maximum velocity of car [m/s](14) 78.230003  ----> cambias a   ---->  970

Uses Antilock Brake System(17) 1  ----> cambias a   ---->  2

front bias brake ratio(19) 0.532800 ----> cambias a   ----> 0.58

maximum braking deceleration   ----> cambias a   ---->   162000

power steering (boolean)(26) 1  ----> cambias a   ---->  26

lateral acceleration grip multiplier(30)  3.300000  ----> cambias a   ---->   3.3500000

aerodynamic downforce multiplier(31)  0.007865  ----> cambias a   ---->   0.007865



Aquí está la modificación completa del Corvette (en NFS3):


Car Classification(1)
1
mass [kg](2)
1000.000000
number of gears (reverse + neutral + forward gears)(3)
8
number of gears (automatic, r, n, forward)(75)
5
gear shift delay (ticks)(4)
5
shift blip in rpm (size 8)(5)
0,0,300,250,200,200,150,100
brake blip in rpm (size 8)(6)
0,0,300,250,200,155,150,100
velocity to rpm ratio (size 8)(7)
-1999.99999,0.000000,390.051301,165.030781,123.773085,89.391673,00.000000,00.000000
velocity to rpm ratio automatic(size 8)(76)
-1999.99999,0.000000,390.051301,165.039167,89.391673,00.000000,0.000000,0.000000
gear ratios (size 8)(8)
2.850000,0.000000,2.000000,1.200000,0.900000,0.650000,0.000000,0.000000
gear ratios automatic (size 8)(77)
2.850000,0.000000,1.620000,0.920000,0.650000,0.000000,0.000000,0.000000
gear efficiency (size 8)(9)
0.800000,0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000
gear efficiency automatic (size 8)(78)
0.800000,1.000000,1.000000,1.000000,1.900000,1.000000,0.000000,0.000000
torque curve (size 41) in 500rpm increments(10)
190.000000,190.452438,195.723282,292.907043,381.565521,387.813019,394.548645,404.267029,412.944153,417.109161,422.738434,433.150970,442.587341,449.529053,457.609619,468.022156,474.529999,474.529999,467.208679,449.854431,432.500214,415.145966,397.791718,380.437469,363.083252,345.729004,328.374756,311.020508,293.666290,276.312042,258.957794,241.603561,224.249313,206.895081,189.540833,172.186600,154.832367,137.478119,120.123878,102.769638,85.415398
final gear(11)
3.880000
final gear automatic(79)
3.880000
engine minimum rpm(12)
1170
engine redline in rpm(13)
7500
maximum velocity of car [m/s](14)
91.821003
top speed cap [m/s](15)
918210003
front drive ratio(16)
0.000000
Uses Antilock Brake System(17)
1
maximum braking deceleration(18)
11.250000
front bias brake ratio(19)
0.500000
gas increasing curve(20)
16,16,16,16,16,16,16,16
gas decreasing curve(21)
32,32,32,32,32,32,32,32
brake increasing curve(22)
64.000000,32.000000,16.000000,8.000000,4.000000,2.000000,1.000000,1.000000
brake decreasing curve(23)
32.000000,32.000000,32.000000,32.000000,32.000000,32.000000,32.000000,32.000000
wheel base(24)
2.670000
front grip bias(25)
0.480000
power steering (boolean)(26)
0
minimum steering acceleration(27)
18.500000
turn in ramp(28)
16.000000
turn out ramp(29)
32.000000
lateral acceleration grip multiplier(30)
9.940000
aerodynamic downforce multiplier(31)
0.015023
gas off factor(32)
0.499991
g transfer factor(33)
0.420000
turning circle radius(34)
11.00000
tire specs front(35)
245,45,18
tire specs rear(36)
275,40,18
tire wear(37)
0.000000
Slide Multiplier(38)
1.100000
Spin Velocity Cap(39)
0.450000
Slide Velocity Cap(40)
1.000000
Slide Assistance Factor(41)
128.000000
Push Factor(42)
10000
Low Turn Factor (the lower the figure, the better the turn)(43)
0.033987
High Turn Factor (the lower the figure, the better the turn)(44)
0.039999
pitch roll factor(45)
1.000000
road bumpiness factor(46)
1.000000
spoiler function type(47)
0
spoiler activation speed [m/s](48)
0.000000
gradual turn cutoff(49)
48
medium turn cutoff(50)
80

sharp turn cutoff(51)
112
medium turn speed modifier(52)
0.799988
sharp turn speed modifier(53)
0.699997
extreme turn speed modifier(54)
0.599991
subdivide level(55)
3
camera arm(56)
0.350000
Body Damage(57)
0.000000
Engine Damage(58)
0.000000
Suspension Damage(59)
0.000000
Engine Tuning(60)
1.000000
Brake Balance(61)
0.000000
Steering Speed(62)
1.000000
Gear Rat Factor(63)
1.000000
Suspension Stiffness(64)
1.000000
Aero Factor(65)
1.000000
Tire Factor(66)
1.000000



NFPHP2
En este juego era más fácil pues se trata de un archivo INI que se puede abrir y modificar con el Notepad.

Esta es la modificación del coche para  Porsche 911



' Porsche 911 Turbo Statistics
[basic]
' dimensions -- in general these are data parameters and
' should not be used for tuning
Mass=600.0
BodyShape=6
WheelBase=2.350
FrontTrackWidth=1.4650
RearTrackWidth=1.5220
VehicleHeight=1.2140
HeightOfGravity=0.35170
RearSlideFactor=0.0
FrontGripBias=0.480

' aerodynamic factors
' aero coefficients are major tuning variables!
AeroDragCoefficient=0.0
AeroFrontDownforceCoefficient=9.0
AeroRearDownforceCoefficient=10.0
BodyLiftCoefficient=0.0
UnderBodyDragCoefficient=8

' turning/driving factors
SpeedGovernor=200.0
TurningCircleRadius=3.0
TurninRamp=12.00
TurnoutRamp=24.00
BaseDampingVelocity=10.0
RangeDampingVelocity=25.0
DampingLimit=.28
FrontDriveRatio=0.4
driveWheels_0=1
driveWheels_1=1
driveWheels_2=1
driveWheels_3=1
YawInertiaFactor=1.0


' suspension
FrontRollStiffness=2700.0
RearRollStiffness=2800.0
AntiDive=0.38
AntiSquat=0.38
FrontAntiRoll=0.85
RearAntiRoll=0.75
Damper=0.45
TravelFront=0.3
TravelRear=0.3
MaterialType=4

[engineblock]

FlyWheelInertiaFactor=1.00
MinRPM=1500
RedLine=9500
WarningLine=8000
torqueCurve_0=0.0
torqueCurve_1=0.0
torqueCurve_2=280.0
torqueCurve_3=380.0
torqueCurve_4=505.0
torqueCurve_5=520.0
torqueCurve_6=520.0
torqueCurve_7=520.0
torqueCurve_8=520.0
torqueCurve_9=520.0
torqueCurve_10=515.0
torqueCurve_11=507.0
torqueCurve_12=500.0
torqueCurve_13=430.0
torqueCurve_14=380.0
torqueCurve_15=0.0
torqueCurve_16=0.0
torqueCurve_17=0.0
torqueCurve_18=0.0
torqueCurve_19=0.0
torqueCurve_20=0.0
torqueCurve_21=0.0
torqueCurve_22=0.0
torqueCurve_23=0.0

'audio
dbAudio_0=engpatch
dbAudio_1=snx
dbAudio_2=snx
dbAudio_3=chs
dbAudio_4=zzz
dbAudio_5=fax

[transmission]
NumberOfGears=8
GearShiftDelay=4
Automatic=1
GearRatios_0=3.820
GearRatios_1=0.000
GearRatios_2=3.820
GearRatios_3=2.050
GearRatios_4=1.410
GearRatios_5=1.120
GearRatios_6=0.920
GearRatios_7=0.750
GearEfficiency_0=0.900
GearEfficiency_1=0.000
GearEfficiency_2=1.000
GearEfficiency_3=1.000
GearEfficiency_4=1.000
GearEfficiency_5=1.000
GearEfficiency_6=1.000
GearEfficiency_7=1.000
TorqueConverterRatio=1.50
TorqueConverterMaxRPM=3000
GearShiftPointCoefficient=0.95

[rearend]
FinalGearRatio=3.440
FrontFinalGearRatio=3.440

[tire_rear]
TypeCode=10
attach=11
SectionWidth=295
AspectRatio=30
WheelDiameter=18
RollingResistanceFactor=0.90
PeakFriction=1.6
ForceScale=1.15
SlipAngleScale=1.0
AligningMomentScale=1.0
SlipRatio=1.0
MaxRenderTravelUp=0

[tire_front]
TypeCode=10
attach=10
SectionWidth=225
AspectRatio=40
WheelDiameter=18
RollingResistanceFactor=0.90
PeakFriction=1.6
ForceScale=1.15
SlipAngleScale=1.0
AligningMomentScale=1.0
SlipRatio=1.0
MaxRenderTravelUp=0

[brake_rear]
attach=11
BrakeMaterialType=3
BrakeDiameter=330
ABS=1

[brake_front]
attach=10
BrakeMaterialType=3
BrakeDiameter=330
ABS=1

[audio]
enginetype=5
horntype=2

[render]
vehicletype=0




Pero NO he conseguido hacer lo propio con NFS UNDERGROUND. ¿Alguien sabe como?

Espero me pueda responder alguien  :P

Saludos




Bueno he dicho que no he jugado a los actuales. En realidad algunos sí pero en PS2: NFS Carbono, NFS MostWanted y NFS ProStreet.


#65
Hola amigos

Mi duda es si hay alguna forma de evitar esto:

Código (vbnet) [Seleccionar]

Dim PatataChunga as String

....

If PatataChunga ="Chunga" or PatataChunga = "NoChunga" or PatataChunga = "Mr.Potato" then
....

End if



Ya que esto poner "Chunga" or "NoChunga" no funciona.

#66
Hola amigos

Hasta ahora he estado usando Windows Forms, pero para conseguir un aspecto gráfico más bonito en mi aplicación he decidido usar WPF. El problema es que cambian algunos eventos y propiedades y otras cosas y tengo que ir investigando.

Me ha pasado que ya tenía una apliación hecha en Windows Forms y he ido pasado el código a WPF pero resulta que concretamente esto no lo he sabido resolver.

En Windows Forms creé un Panel y un array de controles con Labels. El panel se crea desde un módulo que he llamado (modCrearPanel).  El módulo también tiene eventos y más cosas pero no viene a cuento. La cuestión es poder crear los Labels dentro de un control StackPanel en WPF.


- Primero: Creo un Panel o StackPanel en el Windows Forms y en MainWindow en WPF
- Segundo paso:

EN WINDOWS FORMS
(no es el código original, es una simplificación)
Código (vbnet) [Seleccionar]

Module Module1
   Dim Etiqueta As New Label
   Dim lblEtiqueta(4) As Label
   Sub CrearPanel()
       Dim Y As Integer = 20
       Dim X As Integer
       Form1.Panel1.BackColor = Color.DarkGray
       X = 10 'valor X inicial
       For I as Integer = 0 To 3
           lblEtiqueta(I) = New Label
           lblEtiqueta(I).Width = 15
           lblEtiqueta(I).Height = 15
           lblEtiqueta(I).BackColor = Color.Gray
           lblEtiqueta(I).Location = New Point(X, Y) 'posición X e Y del cuadro
           Form1.Panel1.Controls.Add(lblEtiqueta(I)) 'Crea el label
           X = X + 20
       Next
   End Sub
End Module


CON WPF (NO FUNCIONA)
Código (vbnet) [Seleccionar]
Module Module1
   Dim Etiqueta As New Label
   Dim lblEtiqueta(4) As Label
   Dim Main As MainWindow
   Public Sub CrearPanel()
       Dim Y As Integer = 10
       Dim X As Integer
       Main.StackPanel1.Background = Brushes.DarkGray
       X = 10
       For i As Integer = 0 To 3
           lblEtiqueta(i) = New Label
           lblEtiqueta(i).Background = Brushes.Gray
           lblEtiqueta(i).Width = 15
           lblEtiqueta(i).Height = 15
           lblEtiqueta(i).Margin = New Thickness(0, X, Y, 0)
           X = X + 20
           Main.StackPanel1.Children.Add(lblEtiqueta(i))
       Next i
       Main.Show()
   End Sub
End Module



Para crear el Penel se llama desde el Load o Loaded en WPF a CrearPanel.

Con toda seguridad el problema está en la forma de poder hacer referencia al StackPanel1 que se encuentra en MainWindow. No se como se hace.


Gracias por ayuda




Encontré la forma   :laugh:


Código (vbnet) [Seleccionar]
Module Module1
   Dim Etiqueta As New Label
   Dim lblEtiqueta(4) As Label
   Private app As Application
   Private Main As MainWindow
   Public Sub CrearPanel()
       Dim Y As Integer = 10
       Dim X As Integer
       app = System.Windows.Application.Current
       Main = CType(app.MainWindow, MainWindow)

       Main.StackPanel1.Background = Brushes.DarkGray
       X = 10
       For i As Integer = 0 To 3
           lblEtiqueta(i) = New Label
           lblEtiqueta(i).Background = Brushes.Gray
           lblEtiqueta(i).Width = 15
           lblEtiqueta(i).Height = 15
           lblEtiqueta(i).Margin = New Thickness(0, X, 0, Y)
           X = X + 20
           Main.StackPanel1.Children.Add(lblEtiqueta(i)) 'Crea el label
       Next i
   End Sub
End Module




Esto es lo que había que añadir al código para poder hacer referencia a objetos creados en MainWindow

Código (vbnet) [Seleccionar]

   Private app As Application
   Private Main As MainWindow
   Public Sub CrearPanel()
       app = System.Windows.Application.Current
       Main = CType(app.MainWindow, MainWindow)
      Main.StackPanel1.Background = Brushes.DarkGray
End Sub


Encontré la solución aquí:
https://msdn.microsoft.com/es-es/library/vstudio/ms750944%28v=vs.100%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Ahora que lo he conseguido hacer solo falta colocar correctamente los labels ya que en susitución a "Location"  he usado "Margin" y no funciona igual. Veré a ver  :-\

Saludos

#67
Hola,

Con VB.Net 2010 y utilizando System.Net.NetworkInformation obtengo el valor de datos de subida y bajada de mi conexión.

El caso es que me funciona en Vista y Windows7  pero no en XP.

Esta es la función que he utilizado:

Código (vbnet) [Seleccionar]

Public Class InformationNetWork
Dim Estado As String
Dim DatosRecibidos As String
Dim DatosEnviados As String

   Public Function EnumerateNetwok()
       Dim properties As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
       Dim ipstat As System.Net.NetworkInformation.IPGlobalStatistics = properties.GetIPv4GlobalStatistics()


       '//Estado de red
       Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics
       ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(0).GetIPv4Statistics


       DatosRecibidos = ipv4Stats.BytesReceived.ToString
       DatosEnviados = ipv4Stats.BytesSent.ToString


       '//Estado Conexión

       Dim ipv4Time As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
       Try
           Dim n = ipv4Time.GetActiveTcpConnections().Cast(Of System.Net.NetworkInformation.TcpConnectionInformation).First(Function(el) el.State)
           Estado = n.State
       Catch ex As Exception
           Estado = "Desconectado"
       End Try
       Return 0
   End Function



   Public Property DatesRecibidos As String
       Get
           Return DatosRecibidos
       End Get
       Set(ByVal value As String)
       End Set
   End Property
   Public Property DatesEnviados As String
       Get
           Return DatosEnviados
       End Get
       Set(ByVal value As String)
       End Set
   End Property
End Class


Y para llamarlo hago lo siguiente:

Código (vbnet) [Seleccionar]
   
Public Class Form1
Dim Subida As Decimal
   Dim Bajada As Decimal
   Dim OldSubida As Decimal
   Dim OldBajada As Decimal
   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Dim InfoNet As New InformationNetWork
       InfoNet.EnumerateNetwok()


       Label4.Text = FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2) & " MB"
       Label5.Text = FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2) & " MB"
       If OldSubida <> Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) Then
           Label6.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida & " MB"
           Label7.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada & " MB"
           Label9.Text = (Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida) + _
               (Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada) & " MB"

           Subida = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida
           Bajada = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada
       End If
   End Sub

End Class
#68
Jugando a viejos juegos de MAME32 he descubierto que se hacía ya en aquel entonces tres versiones de un juego cuya dificultad o contenido podía cambiar según fuera para Europa, Asia y EEUU.

Me he encontrado que un mismo juego en japonés iba más rápido y era más difícil que en la versión para Europa. No se si es que pensaban que es que en Europa somos tontos o que. También puede ser porque el juego para máqunas estaban pensados para recaudar dinero con la excusa del entretenimiento y pudiera ser que había un afán de recaudar más en Japón que en Europa. Es decir, que la dificultad era mayor para evitar que el jugador durase más tiempo jugando y obligarle a introducir de nuevo una moneda.

Luego está en juegos actuales lo del NTSC y PAL. No entiendo lo de usar diferentes frecuencias en un sitio que en otro También que trucos que funcionan en EEUU o Japón no funcionen en Europa y cosas así. Creo que hoy en día también la dificultad del juego puede cambiar.

#69
Q tal

Mi problema es simple pero al mismo tiempo extraño.  Resulta que quiero hacer que al pasar el puntero por un control, digamos un Label, el puntero cambie.

Lo que hago es cargar en un archivo de recursos un cursor.  Y luego lo llamo del siguiente modo en el evento MouseMove de un Label:

Código (vbnet) [Seleccionar]
Dim curPen As New System.IO.MemoryStream(My.Resources.Resource1.Lapiz)
Cursor.Current = New Cursor(curPen)


Funciona, pero da igual si el cursor es de 8 bits o 24 bits, se ve de color negro o blanco y negro.

No entiendo porqué.

Gracias