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 Temas
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11
91  Sistemas Operativos / Windows / Documento de texto enriquecido no está disponible en el menú Nuevo en: 16 Marzo 2017, 20:56 pm
que tal, tengo Windows 7 64 bits y no tengo disponible en el menú Nuevo del menú contextual del Escritorio el "Documento de texto enriquecido"

Buscando en Google, he encontrado que modificando el registro en HKEY_CLASSES_ROOT, elijo cualquier extensión de archivo. Si no tiene la clave [ShellNew] la creo,  y en esta clave añado un valor de cadena con nombre "NullFile", el tipo de archivo elegido aparecerá en el menú Nuevo.

Sin embargo, y atención a esto, desde otro ordenador también con Windows 7 que SI dispone del Documento de texto enriquecido (RTF) en el menú nuevo, no aparece tal valor "NullFile". Así que no creo que el que no tenga dicho valor sea la razón de que no me aparezca en el menú del otro ordenador.

¿Alguien sabe porqué y como puedo añadirlo?




El "NullFile" está en la extensión .bmp y sin embargo no aparece en el menú.

Creo recordar que había un cuadro en no se donde donde se podía elegir los elementos de este menú, pero quizás me equivoque.


Gracias
92  Programación / .NET (C#, VB.NET, ASP) / obtener celdas seleccionadas (DataGridView) en: 14 Marzo 2017, 09:37 am
que tal, necesito obtener las celdas seleccionadas al hacer click de un DataGridView.

He probado con este código pero sólo me devuelve la celda donde hice clic.
Código
  1.   Dim celda As New List(Of String)
  2.        For Each cell As DataGridViewCell In Me.DataGridView1.SelectedCells
  3.            celda.Add(CStr(cell.ColumnIndex & "," & cell.RowIndex))
  4.        Next
  5.        MessageBox.Show(String.Join("; ", celda))
  6.  

la idea es que al seleccionar un grupo de celdas al hacer clic, introducir una serie de valores automáticos en dichas celdas, pero necesito saber cuales están seleccionadas para introducirles el valor.

Ademas DataGridView1.SelectedCells.Count sólo me devuelve el valor 1 al hacer clic en el evetno DataGridView1_CellMouseClick, aunque haya más de una celda seleccionada.

gracias



Bueno, parece que solo funciona desde un evento distinto de CLICK, puedo obtener las celdas seleccionadas desde otros eventos como MOUSEUP o MOUSEDOWN.

Al parecer al hacer click sobre una celda del grupo de celdas seleccionadas, se deseleccionan todas las celdas y queda solamente 1 celda seleccionada, entonces siempre devuelve 1.

 También devolvería todas las celdas desde un botón, por ejemplo:

How to: Get the Selected Cells, Rows, and Columns in the Windows Forms DataGridView Control




93  Programación / .NET (C#, VB.NET, ASP) / Conectar con gmail desde NET en: 18 Febrero 2017, 16:56 pm
hola

Estoy intentado conectar con mi cuenta de correo GMAIL desde Net pero no hay manera.

Consiguo conectar pero el acceso es bloqueado y recibo un mensaje en el correo gmail notificando intentos de inicio de sesión bloquados.

El código que he usado es el siguiente:


Código
  1. Imports Limilabs.Client.IMAP
  2.  
  3. Module Module1
  4.  
  5.    Private Const _server As String = "imap.gmail.com"
  6.    Private Const _user As String = "USER"
  7.    Private Const _password As String = "PASSWORD"
  8.  
  9.    Sub Main()
  10.        Using imap As New Imap
  11.  
  12.            imap.ConnectSSL(_server, 993)
  13.  
  14.            ' imap.Connect(_server)                           ' Use overloads or ConnectSSL if you need to specify different port or SSL.
  15.  
  16.            imap.Login(_user, _password)                    ' You can also use: LoginPLAIN, LoginCRAM, LoginDIGEST, LoginOAUTH methods,
  17.            ' or use UseBestLogin method if you want Mail.dll to choose for you.
  18.  
  19.            Dim folders As List(Of FolderInfo) = imap.GetFolders()      ' List all folders on the IMAP server
  20.  
  21.            Console.WriteLine("Folders on IMAP server: ")
  22.            For Each folder As FolderInfo In folders
  23.  
  24.                Dim status As FolderStatus = imap.Examine(folder.Name)  ' Examine each folder for number of total and recent messages.
  25.  
  26.                Console.WriteLine(String.Format("{0}, Recent: {1}, Total: {2}", _
  27.                    folder.Name, _
  28.                    status.MessageCount, _
  29.                    status.Recent))                                     ' Display folder information                
  30.            Next
  31.  
  32.            ' You can also Create, Rename and Delete folders:
  33.            imap.CreateFolder("Temporary")
  34.            imap.RenameFolder("Temporary", "Temp")
  35.            imap.DeleteFolder("Temp")
  36.  
  37.            imap.Close()
  38.        End Using
  39.          Console.ReadLine()
  40.    End Sub
  41.  
  42. End Module


Desde mi cuenta gmail he habilitado el acceso IMAP. Y la configuración que gmail te recomienda para correo entrante es la siguiente:

Código:
Servidor de correo entrante (IMAP)	

imap.gmail.com
Requiere SSL: Sí
Puerto: 993

Ver: Leer mensajes de Gmail desde otros clientes de correo mediante IMAP

He usado la librería Mail.dll. Para más información entrar aquí:

Download emails using POP3 in .NET

y para descarga de la librería y ejemplos de uso aquí:
Mail.dll - .NET email component (IMAP, POP3, S/MIME)


NOTA: Desde Windows Live ocurre exáctamente igual.

Gracias



Lo he testado desde una cuenta hotmail y  funciona. Hay que cambiar el servidor  IMAP por "imap-mail.outlook.com"



Volví a intentarlo usando POP3 Pero recibo el siguiente mensaje de error

Código:
[AUTH] Web login required: https://support.google.com/mail/answer/78754
94  Informática / Tutoriales - Documentación / Reparar Micro SD dañada (desde windows) en: 12 Febrero 2017, 06:30 am
hola

Hace unos días windows no detectaba mi tarjeta Micro-SD.



Al hacer clic en la unidad aparecía un mensaje de windows ofrenciendo formatear. Por supuesto le di a 'Cancelar'.




Pensando que el comando CHKDSK en consola no serviría al ser ilegible, busco en Google -Reparar micro SD-. Los resultados me llevan a páginas donde se ofrece usar programas.

Tras bajarme uno de ellos veo que no repara el SD si no que se limita a rastrear el contenido y crear una lista de archivos recuperables y sin la jerarquía de carpetas. Así que lo cierro y lo dejo estar.

Decidí probar  el comando CHKDSK en modo reparación y recuperé el SD. Con todos las carpetas y archivos.


COMO REPARAR UNA MICRO-SD DESDE WINDOWS
Sin necesidad de usar programas externos, ni descargar nada.
 
- Pulsa el botón INICIO de Windows

- Escribe 'cmd.exe' y cuando lo veas en la lista dale con el botón derecho y ejecútalo como Administrador

- En la ventana negra que se abre (la consola), escribe:


Código:
CHKDSK LETRAUNIDAD: /F

Por ejemplo, si tu MICRO-SD está en la unidad H: pones:

Código:
CHKDSK H:  /F

y luego pulsa ENTER.




Inmediatamente  chkdsk.exe, una aplicación de windows que se encuentra en  system32,  comenzará a comprobar la unidad y reparar los errores que contenga. Una vez acabe, la unidad ya será accesible.



En el caso que hayan archivos dañados y se quiera recuperar información , puedes usar /R. Ocurre cuando no puedes abrir una carpeta que debería ser accesible o no se encuentran archivos que deberían estar en determinado directorio. Windows no pudo registrar debidamente los últimos archivos creados, debido a una detención de la escritura repentina.


Código:
CHKDSK H: /R

/R Encuentra los sectores dañados y recupera la información legible.(implica /F)

Este proceso es más lento.


El uso de de CHKDSK ya lo conocía, es super conocido, pero no pensé que pudiera reparar un SD ilegible, pero así ha sido y por este motivo lo comparto aquí, para todo aquel que le ocurra lo mismo y quiera recuperar su SD dañado.

Si usas este proceso de reparación con unidades de disco o particiones en uso como C:/ seguramente recibirás un mensaje invitándote a realizar la comprobación la próxima vez que se inicie el sistema. Esto es que cuando reinicies y  antes de que se inicie sesión de Windows, CHKDSK hará la comprobación de la unidad.



RECOMENDACIONES
Para evitar errores en el futuro, recomiendo expulsar los pendrives, discos externos USB y tarjeta SD de forma segura. Puedes hacerlo simplmente pulsando sobre el icono en forma de USB que hay en área de notificación de windows (al lado del reloj), y seleccionar la unidad a extraer de forma segura
 








Ocurre que si windows está escribiendo en la unidad si lo sacas de golpe antes de que se modifique el registro de archivos, se corrompe y luego puede ocurrir que el disco, pendrive, o tarjeta SD sea inaccesible o bien que alguna carpeta que contenga no sea accesible a causa de un error en la escritura del registro de archivos de la unidad. En caso de poder acceder al disco pero que una carpeta que creamos y que debería contener x archivos no se accesible por un error, para recuperar los archivos que ésta contenía usa el comando CHKDSK y aplica el comando /R.


Si se da el caso que no puede expulsar la unidad de forma segura porque algún proceso la está usando, cierra los programas que pueda estar accediendo a algún archivo en la  unidad. Si aún así sigues sin poder extraer de forma segura, seguramnte sea el mismo Explorer.exe. En tal caso puedes cerrarlo y volverlo a abrir:
 

Ejecuta la consola (CMD.EXE) desde inicio o Run (Tecla Windows + R) y escribre lo siguiente:

Código:
TASKKILL /F /IM Explorer.exe
(para cerrar explorer.exe)

Código:
START Explorer.exe
(para abrir explorer.exe de nuevo)

También puedes ejecutar taskmgr.exe o bien pulsar [CTRL+ ALT+ SUPR] y selecciona Iniciar Administrador de Tareas. Desde ahí puedes cerrar Explorer y luego abrir nuevamente Explorer.exe desde el menú Abrir/Nueva tarea(Ejecutar...).

Luego vuelve a intentar expulsar la unidad de forma segura.



· No se debe escribir en mayúsculas
>aquí las reglas del foro
-Engel Lex
95  Programación / Desarrollo Web / Donde se encuentras las referencias de creación o descarga de cookies en: 23 Enero 2017, 22:18 pm
hola buenas

Tengo un código simple HTML de una página web. El cual al abrirlo con el navegador, éste crea cookies.

Con seguridad no son scripts los que los crea pues he eliminado todas las direcciones a archivos javascript. Dicho esto no se como lo hace a no ser que si es mediante javascript, se descargue desde una url href.

Lo que necesito es algún truco o algo que me permita averiguar que debo eliminar del código HTML para que no genere cookies.


(Se que se pueden bloquear desde el navegador pero no es lo que me interesa)

Gracias
96  Foros Generales / Sugerencias y dudas sobre el Foro / ¿el-hacker.org? en: 13 Diciembre 2016, 12:42 pm
Buscando en google, me ha aparecido un enlace con el nombre 'el-hacker.org/', al darle el servicio de DNS me ha bloqueado la entrada. Además el antivirus me lo valora como [?] (El antivirus desconoce el contenido de la página, todavía no ha sido evaluada)

El enlace principal es este:

elhacker.INFO - Hackear


la cosa es que en la parte inferior ponía parte de texto de un hilo de elhacker.net.  Este
https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwimorDGjPHQAhWGuxQKHcIiAZ4QFggvMAI&url=http://serokool.el-hacker.org/&usg=AFQjCNGpn6PNx1VhOdfdYSLRzuyMhS-01Q&bvm=bv.141320020,d.d24

Que debería ser este:

Lista simple -- Error

o este otro, ya que muestra el título de uno  y el título de este otro hilo
https://foro.elhacker.net/foro_libre/estaria_interesante_crear_un_programita_con_el_algoritmo_de_cada_especie_animal-t460050.0.html;msg2096713

Lo explico mejor por si no se entiende.

Google muestra... elhacker.INFO - Hackear debajo de este enlace pones fragmentos de texto que hace referencia a varios hilos de elhacker.net.

Tal como así:

Citar
elhacker.INFO - Hackear
juce.el-hacker.org/
Cómo crear una versión portátil de Windows 10 en un disco duro USB para . .... Estaría interesante crear un programita con el algoritmo de cada especie animal ...

97  Sistemas Operativos / Windows / Los editores de 64 bits se atascan en: 13 Diciembre 2016, 11:43 am
hola
tengo windows7 de 64bits y los editores de 64bits se atascan de vez en cuando al escribir durante un segundo. Me pasa también con Photoshop de 64bits.

No se que puede ser. No es el OS porque tengo el mismo en otro ordenador y va bien. No se si será alguna configuración del bios.

gracias por la ayuda
98  Sistemas Operativos / Windows / Notepad se atasca al escribir en: 21 Noviembre 2016, 10:30 am
hola, tengo este problema con el Notepad, cuando escribo se atasca durante un par de segundo de vez en cuando.

Voy escribiendo y  de pronto aunque pulse las teclas no escribe durante  un par de segundos. Luego funciona de nuevo correctamente y tras escribir o dejar de escribir un rato al escribir de nuevo vuelve a bloquearse ese par de segundos.

Solo me pasa con el Notepad. Es raro, nunca me ha pasado con ningún sistema.

Estoy usando W764bits.

gracias
99  Foros Generales / Dudas Generales / Vender por Internet como particular. Necesito consejos. en: 16 Noviembre 2016, 15:02 pm
hola

Voy a vender por Internet  como particular poniendo un anuncio. Es un objeto caro. En principio me gustaría entregar en mano en mi ciudad, porque dudo de enviar por correo no vayan a romperlo y luego devolverlo diciendo que estaba roto.

Mi duda es si lo envío por correo, puedan hacer eso, ¿Qué me aconsejan?. No se si se puede poner -no se admiten devoluciones- o algo así.

Nunca he vendido nada y no conozco los pasos a seguir para evitar problemas de cualquier tipo. ¿Si entrego en mano debo hacer un firmar un papel de conformidad o algo así ? No se.

Es que está en perfectas condiciones y no quiero que luego me vengan con pegas y me lo devuelvan roto. Más que nada es eso.

gracias








100  Programación / .NET (C#, VB.NET, ASP) / Duda con PictureBox y Saturación de Color en: 16 Septiembre 2016, 16:45 pm
Buenas amigos,  estoy intentando saturar una imagen y lo he conseguido pero el programa tarda mucho en procesar los cambios. Estoy orgulloso de lo que he conseguido porque no ha sido fácil averiguarlo, pero no va bien. He usado los miembro ColorMatrix y SetColorMatrix y he conseguido crear una matriz que realiza la saturación de una imagen, pero al usar un TrackBar el proceso de los cambios es demasiado lento.

Código:
     S = (TrackBar1.Value) + 100

        Dim Rojo As Single = CSng(299 * (100 - S) / 100000)
        Dim Verde As Single = CSng(587 * (100 - S) / 100000)
        Dim Azul As Single = CSng(114 * (100 - S) / 100000)

        S = CSng(S / 100)
        Dim colorMatrixVal As Single()() = {
        New Single() {Rojo + S, Rojo, Rojo, 0, 0}, _
        New Single() {Verde, Verde + S, Verde, 0, 0}, _
        New Single() {Azul, Azul, Azul + S, 0, 0}, _
        New Single() {0, 0, 0, 1, 0}, _
        New Single() {0, 0, 0, 0, 1}}


Este lo he hecho como ejemplo para ponerlo aquí:
Código
  1. Imports System.IO
  2. Imports System.Drawing.Imaging
  3.  
  4.  
  5.  
  6. Public Class Form1
  7.    Private originalBitmap As Bitmap = Nothing
  8.    Private previewBitmap As Bitmap = Nothing
  9.    Private resultBitmap As Bitmap = Nothing
  10.    Dim PictureBox1 As New PictureBox With {.Location = New Point(10, 10),
  11.                                            .Size = New Size(400, 240),
  12.                                            .SizeMode = PictureBoxSizeMode.StretchImage,
  13.                                            .BackColor = Color.DarkGray}
  14.    Dim Button1 As New Button With {.Location = New Point(PictureBox1.Width + 20, 10), .Text = "Cargar"}
  15.    Dim Button2 As New Button With {.Location = New Point(PictureBox1.Width + 20, 40), .Text = "Guardar"}
  16.    Dim TrackBar1 As New TrackBar With {.Location = New Point(10, PictureBox1.Height + 20),
  17.                                        .AutoSize = True,
  18.                                        .Size = New Size(PictureBox1.Width, 10),
  19.                                        .TickStyle = TickStyle.TopLeft,
  20.                                        .BackColor = Color.DarkGray,
  21.                                        .TickFrequency = 50,
  22.                                        .Maximum = 100,
  23.                                        .Minimum = -100,
  24.                                        .Value = 0,
  25.                                        .Orientation = Orientation.Horizontal}
  26.    Dim Label1 As New Label With {.Location = New Point(TrackBar1.Width + 20, TrackBar1.Top + 10),
  27.                                  .AutoSize = True,
  28.                                  .Text = "0",
  29.                                 .Font = New Font("Arial", 20, FontStyle.Bold)}
  30.  
  31.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  32.        Me.Controls.Add(PictureBox1)
  33.        Me.Controls.Add(Button1)
  34.        Me.Controls.Add(Button2)
  35.        Me.Controls.Add(TrackBar1)
  36.        Me.Controls.Add(Label1)
  37.  
  38.        Label1.BringToFront()
  39.        Me.Size = New Size(520, 400)
  40.  
  41.        AddHandler TrackBar1.ValueChanged, AddressOf TrackBar1_ValueChanged
  42.        AddHandler Button1.Click, AddressOf Button1_Click
  43.        AddHandler Button2.Click, AddressOf Button2_Click
  44.    End Sub
  45.  
  46.    Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs)
  47.  
  48.        Label1.Text = TrackBar1.Value.ToString()
  49.        AplicarSaturacion(True)
  50.    End Sub
  51.  
  52.  
  53.    Private Sub Button1_Click(sender As Object, e As EventArgs)
  54.        Dim ofd As New OpenFileDialog()
  55.        ofd.Title = "Abrir imagen"
  56.        ofd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png"
  57.        ofd.Filter += "|Bitmap Images(*.bmp)|*.bmp"
  58.  
  59.        If ofd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  60.            Dim streamReader As New StreamReader(ofd.FileName)
  61.            originalBitmap = DirectCast(Bitmap.FromStream(streamReader.BaseStream), Bitmap)
  62.            streamReader.Close()
  63.            previewBitmap = Image.FromFile(ofd.FileName)
  64.            PictureBox1.Image = previewBitmap
  65.  
  66.            AplicarSaturacion(True)
  67.        End If
  68.    End Sub
  69.  
  70.    Private Sub Button2_Click(sender As Object, e As EventArgs)
  71.        AplicarSaturacion(False)
  72.  
  73.  
  74.        If resultBitmap IsNot Nothing Then
  75.            Dim sfd As New SaveFileDialog()
  76.            sfd.Title = "Guardar imagen"
  77.            sfd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png"
  78.            sfd.Filter += "|Bitmap Images(*.bmp)|*.bmp"
  79.  
  80.            If sfd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  81.                Dim fileExtension As String = Path.GetExtension(sfd.FileName).ToUpper()
  82.                Dim imgFormat As ImageFormat = ImageFormat.Png
  83.  
  84.                If fileExtension = "BMP" Then
  85.                    imgFormat = ImageFormat.Bmp
  86.                ElseIf fileExtension = "JPG" Then
  87.                    imgFormat = ImageFormat.Jpeg
  88.                End If
  89.  
  90.                Dim streamWriter As New StreamWriter(sfd.FileName, False)
  91.                resultBitmap.Save(streamWriter.BaseStream, imgFormat)
  92.                streamWriter.Flush()
  93.                streamWriter.Close()
  94.  
  95.                resultBitmap = Nothing
  96.            End If
  97.        End If
  98.    End Sub
  99.    Public Sub AplicarSaturacion(Byval  preview As Boolean)
  100.        If previewBitmap Is Nothing Then
  101.            Return
  102.        End If
  103.        Dim Imagen As Image = previewBitmap
  104.        Dim Pic As PictureBox = PictureBox1
  105.        Dim Grafico As Graphics
  106.        Dim Rectangulo As Rectangle
  107.        Pic.Image = New Bitmap(Pic.Width, Pic.Height, PixelFormat.Format32bppArgb)
  108.        Grafico = Graphics.FromImage(Pic.Image)
  109.        Rectangulo = New Rectangle(0, 0, Pic.Width, Pic.Height)
  110.        Grafico.DrawImage(Imagen, Rectangulo)
  111.        Dim S As Single
  112.  
  113.        S = (TrackBar1.Value) + 100
  114.  
  115.        Dim Rojo As Single = CSng(299 * (100 - S) / 100000)
  116.        Dim Verde As Single = CSng(587 * (100 - S) / 100000)
  117.        Dim Azul As Single = CSng(114 * (100 - S) / 100000)
  118.  
  119.        S = CSng(S / 100)
  120.        Dim colorMatrixVal As Single()() = {
  121.        New Single() {Rojo + S, Rojo, Rojo, 0, 0}, _
  122.        New Single() {Verde, Verde + S, Verde, 0, 0}, _
  123.        New Single() {Azul, Azul, Azul + S, 0, 0}, _
  124.        New Single() {0, 0, 0, 1, 0}, _
  125.        New Single() {0, 0, 0, 0, 1}}
  126.  
  127.        Dim colorMatrix As New ColorMatrix(colorMatrixVal)
  128.        Dim ImagenAtributos As New ImageAttributes
  129.  
  130.        ImagenAtributos.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap)
  131.        Grafico.DrawImage(Imagen, Rectangulo, 0, 0, Imagen.Width, Imagen.Height, GraphicsUnit.Pixel, ImagenAtributos)
  132.        Pic.Refresh()
  133.        resultBitmap = Pic.Image
  134.    End Sub
  135. End Class
  136.  

Va bien  pero al deslizar el TrackBar se producen trompicones al moverlo.


He conseguido convertir por mi cuenta un código de VB viejo a NET que usa API. Que no sé, seré el único que lo he hecho porque puse en google -SetColorAdjustment VB.NET-  y ni rastro, las declaraciones que encontraba eran como en VB6.

Conseguí crear un código basado en API con SetColorAdjustment y GetColorAdjustment , y funciona bien. Los cambios son suaves pero tiene un problema y es que no puedo guardar los cambios y no consigo refrescar el PictureBox correctamente.

Este es el código:
Código
  1. Imports System.IO
  2. Imports System.Drawing.Imaging
  3. Imports System.Runtime.InteropServices
  4. Imports WindowsApplication1.NativeMethods
  5.  
  6.  
  7.  
  8. Public Class Form1
  9.    Private originalBitmap As Bitmap = Nothing
  10.    Private previewBitmap As Bitmap = Nothing
  11.    Private resultBitmap As Bitmap = Nothing
  12.    Dim picLoad As Boolean
  13.    Dim PictureBox1 As New PictureBox With {.Location = New Point(10, 10),
  14.                                            .Size = New Size(400, 240),
  15.                                            .SizeMode = PictureBoxSizeMode.StretchImage,
  16.                                            .BackColor = Color.DarkGray}
  17.    Dim Button1 As New Button With {.Location = New Point(PictureBox1.Width + 20, 10), .Text = "Cargar"}
  18.    Dim Button2 As New Button With {.Location = New Point(PictureBox1.Width + 20, 40), .Text = "Guardar"}
  19.    Dim TrackBar1 As New TrackBar With {.Location = New Point(10, PictureBox1.Height + 20),
  20.                                        .AutoSize = True,
  21.                                        .Size = New Size(PictureBox1.Width, 10),
  22.                                        .TickStyle = TickStyle.TopLeft,
  23.                                        .BackColor = Color.DarkGray,
  24.                                        .TickFrequency = 50,
  25.                                        .Maximum = 100,
  26.                                        .Minimum = -100,
  27.                                        .Value = 0,
  28.                                        .Orientation = Orientation.Horizontal}
  29.    Dim Label1 As New Label With {.Location = New Point(TrackBar1.Width + 20, TrackBar1.Top + 10),
  30.                                  .AutoSize = True,
  31.                                  .Text = "0",
  32.                                 .Font = New Font("Arial", 20, FontStyle.Bold)}
  33.  
  34.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
  35.        Me.Controls.Add(PictureBox1)
  36.        Me.Controls.Add(Button1)
  37.        Me.Controls.Add(Button2)
  38.        Me.Controls.Add(TrackBar1)
  39.        Me.Controls.Add(Label1)
  40.  
  41.        Label1.BringToFront()
  42.        Me.Size = New Size(520, 400)
  43.  
  44.        AddHandler TrackBar1.ValueChanged, AddressOf TrackBar1_ValueChanged
  45.        AddHandler Button1.Click, AddressOf Button1_Click
  46.        AddHandler Button2.Click, AddressOf Button2_Click
  47.        AddHandler PictureBox1.Paint, AddressOf PictureBox1_Paint
  48.    End Sub
  49.    Public Sub PictureBox1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs)
  50.        If picLoad = True Then
  51.            AplicarSaturacion(True)
  52.        End If
  53.  
  54.    End Sub
  55.    Private Sub TrackBar1_ValueChanged(sender As Object, e As EventArgs)
  56.        Label1.Text = TrackBar1.Value.ToString()
  57.        PictureBox1.Refresh()
  58.        PictureBox1_Paint(1, Nothing)
  59.    End Sub
  60.  
  61.  
  62.    Private Sub Button1_Click(sender As Object, e As EventArgs)
  63.        Dim ofd As New OpenFileDialog()
  64.        ofd.Title = "Guardar imagen"
  65.        ofd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png"
  66.        ofd.Filter += "|Bitmap Images(*.bmp)|*.bmp"
  67.  
  68.        If ofd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  69.            Dim streamReader As New StreamReader(ofd.FileName)
  70.            originalBitmap = DirectCast(Bitmap.FromStream(streamReader.BaseStream), Bitmap)
  71.            streamReader.Close()
  72.            previewBitmap = Image.FromFile(ofd.FileName)
  73.            PictureBox1.Image = previewBitmap
  74.            picLoad = True
  75.            AplicarSaturacion(True)
  76.        End If
  77.    End Sub
  78.  
  79.    Private Sub Button2_Click(sender As Object, e As EventArgs)
  80.        AplicarSaturacion(False)
  81.  
  82.  
  83.        If resultBitmap IsNot Nothing Then
  84.            Dim sfd As New SaveFileDialog()
  85.            sfd.Title = "Abrir Imagen"
  86.            sfd.Filter = "Jpeg Images(*.jpg)|*.jpg|Png Images(*.png)|*.png"
  87.            sfd.Filter += "|Bitmap Images(*.bmp)|*.bmp"
  88.  
  89.            If sfd.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
  90.                Dim fileExtension As String = Path.GetExtension(sfd.FileName).ToUpper()
  91.                Dim imgFormat As ImageFormat = ImageFormat.Png
  92.  
  93.                If fileExtension = "BMP" Then
  94.                    imgFormat = ImageFormat.Bmp
  95.                ElseIf fileExtension = "JPG" Then
  96.                    imgFormat = ImageFormat.Jpeg
  97.                End If
  98.  
  99.                Dim streamWriter As New StreamWriter(sfd.FileName, False)
  100.                resultBitmap.Save(streamWriter.BaseStream, imgFormat)
  101.                streamWriter.Flush()
  102.                streamWriter.Close()
  103.  
  104.                resultBitmap = Nothing
  105.            End If
  106.        End If
  107.    End Sub
  108.    Public Sub AplicarSaturacion(ByVal preview As Boolean)
  109.  
  110.  
  111.        Dim ca As COLORADJUSTMENT
  112.        ca.caSize = CType(Marshal.SizeOf(ca), Short)
  113.        Dim HDcPic As IntPtr = CType(PictureBox1.CreateGraphics.GetHdc, IntPtr) 'GetDC(PictureBox1.Handle)
  114.  
  115.  
  116.        SetStretchBltMode(HDcPic, HALFTONE)
  117.        GetColorAdjustment(HDcPic, ca)
  118.        ca.caColorfulness = TrackBar1.Value
  119.        SetColorAdjustment(HDcPic, ca)
  120.  
  121.        StretchBlt(HDcPic, 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height, _
  122.        HDcPic, 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height, TernaryRasterOperations.SRCCOPY)
  123.  
  124.        resultBitmap = PictureBox1.Image
  125.  
  126.    End Sub
  127.  
  128.  


NativeMethods > GetColorAdjustment y SetColorAdjustment  para VB.NET

Código
  1. <Security.SuppressUnmanagedCodeSecurity>
  2. Friend Class NativeMethods
  3.    Inherits Attribute
  4.    Private Sub New()
  5.    End Sub
  6.    <DllImport("gdi32.dll")> _
  7.    Public Shared Function BitBlt(hObject As IntPtr,
  8.                                  nXDest As Integer,
  9.                                  nYDest As Integer,
  10.                                  nWidth As Integer,
  11.                                  nHeight As Integer,
  12.                                  hObjSource As IntPtr,
  13.                                  nXSrc As Integer,
  14.                                  nYSrc As Integer,
  15.                                  dwRop As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
  16.    End Function
  17.    <DllImport("gdi32.dll")>
  18.    Shared Function SetColorAdjustment(hdc As IntPtr,
  19.                                       <MarshalAs(UnmanagedType.Struct)>
  20.                                       ByRef lpca As COLORADJUSTMENT) As <MarshalAs(UnmanagedType.Bool)> Boolean
  21.    End Function
  22.  
  23.    <DllImport("gdi32.dll")>
  24.    Shared Function GetColorAdjustment(ByVal hdc As IntPtr,
  25.                                       <MarshalAs(UnmanagedType.Struct)>
  26.                                       ByRef lpca As COLORADJUSTMENT) As <MarshalAs(UnmanagedType.Bool)> Boolean
  27.    End Function
  28.  
  29.    <DllImport("user32.dll")>
  30.    Shared Function GetDC(ByVal hWnd As IntPtr) As IntPtr
  31.    End Function
  32.  
  33.    <DllImport("gdi32.dll")> _
  34.    Public Shared Function StretchBlt(hdc As IntPtr, _
  35.                                      x As Integer,
  36.                                     y As Integer,
  37.                                     nHeight As Integer,
  38.                                     hSrcDC As Integer,
  39.                                     hObjSource As IntPtr, _
  40.                                    xSrc As Integer,
  41.                                    ySrc As Integer,
  42.                                    nSrcWidth As Integer,
  43.                                    nSrcHeight As Integer,
  44.                                    dwRop As TernaryRasterOperations) As <MarshalAs(UnmanagedType.Bool)> Boolean
  45.    End Function
  46.  
  47.    <DllImport("gdi32.dll")> _
  48.    Public Shared Function SetStretchBltMode(ByVal hObject As IntPtr,
  49.                                             ByVal nStretchMode As Integer) As <MarshalAs(UnmanagedType.Bool)> Boolean
  50.    End Function
  51.  
  52.    <StructLayout(LayoutKind.Sequential)>
  53.    Public Structure COLORADJUSTMENT
  54.        Public caSize As Short
  55.        Public caFlags As Short
  56.        Public caIlluminantIndex As Short
  57.        Public caRedGamma As Short
  58.        Public caGreenGamma As Short
  59.        Public caBlueGamma As Short
  60.        Public caReferenceBlack As Short
  61.        Public caReferenceWhite As Short
  62.        Public caContrast As Short
  63.        Public caBrightness As Short
  64.        Public caColorfulness As Short
  65.        Public caRedGreenTint As Short
  66.    End Structure
  67.  
  68.   Public Enum caIlluminantIndex
  69.        ILLUMINANT_DEVICE_DEFAULT = 0 'Device's default. Standard used by output devices.
  70.        ILLUMINANT_A = 1 'Tungsten lamp.
  71.        ILLUMINANT_B = 2 'Noon sunlight.
  72.        ILLUMINANT_C = 3 'NTSC daylight.
  73.        ILLUMINANT_D50 = 4 'Normal print.
  74.        ILLUMINANT_D55 = 5 'Bond paper print.
  75.        ILLUMINANT_D65 = 6 'Standard daylight. Standard for CRTs and pictures.
  76.        ILLUMINANT_D75 = 7 'Northern daylight.
  77.        ILLUMINANT_F2 = 8 'Cool white lamp.
  78.        ILLUMINANT_DAYLIGHT = ILLUMINANT_C 'Same as ILLUMINANT_C.
  79.        ILLUMINANT_FLUORESCENT = ILLUMINANT_F2 'Same as ILLUMINANT_F2.
  80.        ILLUMINANT_MAX_INDEX = ILLUMINANT_F2 'Same as ILLUMINANT_F2.
  81.        ILLUMINANT_NTSC = ILLUMINANT_C 'Same as ILLUMINANT_C.
  82.        ILLUMINANT_TUNGSTEN = ILLUMINANT_A 'Same as ILLUMINANT_A.
  83.    End Enum
  84.  
  85.  
  86.    Public Enum TernaryRasterOperations
  87.        SRCCOPY = &HCC0020 ' dest = source
  88.        SRCPAINT = &HEE0086 ' dest = source OR dest
  89.        SRCAND = &H8800C6 ' dest = source AND dest
  90.        SRCINVERT = &H660046 ' dest = source XOR dest
  91.        SRCERASE = &H440328 ' dest = source AND (NOT dest)
  92.        NOTSRCCOPY = &H330008 ' dest = (NOT source)
  93.        NOTSRCERASE = &H1100A6 ' dest = (NOT src) AND (NOT dest)
  94.        MERGECOPY = &HC000CA ' dest = (source AND pattern)
  95.        MERGEPAINT = &HBB0226 ' dest = (NOT source) OR dest
  96.        PATCOPY = &HF00021 ' dest = pattern
  97.        PATPAINT = &HFB0A09 ' dest = DPSnoo
  98.        PATINVERT = &H5A0049 ' dest = pattern XOR dest
  99.        DSTINVERT = &H550009 ' dest = (NOT dest)
  100.        BLACKNESS = &H42 ' dest = BLACK
  101.        WHITENESS = &HFF0062 ' dest = WHITE
  102.    End Enum
  103.    Public Const HALFTONE = 4
  104.  
  105.    <DllImport("gdi32.dll")> _
  106.    Public Shared Function SetBkColor(hdc As IntPtr, crColor As Integer) As Integer
  107.    End Function
  108.  
  109. End Class
  110.  


Se ve muy largo el código pero tenía que ponerlo para que puedan analizar.

Espero que me puedan ayudar. No puedo darles nada solo mi agradecimiento. gracias



He conseguido redibujar correctamente el PictureBox en la versión para API metiendo la saturación en el evento PAINT, pero sigo sin poder guardar los cambios

Añadí la configuración al código anterior.





Páginas: 1 2 3 4 5 6 7 8 9 [10] 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines