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


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 [568] 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 ... 1254
5671  Programación / .NET (C#, VB.NET, ASP) / Re: Autoactualizar aplicacion en C# en: 9 Abril 2015, 18:27 pm
Edit: estuve viendo el AutoUpdate+ esta bueno pero es de pago :/

Te lo paso por privado

saludos
5672  Programación / .NET (C#, VB.NET, ASP) / Re: rellenar con rand variable ya cargada de datos en: 9 Abril 2015, 18:07 pm
No hay manera, he, luis?.

En el siguiente ejemplo, tengo una colección del 1 al 5, y relleno la colección con números aleatorios del 1 al 10 sin que estos se repitan entre ellos ni entre los números que ya hay en la colección, hasta incrementar la cantidad de elementos de la colección a 10.

Dicho de otra forma, tengo una lista del 1 al 5, genero una secuencia aleatoria del 1 al 10 y relleno la lista del 1 al 5 con los 5 números restantes del 5 al 10.

Puedes modificar los valores para tus necesidades...

Código
  1. Dim col As IEnumerable(Of Integer) = {1, 2, 3, 4, 5}
  2. Dim minColCount As Integer = 10
  3. Dim minRandValue As Integer = 1
  4. Dim maxRandValue As Integer = 10
  5. Dim rand As Random = New Random
  6.  
  7. If col.Count < minColCount Then
  8.  
  9.    Dim randCol As IEnumerable(Of Integer) =
  10.        From value As Integer In Enumerable.Range(minRandValue, maxRandValue)
  11.        Order By rand.Next
  12.        Where Not col.Contains(value)
  13.        Take (minColCount - col.Count)
  14.  
  15.    col = Enumerable.Concat(col, randCol.ToArray)
  16.  
  17. End If
  18.  
  19. Debug.WriteLine(String.Join("; ", col))

Saludos
5673  Programación / Programación General / Re: ¿Hay alguna funcion para evitar que un archivo se cierre? en: 9 Abril 2015, 09:48 am
me gustara saber como lo puedo hacer para ejecutar un Drag Drop al abrir un archivo

¿Puedes intentar ser más específico?, no entendí lo que pretendes decir con "ejecutar un drag drop al abrir un archivo".

¿Te refieres a añadir capacidad Drag&Drop (arrastrar y soltar) de archivos en un Form?...

...En ese caso primero debes activar la propiedad 'AllowDrop' del Form/Control y suscribirte a los eventos 'DragEnter' y 'DragDrop' de dicho Form/Control, el primer evento se dispara al arrastrar y el segundo evento al soltar.

Te muestro un ejemplo con un TextBox:

Código
  1.    ''' <summary>
  2.    ''' Handles the DragEnter event of the Textbox1 control.
  3.    ''' </summary>
  4.    ''' <param name="sender">The source of the event.</param>
  5.    ''' <param name="e">The <see cref="System.Windows.Forms.DragEventArgs"/> instance containing the event data.</param>
  6.    Private Sub Textbox1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) _
  7.    Handles TextBox1.DragEnter
  8.  
  9.        If e.Data.GetDataPresent(DataFormats.FileDrop) AndAlso
  10.           DirectCast(e.Data.GetData(DataFormats.FileDrop), IEnumerable(Of String)).
  11.                      All(Function(path As String) IO.File.GetAttributes(path).HasFlag(IO.FileAttributes.Archive)) Then
  12.  
  13.            e.Effect = DragDropEffects.All
  14.  
  15.        Else
  16.            e.Effect = DragDropEffects.None
  17.  
  18.        End If
  19.  
  20.    End Sub
  21.  
  22.    ''' <summary>
  23.    ''' Handles the DragDrop event of the Textbox1 control.
  24.    ''' </summary>
  25.    ''' <param name="sender">The source of the event.</param>
  26.    ''' <param name="e">The <see cref="DragEventArgs"/> instance containing the event data.</param>
  27.    Private Sub Textbox1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) _
  28.    Handles TextBox1.DragDrop
  29.  
  30.        If e.Data.GetDataPresent(DataFormats.FileDrop) Then
  31.  
  32.            Dim paths As IEnumerable(Of String) =
  33.               From path As String In DirectCast(e.Data.GetData(DataFormats.FileDrop), IEnumerable(Of String))
  34.               Order By path Ascending
  35.  
  36.            Me.TextBox1.Text = String.Join("; ", paths)
  37.  
  38.        End If
  39.  
  40.    End Sub

Traducción online a C#:
Código
  1. /// <summary>
  2. /// Handles the DragEnter event of the Textbox1 control.
  3. /// </summary>
  4. /// <param name="sender">The source of the event.</param>
  5. /// <param name="e">The <see cref="System.Windows.Forms.DragEventArgs"/> instance containing the event data.</param>
  6. private void Textbox1_DragEnter(object sender, DragEventArgs e)
  7. {
  8. if (e.Data.GetDataPresent(DataFormats.FileDrop) && ((IEnumerable<string>)e.Data.GetData(DataFormats.FileDrop)).All((string path) => IO.File.GetAttributes(path).HasFlag(IO.FileAttributes.Archive))) {
  9.  
  10. e.Effect = DragDropEffects.All;
  11.  
  12. } else {
  13. e.Effect = DragDropEffects.None;
  14. }
  15. }
  16.  
  17. /// <summary>
  18. /// Handles the DragDrop event of the Textbox1 control.
  19. /// </summary>
  20. /// <param name="sender">The source of the event.</param>
  21. /// <param name="e">The <see cref="DragEventArgs"/> instance containing the event data.</param>
  22. private void Textbox1_DragDrop(object sender, DragEventArgs e)
  23. {
  24. if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
  25.  
  26. IEnumerable<string> paths = from path in (IEnumerable<string>)e.Data.GetData(DataFormats.FileDrop) orderby path ascending;
  27. this.TextBox1.Text = string.Join("; ", paths);
  28. }
  29. }
  30.  
  31. //=======================================================
  32. //Service provided by Telerik (www.telerik.com)
  33. //=======================================================

PD: No te rebajes a utilizar Batch pudiendo manejarte en un lenguaje de alto nivel.

Saludos
5674  Foros Generales / Dudas Generales / Re: ISO muy grande.... en: 9 Abril 2015, 03:31 am
Supongo que conoces DRP 15, pues esta ISO de marras es SamDriver15, son parecidas realizadas por diferentes fuentes pero con el mismo motor.

La DRP15 me cabe en un DVD de doble capa perfectamente, la Sam es practicamente lo mismo pero con base de datos mayor.

No, no tenía ni idea hasta ahora, ¿"DriverPack Solution 2015" y "SAM Drivers"?, considero los packs de drivers una basurilla (quizás erroneamente por que yo no lo necesito, por que no soy técnico de PC's),
pero si me dices que el contenido es eso, ¿has considerado eliminar algunos drivers que creas "innecesarios" para reducirle el peso a la ISO?, sería la solución más sencilla, extraer borrar y crear la iso, no se, podrías listar los drivers para identificar los drivers más pesados y hacer algo de "limpieza" con drivers que sean muy antiguos o muy pesados cómo he dicho.

Desconozco el sistema de archivos de esos packs, quiero decir que no se si estarán separados por categorias o todos super-comprimidos en un archivo, no lo se, pero en el primer caso y en caso de que no estuviesen comprimidos pues... podrías comprimirlos.

PD: Aunque parezca lo contrario, no me gusta mucho tener la última palabra en "conversaciones" xD. ya he hablado bastante, le dejo a otro que aporte otras posibles soluciones.

Saludos!
5675  Foros Generales / Dudas Generales / Re: ISO muy grande.... en: 9 Abril 2015, 02:49 am
Lo preguntaba por si habia alguna manera de meter los 9.82 en DVD de 8.5.....yá que yó logro meter peliculas de más de 5Gb en DVD de 4.7, con el programa ClonDVD2.

Claro, esa aplicación trabaja un formato específico de consumo muy analizado/conocido/explotado (DVD-Video) el cual es facil "partirlo".

Para juegos/software hay otro tipo de soluciones, para audio otras, etc...

Si no comentas el contenido de dicha ISO solo te puedo dar soluciones bastante genéricas cómo un split.

Con PowerISO parece que puedes grabar una ISO de cualquier tipo en múltiples volúmenes, no lo he probado, pero me parece que es un simple split: https://www.youtube.com/watch?v=9b626S1K9m0

Saludos!
5676  Programación / .NET (C#, VB.NET, ASP) / Re: Autoactualizar aplicacion en C# en: 9 Abril 2015, 02:18 am
1.- Clickonce (la verdad que despues de leer bastante concluí que esta destinado a otro tipo de aplicaciones

Para nada, ¿por qué dices eso?, ClickOnce sirve de la misma manera tanto para aplicacioens de escritorio cómo para aplicaciones web (para cachear e iniciar las aplicaciones hospedadas), yo diría que se utiliza más o menos bastante en la web por su flexibilidad en ese aspecto, solo que es una característica apenas conocida y usada de forma local ...supongo que al existir tantas otras opciones de instaladores es dificil ganarse terreno en ese sentido, pero ClickOnce es una opción de instalación totalmente viable que te sirve para realizar las actualizaciones de tu instalación local:

How to: Manage Updates for a ClickOnce Application

2.- https://autoupdaterdotnet.codeplex.com/ , Descargar el archivo en una carpeta temporal pero no lo reemplaza, por lo que nunca se actualiza.

EDITO:
AutoUpdate.Net lo probé en su dia y es un proyecto muy verde, en su sección de soporte en CodePlex les dejé algún comentario en plan "consejos" por que es una librería muy mediocre.

Yo antes utilizaba AutoUpdate+ y siempre me fue bien, héchale un ojo: http://autoupdateplus.com/Download.html

Ten en cuenta que siempre puedes hacerlo de forma manual como te ha comentado KuBox (o con ClickOnce también).

Saludos!
5677  Foros Generales / Dudas Generales / Re: ISO muy grande.... en: 9 Abril 2015, 01:40 am
Si solo quieres almacenar el archivo por seguridad entonces puedes usar cualquier file-splitter o compresor multi archivo cómo WinRAR.

En cambio, si quieres quemar la ISO para poderla instalar desde 2 DVDS lo tienes un poco más complicado...

Puedes utilizar la aplicación UltraISO para comprimir la ISO a formato ISZ y si con suerte la imagen ISZ comprimida te cabe en un DVD entonces grabas ese archivo comprimido al DVD (no quemas la imagen) y luego, con Daemon Tools puedes montar la imagen ISZ y correrla. En resumen, grabar una imagen comprimida y luego montarla.

Otra opción y suponiendo que la ISO contenga algún tipo de software o datos que se expandan al PC, sería extraer todo el contenido de la ISO para crear tu propio installer que inicie el "setup.exe" original (el "setup.exe" del DVD, pero desde el "setup.exe" de tu installer personalizao) y partir tu "setup" en unidades de tamaño que quepan en 2 DVD (2 GB sería lo máximo recomendado por cada archivo). Espero que se haya entendido bien.

Saludos
5678  Foros Generales / Foro Libre / Re: NASA afirma que en 10 años tendrá indicios de vida alienígena en: 9 Abril 2015, 01:23 am
Esto viendo queriendo decir que la NASA va a seguir con el cuento de ocultar información un par de décadas más, y cuando ya en el 2030 todo el mundo se haya olvidado de esta afirmación del 2015 pues volverán a "predecir" lo mismo para que el tiempo pase y pase y sigan tomándonos por tontos.
Ellos conocen de sobra la existencia de vida alienígena, quiero decir los jefes y empleados más privilegiados de NASA, no todos, claro está.



Estamos con lo de siempre...

"LA NASA AFIRMA..."... y yo me busco una frase de la entrevista, y me encuentro con esto:

No hay páginas serias... Bueno, podría seguir, pero me he prometido a mi mismo intentar perder el menor tiempo posible con estas cosas  :silbar:

Normal, si buscas en castellano que esperas encontrar?. ahora has demostrado que siempre descalificas a las fuentes de El_Andaluz de mentirosas/mala reputación solo por que no sabes buscar debidamente otras fuentes compi.

Aparte de la url yankee que ya han compartido, esta también me parece una página seria:
http://www.space.com/29041-alien-life-evidence-by-2025-nasa.html

Saludos
5679  Programación / Python / Re: [PYTHON] Saber si un elemento esta en una matriz en: 8 Abril 2015, 19:59 pm
¿Pero como hacerlo 'fácil' si hemos de hacer la comprobación en una matriz?

Código
  1. num = 4
  2. matriz = [[1,2,3],[4,5,6],[7,8,9]]
  3. num in lista

Para determinar si un valor se encuentra en el interior de ese array dimensional hay varias maneras de hacerlo, una manera simple sería utilizando la función any:

Código
  1. value = 4
  2. arr2D = [
  3.           [1, 2, 3],
  4.           [4, 5, 6],
  5.           [7, 8, 9]
  6.        ]
  7.  
  8. print any(value in arr for arr in arr2D)

https://docs.python.org/2/library/functions.html#any

Saludos
5680  Programación / Programación General / Re: ¿Hay alguna funcion para evitar que un archivo se cierre? en: 8 Abril 2015, 18:16 pm
Buenas

¿hay alguna funciona para que no se pueda finalizar un proceso?

No, no es posible, por motivos obvios de seguridad un proceso no puede evitar su terminación incondicional, pero al menos puedes controlar el cierre voluntario por parte del usuario.

Aplicaciones cómo por ejemplo el Administrador de tareas (taskmgr) llaman a la función TerminateProcess para matar incondicionalmente un proceso, repito, incondicionalmente:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686714.aspx?f=255&MSPPError=-2147217396

Dicha función no "pregunta" al proceso si puede ser cerrado y no necesita el permiso del proceso para cerrarlo, por algo puedes matar procesos que no estén respondiendo.



He estado invesigando pero no se si es correcto:

Código:
e.CloseReason = CloseReason.TaskManagerClosing

La propiedad e.CloseReason que has mostrado se usa en la plataforma .Net, ¿debemos suponer que estás intentando hacerlo en VB.Net o C#?, especifica que lenguaje utilizas al menos.

CloseReason.TaskManagerClosing es simplemente un valor de una enumeración para determinar el motivo del cierre, nada más:
https://msdn.microsoft.com/en-us/library/system.windows.forms.closereason.aspx?f=255&MSPPError=-2147217396

La ventana recibe el mensaje de windows WM_CLOSE (0x10) para solictar la terminación de la aplicación:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms632617%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

Te muestro un ejemplo escrito en Vb.Net de cómo puedes interceptar el mensaje recibido y cancelarlo:

Código
  1.    ''' <summary>
  2.    ''' Specifies A Windows Message Identifier.
  3.    ''' </summary>
  4.    Public Enum WindowsMessages As Integer
  5.  
  6.        WM_CLOSE = &H10
  7.  
  8.    End Enum
  9.  
  10.    ''' <summary>
  11.    ''' Invokes the default window procedure associated with this window to process messages.
  12.    ''' </summary>
  13.    ''' <param name="m">
  14.    ''' A <see cref="T:System.Windows.Forms.Message"/> that is associated with the current Windows message.
  15.    ''' </param>
  16.    Protected Overrides Sub WndProc(ByRef m As Message)
  17.  
  18.        If m.Msg = WindowsMessages.WM_CLOSE Then
  19.           ' Do Nothing
  20.        Else
  21.            MyBase.WndProc(m)
  22.  
  23.        End If
  24.  
  25.    End Sub

Pero eso solo sirve cuando "el usuario cierra la aplicación",
el evento de cierre no se puede cancelar una vez que la terminación incondicional del proceso ha sido enviada,
puedes comprobarlo tu mismo con el código de arriba y también con el siguiente código, verás que el código del interior del bloque de la condicional jamás se llegará a procesar (ni el evento a cancelar, claro está) si matas la aplicación desde el administrador de tareas puesto que la ejecución termina de forma inminente:

Código
  1.    ''' <summary>
  2.    ''' Handles the FormClosing event of the Form1 control.
  3.    ''' </summary>
  4.    ''' <param name="sender">The source of the event.</param>
  5.    ''' <param name="e">The <see cref="FormClosingEventArgs"/> instance containing the event data.</param>
  6.    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
  7.    Handles Me.FormClosing
  8.  
  9.        If e.CloseReason <> CloseReason.UserClosing Then
  10.            e.Cancel = True
  11.            IO.File.Create("C:\Test.txt").Dispose()
  12.        End If
  13.  
  14.    End Sub



Si alguien me explica estaría muy agradecido.

Hay dos soluciones viables:

· Mantener dos procesos distintos en ejecución, el segundo proceso podría ser un servicio de windows que monitorizase el estado del primer proceso para detectar el cierre y volver a ejecutar una nueva instancia del proceso después de haber sido cerrado. Obviamente esto no evita que ambos procesos puedan ser matados incondicionalmente.

· Hookear la API TerminateProcess y opcionalmente ExitProcess para interceptar las llamadas a dicha función, y cancelarlas. Aparte de estar controlando adicionalmente el cierre voluntario en tu aplicación.

Te muestro un ejemplo de API hooking escrito en VB.Net, utilizo la librería Deviare (también puedes utilizar Microsoft Detours en C++), el hook se adjunta al proceso activo taskmgr.exe para evitar que éste pueda terminar ningún proceso, interceptando las llamadas que dicho proceso hace a la función TerminateProcess para cancelarlo (en la pre-llamada):

Código
  1. Imports Nektra.Deviare2
  2.  
  3. Public NotInheritable Class Form1
  4.  
  5.    Public WithEvents SpyMgr As NktSpyMgr
  6.    Public Hook As NktHook
  7.  
  8.    ' TerminateProcess API reference:
  9.    ' https://msdn.microsoft.com/es-es/library/windows/desktop/ms686714%28v=vs.85%29.aspx
  10.    ReadOnly libName As String = "kernel32.dll"
  11.    ReadOnly funcName As String = "TerminateProcess"
  12.    ReadOnly hookFlags As eNktHookFlags = eNktHookFlags.flgOnlyPreCall ' Or eNktHookFlags.flgAutoHookChildProcess
  13.  
  14.    ' Processes to attach the hook.
  15.    ReadOnly processesToAttach As IEnumerable(Of Process) =
  16.        Process.GetProcessesByName("taskmgr")
  17.  
  18.    Private Sub Test() Handles MyBase.Load
  19.  
  20.        If Me.processesToAttach.Count = 0 Then
  21.            MsgBox("No se encontró ningún proceso al que adjuntar.")
  22.  
  23.        Else
  24.            Me.SpyMgr = New NktSpyMgr()
  25.            Me.SpyMgr.Initialize()
  26.  
  27.            Me.Hook = SpyMgr.CreateHook(String.Format("{0}!{1}", libName, funcName), hookFlags)
  28.            Me.Hook.Hook(sync:=True)
  29.  
  30.            For Each proc As Process In processesToAttach
  31.                Debug.WriteLine("Attaching to: " & proc.ProcessName)
  32.                Me.Hook.Attach(procOrId:=proc.Id, sync:=True)
  33.            Next proc
  34.  
  35.        End If
  36.  
  37.    End Sub
  38.  
  39.    <MTAThread>
  40.    Private Sub OnTerminateProcess_Called(ByVal hook As NktHook,
  41.                                          ByVal proc As NktProcess,
  42.                                          ByVal callInfo As NktHookCallInfo) Handles SpyMgr.OnFunctionCalled
  43.  
  44.        ' Signature params.
  45.        Dim hProcessParam As NktParam = DirectCast(callInfo.Params(0), NktParam)
  46.        Dim uExitCodeParam As NktParam = DirectCast(callInfo.Params(1), NktParam)
  47.  
  48.        Dim hProcessValue As IntPtr = New IntPtr(CInt(hProcessParam.Value))
  49.        Dim uExitCodeValue As UInteger = CUInt(uExitCodeParam.Value)
  50.  
  51.        Trace.WriteLine(String.Format("hProcess : '{0}'", hProcessValue))
  52.        Trace.WriteLine(String.Format("uExitCode: '{0}'", uExitCodeValue))
  53.  
  54.        If callInfo.IsPreCall Then ' Skip precall. Avoid process termination.
  55.            callInfo.Result.Value = 1
  56.            callInfo.SkipCall()
  57.        End If
  58.  
  59.    End Sub
  60.  
  61. End Class

PD: El primer parámetro de TerminateProcess especifica el handle del proceso que se va a matar, con eso puedes determinar que proceso es, pero lee bien la documentación de MSDN que te he dejado arriba por que me parece que es más complicado que una simple verificación de handles... quizás puedas necesitar la siguiente enumeración para la verificación:

Código
  1.    Public Enum ProcessAccessFlags As UInteger
  2.        All = &H1F0FFF
  3.        Terminate = &H1
  4.        CreateThread = &H2
  5.        VirtualMemoryOperation = &H8
  6.        VirtualMemoryRead = &H10
  7.        VirtualMemoryWrite = &H20
  8.        DuplicateHandle = &H40
  9.        CreateProcess = &H80
  10.        SetQuota = &H100
  11.        SetInformation = &H200
  12.        QueryInformation = &H400
  13.        QueryLimitedInformation = &H1000
  14.        Synchronize = &H100000
  15.    End Enum

Saludos
Páginas: 1 ... 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 [568] 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 ... 1254
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines