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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: [1]
1  Programación / .NET (C#, VB.NET, ASP) / Tema oscuro en .NET en: 2 Mayo 2020, 08:11 am
Saludos a todos los integrantes del foro.
Tengo una aplicación hecha en VB.NET con temas visuales CLARO y OSCURO, la curiosidad que tengo es como puedo detectar el tema de Windows 10 si está en CLARO U OSCURO para poder aplicar a mi programa el mismo tema de Windows 10 desde VB.NET o C#.

Les agradezco de antemano.
2  Programación / Programación C/C++ / Funciones por referencia en: 9 Abril 2020, 03:37 am
Saludos, Soy casi nuevo en este lenguaje y tengo ganas de profundizar el lenguaje.
Quiero hacer una función con dos parámetros el primero por valor y el segundo por referencia, en el primer parámetro quiero recibir texto que la función devuelva. como un ejemplo quiero resaltar la funcion de windows
Código
  1. Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, ByRef nSize As Long) As Long
Es similar el resultado que quiero obtener, lo cual en su primer parámetro obtengo el nombre del equipo y el segundo le paso el tamaño de caracteres que debe de rellenar.
La función que intento hacer es de esta manera, por favor les agradezco de antemano como lo puedo hacer?.
Código
  1. int NombreFuncion(char* Dato, int &BufferDato) {
  2. char* texto = "resultado";
  3. Dato = texto;//BufferDato para ver la cantidad de caracteres para el texto
  4. return 1;
  5. }
Imagino que se debe manejar punteros lo cual tengo varias dudas sobre el manejo de punteros.
3  Programación / Programación Visual Basic / ListViewItem en: 17 Noviembre 2018, 00:42 am
Estimados: espero que me puedan ayudar, en el listview el metodo ensurevisible hace que se visibilice aun que estaba oculto.
Código
  1. ListView2.SelectedItems(0).EnsureVisible()
La consulta es, como puedo saber antes de ejecutar ensurevisible si esta visible o esta oculto.
gracias por sus respuestas.
4  Programación / .NET (C#, VB.NET, ASP) / Obtener permiso para copiar archivo en c:\archivos de prog..\... en dominio en: 4 Mayo 2018, 22:49 pm
Saludos a todos los miembros del grupo, he buscado una solución para mi problema y no encontré mucho en la web por eso quiero exponer mi problema para que me puedan ayudar
 y también pueda servir para otros que tienen el mismo problema, tengo un sistema en la institución donde debo lanzar nuevas versiones para los clientes mediante el mismo sistema, hasta ahí todo bien, los clientes reciben la notificación de que hay una nueva versión y hacen clic en actualizar en el mismo sistema, el archivo ejecutable de actualización se descarga y ejecuta, pero los clientes están bajo un dominio y les pide usuario y contraseña del administrador (cosa que es normal eso de pedir contraseña), para ejecutar el programita de actualización que nada mas ni menos que hace es copiar y reemplazar el nuevo ejecutable en c:\Archivos de programa\sistema\ejecutable.exe, el detalle es que son varios clientes que están distribuidos geográficamente en distintos lugares, lo que quisiera que el programita de actualización copie y reemplace en su directorio sin que le pida la contraseña del administrador del dominio y para eso como se puede obtener permisos especiales para hacer esa operación. de tanto indagar encontré un código que hace algo parecido pero es para apagar el equipo con privilegios,
nota: el programita de actualización, esta en vb net y lo que hace es llevar el nuevo ejecutable como recurso incrustado al mismo, y lo que hace es copiar o reemplazar desde su recurso a la unidad c:\Archivos de programa\sistema\ejecutable.exe en el equipo del cliente

Código
  1.  Private Const EWX_LOGOFF As Integer = 0
  2.  Private Const EWX_SHUTDOWN As Integer = 1
  3.  Private Const EWX_REBOOT As Integer = 2
  4.  Private Const EWX_FORCE As Integer = 4
  5.  Private Const TOKEN_ADJUST_PRIVILEGES As Integer = &H20
  6.  Private Const TOKEN_QUERY As Integer = &H8
  7.  Private Const SE_PRIVILEGE_ENABLED As Integer = &H2
  8.  Private Const ANYSIZE_ARRAY As Integer = 1
  9.  Private Const VER_PLATFORM_WIN32_NT As Integer = 2
  10.  Private Structure OSVERSIONINFO
  11.    Dim dwOSVersionInfoSize As Integer
  12.    Dim dwMajorVersion As Integer
  13.    Dim dwMinorVersion As Integer
  14.    Dim dwBuildNumber As Integer
  15.    Dim dwPlatformId As Integer
  16.    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=128)> Dim szCSDVersion As String
  17.  End Structure
  18.  Private Structure LUID
  19.    Dim LowPart As Integer
  20.    Dim HighPart As Integer
  21.  End Structure
  22.  Private Structure LUID_AND_ATTRIBUTES
  23.    Dim pLuid As LUID
  24.    Dim Attributes As Integer
  25.  End Structure
  26.  Private Structure TOKEN_PRIVILEGES
  27.    Dim PrivilegeCount As Integer
  28.    Dim laa As LUID_AND_ATTRIBUTES
  29.  End Structure
  30.  Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As IntPtr, ByVal DesiredAccess As IntPtr, ByRef TokenHandle As IntPtr) As Integer
  31.  Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, ByRef lpLuid As LUID) As Integer
  32.  Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Int32, ByVal dwReserved As Int32) As Int32
  33.  <DllImport("advapi32.dll", SetLastError:=True)> Private Function AdjustTokenPrivileges(ByVal TokenHandle As IntPtr, ByVal DisableAllPrivileges As Boolean, ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLengthInBytes As Integer, ByRef PreviousState As TOKEN_PRIVILEGES, ByRef ReturnLengthInBytes As Integer) As Boolean
  34.  End Function
  35.  <DllImport("Kernel32.dll")> Private Function GetVersionEx(<MarshalAs(UnmanagedType.Struct)> ByRef osinfo As OSVERSIONINFO) As Integer
  36.  End Function
  37.  Private Sub EnableShutDown()
  38.    Dim hProc As IntPtr, hToken As IntPtr, mLUID As LUID, mPriv As TOKEN_PRIVILEGES, mNewPriv As TOKEN_PRIVILEGES
  39.    hProc = Process.GetCurrentProcess.Handle
  40.    OpenProcessToken(hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken)
  41.    LookupPrivilegeValue("", "SeShutdownPrivilege", mLUID)
  42.    mPriv.PrivilegeCount = 1
  43.    mPriv.laa.pLuid = mLUID
  44.    mPriv.laa.Attributes = SE_PRIVILEGE_ENABLED
  45.    Call AdjustTokenPrivileges(hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount), mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount))
  46.  End Sub
  47. ' para apagar windows, este codigo hace sin importar el tipo de usuario este en ese momento igual lo apagara si Forzar es True le obliga a apagar
  48. 'como se puede obtener similar permiso para copiar el archivo en un windows que pertenece a un dominio?
  49.  Public Sub ApagarWindows(ByVal Optional Forzar As Boolean = True)
  50.    Dim Flags As Integer = EWX_SHUTDOWN
  51.    If Forzar Then Flags = Flags + EWX_FORCE
  52.    EnableShutDown()
  53.    ExitWindowsEx(Flags, 0)
  54.  End Sub

Intente cambiar
Código
  1. LookupPrivilegeValue("", "SeShutdownPrivilege", mLUID)
por
Código
  1. LookupPrivilegeValue("", "SeRestorePrivilege", mLUID)

que encontré en este link https://foro.elhacker.net/programacion_visual_basic/source_conseguir_privilegios_adjusttokenprivileges-t199668.0.html;wap= pero no hizo ningún efecto o como se puede hacer?

De antemano les agradezco por compartir el conocimiento.
5  Programación / .NET (C#, VB.NET, ASP) / thread multihilos en: 2 Noviembre 2017, 15:45 pm
Que tengan un buen dia a todos los integrantes del foro.
Quiero hacerles la consulta, cuando utilizo thread dentro de otro thread se bloquea mi ventana, no se si es bueno aplicar un hilo dentro de otro hilo, si trabajo con un hilo todo bien pero agrego otro hilo dentro de la misma es ahi donde se bloque mi ventana.

Tal ves no tenga sentido pero lo que quiero hacer es cargar de un datatable a listview pero con el primer hilo tarda en cargar datos en el listview y por cada fila al agregar un item en listview se tarda pero la idea es acelerar la carga y la idea que tuve es por cada fila en datatable disparar otro hilo y es ahí donde empieza a bloquear mi ventana, pero la carga de datos a listview es rápido.

la pregunta es si es conveniente utilizar un hilo dentro de otro o hay otra forma de hacer hilos anidados si que me bloquee mi ventana.

El código es lo siguiente para que se me entienda bien...

Gracias de antemano por sus respuestas


Código
  1. Imports System.Data.SqlClient
  2. Imports System.Threading
  3. Imports System.ComponentModel
  4. <Microsoft.VisualBasic.ComClass()> <ToolboxBitmap(GetType(System.Windows.Forms.ListView))> <System.Serializable()> Public Class ListView
  5.  Inherits Windows.Forms.ListView
  6.  Dim thSQL As Thread
  7.  Dim _sq As String, _decimales As Integer, _EllipseIcon As Boolean, _bordColor As Pen
  8.  Public Sub SQLConsulta(ByVal sq As String, Optional ByVal EllipseIcon As Boolean = False, Optional ByVal borderColor As Pen = Nothing, Optional ByVal decimales As Integer = 0)
  9.    _sq = sq : _decimales = decimales : _EllipseIcon = EllipseIcon : _bordColor = borderColor
  10.    thSQL = New Thread(AddressOf SQLConsultaInterno)
  11.    thSQL.Start()
  12.  End Sub
  13.  Private Sub SQLConsultaInterno()
  14.    Try
  15.      Dim h As Thread
  16.      Dim conexion As SqlConnection = New SqlConnection()
  17.      conexion.ConnectionString = "Data Source=ip_server,1433;Failover Partner=ip_server2,1433;Network Library=DBMSSOCN;MultipleActiveResultSets=true;Initial Catalog=DB;User ID=sa;Password=contraseña;" : conexion.Open()
  18.      Dim ds As New DataSet(), da As New SqlDataAdapter(_sq, conexion) : da.Fill(ds, "tabla")
  19.      If ds.Tables("tabla").Columns.Count = 1 Then
  20.        For c As Integer = 0 To ds.Tables("tabla").Columns.Count - 1
  21.          AddColumn(ds.Tables("tabla").Columns(c).Caption)
  22.        Next
  23.      Else
  24.        For c As Integer = 1 To ds.Tables("tabla").Columns.Count - 1
  25.          AddColumn(ds.Tables("tabla").Columns(c).Caption)
  26.        Next
  27.      End If
  28.      With ds.Tables("tabla")
  29.        For filas As Integer = 0 To .Rows.Count - 1
  30.          Dim ob As New ROW
  31.          ob.fila = .Rows(filas)
  32.          ob.columnas = .Columns.Count
  33.          ob.index = filas
  34.          h = New Thread(AddressOf agregar)
  35.          h.Start(ob)
  36.        Next
  37.      End With
  38.      conexion.Close()
  39.    Catch ex As Exception
  40.  
  41.    End Try
  42.  End Sub
  43.  Private Sub agregar(obj As Object)
  44.    Dim rw As ROW = DirectCast(obj, ROW)
  45.    If rw.columnas = 1 Then
  46.      Dim Registro As New ListViewItem(rw.fila.Item(0).ToString.Trim, rw.index)
  47.      AddItem(Registro)
  48.    Else
  49.      Dim Registro As New ListViewItem(rw.fila.Item(1).ToString.Trim, rw.index)
  50.      Registro.Tag = rw.fila.Item(0).ToString.Trim
  51.      For c As Integer = 2 To rw.columnas - 1
  52.        Registro.SubItems.Add(rw.fila.Item(c).ToString().Trim)
  53.      Next
  54.      AddItem(Registro)
  55.    End If
  56.  End Sub
  57.  
  58.  Delegate Sub AddColumns(ByVal texto As String)
  59.  Private Sub AddColumn(ByVal texto As String)
  60.    If Me.InvokeRequired Then
  61.      Dim d As New AddColumns(AddressOf AddColumn)
  62.      Invoke(d, New Object() {texto})
  63.    Else
  64.      Me.Columns.Add(texto)
  65.    End If
  66.  End Sub
  67.  Delegate Sub AddItems(ByVal item As ListViewItem)
  68.  Private Sub AddItem(ByVal item As ListViewItem)
  69.    If Me.InvokeRequired Then
  70.      Dim d As New AddItems(AddressOf AddItem)
  71.      Invoke(d, New Object() {item})
  72.    Else
  73.      Me.Items.Add(item)
  74.    End If
  75.  End Sub
  76.  
  77.  Private Class ROW
  78.    Property fila As DataRow
  79.    Property columnas As Integer
  80.    Property index As Integer
  81.  End Class
  82. End Class
6  Programación / .NET (C#, VB.NET, ASP) / Agregar mensaje WM_MOUSEMOVE en header de listview en: 15 Agosto 2016, 18:09 pm
Saludos a todos los integrantes del foro, bueno debo acudir a ustedes por un tema que tal ves no es tan necesario.

al parecer el ListView de VB.NET en la vista detalle no genera el mensaje WM_MOUSEMOVE cuando se pasa el mouse sobre las columnas de la cabecera o como se conoce header, y mi pregunta es como puedo agregar a la cola de mensajes de windows al header de listview en vb net para que cuando pase el mouse encima del header me mande ese mensaje.

Código
  1. Protected Overrides Sub WndProc(ByRef m As Message)
  2.  If m.Msg = WM_MOUSEMOVE Then
  3.    'Procesar mensaje cuando pase el mouse encima del header del ListView
  4.  End If
  5.  MyBase.WndProc(m)
  6. End Sub

Gracias de antemano por sus respuestas.
7  Programación / .NET (C#, VB.NET, ASP) / Listview header modificado en listview vbnet en: 8 Diciembre 2015, 20:06 pm
Saludos a todos los componentes de este foro, lo que quiero consultarles es como puedo cambiar el backcolor y forecolor en el header de un listview en vbnet con las apis de windows, se los agradeceré mucho y espero tener suerte...
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines