Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - Eleкtro

#6931
Cita de: .:Weeds:. en 18 Mayo 2014, 01:40 AM
Esta muy bien el programa Eleкtro, lo voi a usar en un proyecto que estoy usando.

Saludos y gracias por el aporte.

Gracias, si encuentras algún bug (no debería porque, pero nunca se sabe xD) te agradecería que me lo comunicases




Cita de: elezekiel en 18 Mayo 2014, 01:59 AMpor que el code tiene tanto comentario en ingles, no puede ir en español?
Porque me gusta y estoy acostumbrado a desarrollar en el idioma Universal, aunque eso no quiere decir que no me sienta orgulloso de mi idioma, el Castellano.
Eres libre de tomar el código y traducirlo al Castellano xD.

Cita de: elezekiel en 18 Mayo 2014, 01:59 AMde donde obtenes esos codes?
¿A que códigos te refieres?, solo tomé ideas que me pudieran servir y las realizé desde cero dándoles (mi) otra perspectiva, pero de todas formas la fuente de esas ideas está explicado más arriba en el post.

Cita de: elezekiel en 18 Mayo 2014, 01:59 AMde donde obtenes esos codes?
es como tener una segunda opinion en temas graves y que uno a veces no da con el error, me parece una idea genial y util.

Gracias

Saludos.
#6932
Debería eliminar el tema... pero prefiero dejar este código para quien busque una solución al mismo problema.

El código lo desarrollé para administrar/personalizar los bordes de un Form, pero, por otro lado, permite de una manera sencilla deshabilitar la redimensión de todos los bordes de la aplicación, con estas instrucciones:
Código (vbnet) [Seleccionar]
Private FormBorders As New FormBorderManager(Me)
FormBorders.SetAllEdgesToNonResizable()


Aquí tienen el resto:
Código (vbnet) [Seleccionar]
' ***********************************************************************
' Author   : Elektro
' Created  : 01-12-2014
' Modified : 01-12-2014
' ***********************************************************************
' <copyright file="FormBorderManager.vb" company="Elektro Studios">
'     Copyright (c) Elektro Studios. All rights reserved.
' </copyright>
' ***********************************************************************

#Region " Usage Examples "

'Public Class Form1

'    ' Disable resizing on all border edges.
'    Private FormBorders As New FormBorderManager(Me) With
'            {
'                .Edges = New FormBorderManager.FormEdges With
'                         {
'                             .Top = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .Left = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .Right = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .Bottom = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .TopLeft = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .TopRight = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .BottomLeft = FormBorderManager.WindowHitTestRegions.TitleBar,
'                             .BottomRight = FormBorderManager.WindowHitTestRegions.TitleBar
'                         }
'            }

'    Private Shadows Sub Load(sender As Object, e As EventArgs) Handles MyBase.Load

'        ' Disables the moving on all border edges.
'        FormBorders.SetAllEdgesToNonMoveable()

'    End Sub

'End Class

#End Region

#Region " Imports "

Imports System.ComponentModel

#End Region

#Region " FormBorderManager "

''' <summary>
''' Class FormBorderManager.
''' Manages each Form border to indicate their Hit-Region.
''' </summary>
<Description("Manages each Form border to indicate their Hit-Region")>
Friend NotInheritable Class FormBorderManager : Inherits NativeWindow : Implements IDisposable

#Region " Members "

#Region " Miscellaneous "

    ''' <summary>
    ''' The form to manage their borders.
    ''' </summary>
    Private WithEvents form As Form = Nothing

#End Region

#Region " Properties "

    ''' <summary>
    ''' Gets or sets the Hit-Region of the edges.
    ''' </summary>
    ''' <value>The Form edges.</value>
    Public Property Edges As New FormEdges

    ''' <summary>
    ''' The Edges of the Form.
    ''' </summary>
    Partial Public NotInheritable Class FormEdges

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Top form border.
        ''' </summary>
        Public Property Top As WindowHitTestRegions = WindowHitTestRegions.TopSizeableBorder

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Left form border.
        ''' </summary>
        Public Property Left As WindowHitTestRegions = WindowHitTestRegions.LeftSizeableBorder

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Right form border.
        ''' </summary>
        Public Property Right As WindowHitTestRegions = WindowHitTestRegions.RightSizeableBorder

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Bottom form border.
        ''' </summary>
        Public Property Bottom As WindowHitTestRegions = WindowHitTestRegions.BottomSizeableBorder

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Top-Left form border.
        ''' </summary>
        Public Property TopLeft As WindowHitTestRegions = WindowHitTestRegions.TopLeftSizeableCorner

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Top-Right form border.
        ''' </summary>
        Public Property TopRight As WindowHitTestRegions = WindowHitTestRegions.TopRightSizeableCorner

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Bottom-Left form border.
        ''' </summary>
        Public Property BottomLeft As WindowHitTestRegions = WindowHitTestRegions.BottomLeftSizeableCorner

        ''' <summary>
        ''' Gets or sets the Hit-Region of the Bottom-Right form border.
        ''' </summary>
        Public Property BottomRight As WindowHitTestRegions = WindowHitTestRegions.BottomRightSizeableCorner

    End Class

#End Region

#Region " Enumerations "

    ''' <summary>
    ''' Known Windows Message Identifiers.
    ''' </summary>
    <Description("Messages to process in WndProc")>
    Private Enum KnownMessages As Integer

        ''' <summary>
        ''' Sent to a window in order to determine what part of the window corresponds to a particular screen coordinate.
        ''' This can happen, for example, when the cursor moves, when a mouse button is pressed or released,
        ''' or in response to a call to a function such as WindowFromPoint.
        ''' If the mouse is not captured, the message is sent to the window beneath the cursor.
        ''' Otherwise, the message is sent to the window that has captured the mouse.
        ''' <paramref name="WParam" />
        ''' This parameter is not used.
        ''' <paramref name="LParam" />
        ''' The low-order word specifies the x-coordinate of the cursor.
        ''' The coordinate is relative to the upper-left corner of the screen.
        ''' The high-order word specifies the y-coordinate of the cursor.
        ''' The coordinate is relative to the upper-left corner of the screen.
        ''' </summary>
        WM_NCHITTEST = &H84

    End Enum

    ''' <summary>
    ''' Indicates the position of the cursor hot spot.
    ''' Options available when a form is tested for mose positions with 'WM_NCHITTEST' message.
    ''' </summary>
    <Description("Return value of the 'WM_NCHITTEST' message")>
    Public Enum WindowHitTestRegions

        ''' <summary>
        ''' HTERROR: On the screen background or on a dividing line between windows.
        ''' (same as HTNOWHERE, except that the DefWindowProc function produces a system beep to indicate an error).
        ''' </summary>
        [Error] = -2

        ''' <summary>
        ''' HTTRANSPARENT: In a window currently covered by another window in the same thread.
        ''' (the message will be sent to underlying windows in the same thread
        ''' until one of them returns a code that is not HTTRANSPARENT).
        ''' </summary>
        TransparentOrCovered = -1

        ''' <summary>
        ''' HTNOWHERE: On the screen background or on a dividing line between windows.
        ''' </summary>
        NoWhere = 0

        ''' <summary>
        ''' HTCLIENT: In a client area.
        ''' </summary>
        ClientArea = 1

        ''' <summary>
        ''' HTCAPTION: In a title bar.
        ''' </summary>
        TitleBar = 2

        ''' <summary>
        ''' HTSYSMENU: In a window menu or in a Close button in a child window.
        ''' </summary>
        SystemMenu = 3

        ''' <summary>
        ''' HTGROWBOX: In a size box (same as HTSIZE).
        ''' </summary>
        GrowBox = 4

        ''' <summary>
        ''' HTMENU: In a menu.
        ''' </summary>
        Menu = 5

        ''' <summary>
        ''' HTHSCROLL: In a horizontal scroll bar.
        ''' </summary>
        HorizontalScrollBar = 6

        ''' <summary>
        ''' HTVSCROLL: In the vertical scroll bar.
        ''' </summary>
        VerticalScrollBar = 7

        ''' <summary>
        ''' HTMINBUTTON: In a Minimize button.
        ''' </summary>
        MinimizeButton = 8

        ''' <summary>
        ''' HTMAXBUTTON: In a Maximize button.
        ''' </summary>
        MaximizeButton = 9

        ''' <summary>
        ''' HTLEFT: In the left border of a resizable window.
        ''' (the user can click the mouse to resize the window horizontally).
        ''' </summary>
        LeftSizeableBorder = 10

        ''' <summary>
        ''' HTRIGHT: In the right border of a resizable window.
        ''' (the user can click the mouse to resize the window horizontally).
        ''' </summary>
        RightSizeableBorder = 11

        ''' <summary>
        ''' HTTOP: In the upper-horizontal border of a window.
        ''' </summary>
        TopSizeableBorder = 12

        ''' <summary>
        ''' HTTOPLEFT: In the upper-left corner of a window border.
        ''' </summary>
        TopLeftSizeableCorner = 13

        ''' <summary>
        ''' HTTOPRIGHT: In the upper-right corner of a window border.
        ''' </summary>
        TopRightSizeableCorner = 14

        ''' <summary>
        ''' HTBOTTOM: In the lower-horizontal border of a resizable window.
        ''' (the user can click the mouse to resize the window vertically).
        ''' </summary>
        BottomSizeableBorder = 15

        ''' <summary>
        ''' HTBOTTOMLEFT: In the lower-left corner of a border of a resizable window.
        ''' (the user can click the mouse to resize the window diagonally).
        ''' </summary>
        BottomLeftSizeableCorner = 16

        ''' <summary>
        ''' HTBOTTOMRIGHT: In the lower-right corner of a border of a resizable window.
        ''' (the user can click the mouse to resize the window diagonally).
        ''' </summary>
        BottomRightSizeableCorner = 17

        ''' <summary>
        ''' HTBORDER: In the border of a window that does not have a sizing border.
        ''' </summary>
        NonSizableBorder = 18

        ' ''' <summary>
        ' ''' HTOBJECT: Not implemented.
        ' ''' </summary>
        ' [Object] = 19

        ''' <summary>
        ''' HTCLOSE: In a Close button.
        ''' </summary>
        CloseButton = 20

        ''' <summary>
        ''' HTHELP: In a Help button.
        ''' </summary>
        HelpButton = 21

        ''' <summary>
        ''' HTSIZE: In a size box (same as HTGROWBOX).
        ''' (Same as GrowBox).
        ''' </summary>
        SizeBox = GrowBox

        ''' <summary>
        ''' HTREDUCE: In a Minimize button.
        ''' (Same as MinimizeButton).
        ''' </summary>
        ReduceButton = MinimizeButton

        ''' <summary>
        ''' HTZOOM: In a Maximize button.
        ''' (Same as MaximizeButton).
        ''' </summary>
        ZoomButton = MaximizeButton

    End Enum

#End Region

#End Region

#Region " Constructor "

    ''' <summary>
    ''' Initializes a new instance of the <see cref="FormBorderManager"/> class.
    ''' </summary>
    ''' <param name="form">The form to assign.</param>
    Public Sub New(ByVal form As Form)

        ' Assign the Formulary.
        Me.form = form

    End Sub

#End Region

#Region " Event Handlers "

    ''' <summary>
    ''' Assign the handle of the target Form to this NativeWindow,
    ''' necessary to override target Form's WndProc.
    ''' </summary>
    Private Sub SetFormHandle() _
    Handles form.HandleCreated, form.Load, form.Shown

        If Not MyBase.Handle.Equals(Me.form.Handle) Then
            MyBase.AssignHandle(Me.form.Handle)
        End If

    End Sub

    ''' <summary>
    ''' Releases the Handle.
    ''' </summary>
    Private Sub OnHandleDestroyed() _
    Handles Form.HandleDestroyed

        MyBase.ReleaseHandle()

    End Sub

#End Region

#Region " WndProc "

    ''' <summary>
    ''' Invokes the default window procedure associated with this window to process messages for this Window.
    ''' </summary>
    ''' <param name="m">
    ''' A <see cref="T:System.Windows.Forms.Message" /> that is associated with the current Windows message.
    ''' </param>
    Protected Overrides Sub WndProc(ByRef m As Message)

        MyBase.WndProc(m)

        Select Case m.Msg

            Case KnownMessages.WM_NCHITTEST

                Select Case CType(m.Result, WindowHitTestRegions)

                    Case WindowHitTestRegions.TopSizeableBorder ' The mouse hotspot is pointing to Top border.
                        m.Result = New IntPtr(Edges.Top)

                    Case WindowHitTestRegions.LeftSizeableBorder ' The mouse hotspot is pointing to Left border.
                        m.Result = New IntPtr(Edges.Left)

                    Case WindowHitTestRegions.RightSizeableBorder ' The mouse hotspot is pointing to Right border.
                        m.Result = New IntPtr(Edges.Right)

                    Case WindowHitTestRegions.BottomSizeableBorder ' The mouse hotspot is pointing to Bottom border.
                        m.Result = New IntPtr(Edges.Bottom)

                    Case WindowHitTestRegions.TopLeftSizeableCorner ' The mouse hotspot is pointing to Top-Left border.
                        m.Result = New IntPtr(Edges.TopLeft)

                    Case WindowHitTestRegions.TopRightSizeableCorner ' The mouse hotspot is pointing to Top-Right border.
                        m.Result = New IntPtr(Edges.TopRight)

                    Case WindowHitTestRegions.BottomLeftSizeableCorner ' The mouse hotspot is pointing to Bottom-Left border.
                        m.Result = New IntPtr(Edges.BottomLeft)

                    Case WindowHitTestRegions.BottomRightSizeableCorner ' The mouse hotspot is pointing to Bottom-Right border.
                        m.Result = New IntPtr(Edges.BottomRight)

                End Select

        End Select

    End Sub

#End Region

#Region " Public Methods "

    ''' <summary>
    ''' Disables the resizing on all border edges.
    ''' </summary>
    Public Sub SetAllEdgesToNonResizable()

        DisposedCheck()

        Me.Edges.Top = WindowHitTestRegions.TitleBar
        Me.Edges.Left = WindowHitTestRegions.TitleBar
        Me.Edges.Right = WindowHitTestRegions.TitleBar
        Me.Edges.Bottom = WindowHitTestRegions.TitleBar
        Me.Edges.TopLeft = WindowHitTestRegions.TitleBar
        Me.Edges.TopRight = WindowHitTestRegions.TitleBar
        Me.Edges.BottomLeft = WindowHitTestRegions.TitleBar
        Me.Edges.BottomRight = WindowHitTestRegions.TitleBar

    End Sub

    ''' <summary>
    ''' Enables the resizing on all border edges.
    ''' </summary>
    Public Sub SetAllEdgesToResizable()

        DisposedCheck()

        Me.Edges.Top = WindowHitTestRegions.TopSizeableBorder
        Me.Edges.Left = WindowHitTestRegions.LeftSizeableBorder
        Me.Edges.Right = WindowHitTestRegions.RightSizeableBorder
        Me.Edges.Bottom = WindowHitTestRegions.BottomSizeableBorder
        Me.Edges.TopLeft = WindowHitTestRegions.TopLeftSizeableCorner
        Me.Edges.TopRight = WindowHitTestRegions.TopRightSizeableCorner
        Me.Edges.BottomLeft = WindowHitTestRegions.BottomLeftSizeableCorner
        Me.Edges.BottomRight = WindowHitTestRegions.BottomRightSizeableCorner

    End Sub

    ''' <summary>
    ''' Enabled the moving on all border edges.
    ''' </summary>
    Public Sub SetAllEdgesToMoveable()

        DisposedCheck()

        Me.Edges.Top = WindowHitTestRegions.TopSizeableBorder
        Me.Edges.Left = WindowHitTestRegions.LeftSizeableBorder
        Me.Edges.Right = WindowHitTestRegions.RightSizeableBorder
        Me.Edges.Bottom = WindowHitTestRegions.BottomSizeableBorder
        Me.Edges.TopLeft = WindowHitTestRegions.TopLeftSizeableCorner
        Me.Edges.TopRight = WindowHitTestRegions.TopRightSizeableCorner
        Me.Edges.BottomLeft = WindowHitTestRegions.BottomLeftSizeableCorner
        Me.Edges.BottomRight = WindowHitTestRegions.BottomRightSizeableCorner

    End Sub

    ''' <summary>
    ''' Disables the moving on all border edges.
    ''' </summary>
    Public Sub SetAllEdgesToNonMoveable()

        DisposedCheck()

        Me.Edges.Top = WindowHitTestRegions.NoWhere
        Me.Edges.Left = WindowHitTestRegions.NoWhere
        Me.Edges.Right = WindowHitTestRegions.NoWhere
        Me.Edges.Bottom = WindowHitTestRegions.NoWhere
        Me.Edges.TopLeft = WindowHitTestRegions.NoWhere
        Me.Edges.TopRight = WindowHitTestRegions.NoWhere
        Me.Edges.BottomLeft = WindowHitTestRegions.NoWhere
        Me.Edges.BottomRight = WindowHitTestRegions.NoWhere

    End Sub

#End Region

#Region " Hidden methods "

    ' These methods and properties are purposely hidden from Intellisense just to look better without unneeded methods.
    ' NOTE: The methods can be re-enabled at any-time if needed.

    ''' <summary>
    ''' Assigns a handle to this window.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub AssignHandle()
    End Sub

    ''' <summary>
    ''' Creates a window and its handle with the specified creation parameters.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub CreateHandle()
    End Sub

    ''' <summary>
    ''' Creates an object that contains all the relevant information required
    ''' to generate a proxy used to communicate with a remote object.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub CreateObjRef()
    End Sub

    ''' <summary>
    ''' Invokes the default window procedure associated with this window.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub DefWndProc()
    End Sub

    ''' <summary>
    ''' Destroys the window and its handle.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub DestroyHandle()
    End Sub

    ''' <summary>
    ''' Determines whether the specified object is equal to the current object.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub Equals()
    End Sub

    ''' <summary>
    ''' Serves as the default hash function.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub GetHashCode()
    End Sub

    ''' <summary>
    ''' Retrieves the current lifetime service object that controls the lifetime policy for this instance.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub GetLifetimeService()
    End Sub

    ''' <summary>
    ''' Obtains a lifetime service object to control the lifetime policy for this instance.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub InitializeLifetimeService()
    End Sub

    ''' <summary>
    ''' Releases the handle associated with this window.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Sub ReleaseHandle()
    End Sub

    ''' <summary>
    ''' Gets the handle for this window.
    ''' </summary>
    <EditorBrowsable(EditorBrowsableState.Never)>
    Public Shadows Property Handle()

#End Region

#Region " IDisposable "

    ''' <summary>
    ''' To detect redundant calls when disposing.
    ''' </summary>
    Private IsDisposed As Boolean = False

    ''' <summary>
    ''' Prevent calls to methods after disposing.
    ''' </summary>
    ''' <exception cref="System.ObjectDisposedException"></exception>
    Private Sub DisposedCheck()
        If Me.IsDisposed Then
            Throw New ObjectDisposedException(Me.GetType().FullName)
        End If
    End Sub

    ''' <summary>
    ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
    ''' </summary>
    Public Sub Dispose() Implements IDisposable.Dispose
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub

    ''' <summary>
    ''' Releases unmanaged and - optionally - managed resources.
    ''' </summary>
    ''' <param name="IsDisposing">
    ''' <c>true</c> to release both managed and unmanaged resources;
    ''' <c>false</c> to release only unmanaged resources.
    ''' </param>
    Protected Sub Dispose(ByVal IsDisposing As Boolean)

        If Not Me.IsDisposed Then

            If IsDisposing Then
                Me.form = Nothing
                MyBase.ReleaseHandle()
                MyBase.DestroyHandle()
            End If

        End If

        Me.IsDisposed = True

    End Sub

#End Region

End Class

#End Region
#6933
¿Podrías explicar con mayor calidad de detalles lo que intentas conseguir?, no entendí tu pregunta.

Saludos
#6934
Cita de: samuelhm en  2 Junio 2014, 17:56 PM
Me pregunto si el uso correcto para hacer un archivo de configuracion es este:
...

Microsoft recomienda encarecidamente que los desarrolladores de aplicación .NET guardemos la configuración de usuario en el registro de Windows (antes que usar My.Settings).

Y si te fijas un poco en como trabajan las aplicaciones más profesionales (Ej: Photoshop), estas almacenan todo tipo de información tanto en el registro como en archivos locales, está todo bastante disperso.

Pero en mi opinión lo más correcto depende de tus necesidades...
...Por ejemplo, si yo desarrollo una aplicación y la quiero hacer portable con opciones configurables para el enduser, y que al portabilizar mi aplicación (copiar y pegar de un PC a otro) se mantenga esa configuración de usuario, pues obviamente no podré usar ni el registro, ni un archivo local que se almacene en otra ubicación como (Ej: APPDATA\Roaming\...) ni nada por el estilo ...porque eso lo complicaría un poquito para hacerlo persistente de un PC a otro, así que lo más correcto en mi opinión en un caso así es usar un archivo de inicialización (.ini) o en resumen un archivo de texto plano como un TXT o un XML que esté en el directorio de trabajo de la aplicación, aunque la estructura de un XML para manejar un par de opciones es complicarse la vida sinceramente...

Pero para un programa normal y corriente que se instala en un PC y que se suele mantener instalado hasta una reinstalación/actualización del SO, pues en ese caso yo me acomodaría a la interface que Microsoft provee y de muy facil acceso y manejo para crear un archivo de configuración gracias a My.Settings.

Saludos
#6935
Cierro el tema por pregunta duplicada.

PD: Te dejo esto por aquí, por si no llegas a leer mi respuesta en el otro tema:

Cita de: http://foro.elhacker.net/net/necesito_ayuda_con_unos_textbox_en_net-t416897.0.html;msg1951455#msg1951455Puedes utilizar el método Except para llevar a cabo la tarea:

Código (vbnet) [Seleccionar]
Dim Seriales1 As String = "_xxxxxxxx_zzzzzzzzz"
Dim Seriales2 As String = "_xxxxxxxx_hhhhhhhh_zzzzzzzzz"
Dim Seriales3 As String = String.Join("_", Seriales2.Split("_").Except(Seriales1.Split("_")))


Saludos

Saludos
#6936






DESCRIPCIÓN:

Una simple aplicacición para subir imagenes (de forma anonima) usando la API de imgur.

La aplicación permite arrastrar y soltar archivos al Form, así como iniciar el programa cargando una imagen mediante argumentos commandline,
y el instalador que viene incluido en la descarga permite asociar los archivos de imagen soportados para automatizar aún más la tarea.

Nota para programadores:
Los eventos y los controles de errores en la Class ImgurAPI (así como los event-handlers suscritos a dichos eventos, en el Form principal) es algo que dejé inacabado y en fase de pruebas.






IMÁGENES:

(lo sé, es un poco feo)

   






DESCARGA:
-> http://www.mediafire.com/?12bdq6o65owy8lt

Incluye source, compilación, instalador, y portable.[/s]
#6937
La función Mouse_Event se ha quedado ""anticuada"" y ha sido "sustituida" por la función SendInput, te sugiero integrar la utilización de dicha función en tu aplicación.

Te dejo un regalito para ti y para todos por parte de un servidor por si te sirve de ayuda:
=> http://pastebin.com/9wGBM5nM

Ejemplo de uso:

Citar
Código (vbnet) [Seleccionar]
SendInputs.MouseClick(SendInputs.MouseButton.RightPress)
SendInputs.MouseMove(X:=5, Y:=-5)
SendInputs.MouseMove(Offset:=New Point With {.X = 5, .Y = -5})
SendInputs.MousePosition(Position:=New Point With {.X = 100, .Y = -500})

Saludos
#6938
He leido en un post tuyo más reciente que comentabas la falta de atención a este post, lo digo porque de lo contrario no respondería a un post de antiguedad por no ser un buen ejemplo...




Para ser sinceros, el compañero @.:Weeds:.te ha sugerido la mejor opción que hay, pero es una librería demasiado completa y amplia para tus necesidades, lo cual resolverías descargando el source y usando un simple RegEx.

De todas formas, te dejo un ejemplo que escribí hace tiempo sobre el uso de dicha librería, espero que te sirva en algo:

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

    Private ReadOnly html As String =
        <a><![CDATA[
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<body>

<div class="infolinks"><input type="hidden" name="IL_IN_TAG" value="1"/></div><div id="main">

<div class="music">

<h2 class="boxtitle">New releases \ <small>
<a href="/newalbums" title="New releases mp3 downloads" rel="bookmark">see all</a></small>
</h2>

<div class="item">

    <div class="thumb">
<a href="http://www.mp3crank.com/curt-smith/deceptively-heavy-121861" rel="bookmark" lang="en" title="Curt Smith - Deceptively Heavy album downloads"><img width="100" height="100" alt="Mp3 downloads Curt Smith - Deceptively Heavy" title="Free mp3 downloads Curt Smith - Deceptively Heavy" src="http://www.mp3crank.com/cover-album/Curt-Smith-Deceptively-Heavy-400x400.jpg"/></a>
    </div>

<div class="release">
<h3>Curt Smith</h3>
<h4>
<a href="http://www.mp3crank.com/curt-smith/deceptively-heavy-121861" title="Mp3 downloads Curt Smith - Deceptively Heavy">Deceptively Heavy</a>
</h4>
<script src="/ads/button.js"></script>
</div>

<div class="release-year">
<p>Year</p>
<span>2013</span>
</div>

<div class="genre">
<p>Genre</p>
<a href="http://www.mp3crank.com/genre/indie" rel="tag">Indie</a><a href="http://www.mp3crank.com/genre/pop" rel="tag">Pop</a>
</div>

</div>

<div class="item">

    <div class="thumb">
<a href="http://www.mp3crank.com/wolf-eyes/lower-demos-121866" rel="bookmark" lang="en" title="Wolf Eyes - Lower Demos album downloads"><img width="100" height="100" alt="Mp3 downloads Wolf Eyes - Lower Demos" title="Free mp3 downloads Wolf Eyes - Lower Demos" src="http://www.mp3crank.com/cover-album/Wolf-Eyes-–-Lower-Demos.jpg" /></a>
    </div>

<div class="release">
<h3>Wolf Eyes</h3>
<h4>
<a href="http://www.mp3crank.com/wolf-eyes/lower-demos-121866" title="Mp3 downloads Wolf Eyes - Lower Demos">Lower Demos</a>
</h4>
<script src="/ads/button.js"></script>
</div>

<div class="release-year">
<p>Year</p>
<span>2013</span>
</div>

<div class="genre">
<p>Genre</p>
<a href="http://www.mp3crank.com/genre/rock" rel="tag">Rock</a>
</div>

</div>

</div>

</div>

</body>
</html>
]]$cdataend$</a>.Value

    Private sb As New System.Text.StringBuilder

    Private htmldoc As HtmlAgilityPack.HtmlDocument = New HtmlAgilityPack.HtmlDocument
    Private htmlnodes As HtmlAgilityPack.HtmlNodeCollection = Nothing

    Private Title As String = String.Empty
    Private Cover As String = String.Empty
    Private Year As String = String.Empty
    Private Genres As String() = {String.Empty}
    Private URL As String = String.Empty

    Private Sub Test() Handles MyBase.Shown

        ' Load the html document.
        htmldoc.LoadHtml(html)

        ' Select the (10 items) nodes.
        ' All "SelectSingleNode" below will use this DIV element as a starting point.
        htmlnodes = htmldoc.DocumentNode.SelectNodes("//div[@class='item']")

        ' Loop trough the nodes.
        For Each node As HtmlAgilityPack.HtmlNode In htmlnodes

             ' Set the values:
            Title = node.SelectSingleNode(".//div[@class='release']/h4/a[@title]").GetAttributeValue("title", "Unknown Title")
            Cover = node.SelectSingleNode(".//div[@class='thumb']/a/img[@src]").GetAttributeValue("src", String.Empty)
            Year = node.SelectSingleNode(".//div[@class='release-year']/span").InnerText
            Genres = (From genre In node.SelectNodes(".//div[@class='genre']/a") Select genre.InnerText).ToArray
            URL = node.SelectSingleNode(".//div[@class='release']/h4/a[@href]").GetAttributeValue("href", "Unknown URL")

            ' Display the values:
            sb.Clear()
            sb.AppendLine(String.Format("Title : {0}", Title))
            sb.AppendLine(String.Format("Cover : {0}", Cover))
            sb.AppendLine(String.Format("Year  : {0}", Year))
            sb.AppendLine(String.Format("Genres: {0}", String.Join(", ", Genres)))
            sb.AppendLine(String.Format("URL   : {0}", URL))
            MsgBox(sb.ToString)

        Next node

    End Sub

End Class



+ Como descargar el source de una página:

Código (vbnet) [Seleccionar]
    ' Get SourcePage Array
    ' ( By Elektro )
    '
    ' Usage Examples:
    ' Dim SourceLines As String() = GetSourcePageArray("http://www.ElHacker.net", TrimLines:=True)
    ' For Each Line As String In SourceLines : MsgBox(Line) : Next Line
    '
    ''' <summary>
    ''' Gets a web source page.
    ''' </summary>
    ''' <param name="URL">Indicates the source page URL to get.</param>
    ''' <param name="TrimLines">Indicates whether to trim the lines.</param>
    ''' <param name="SplitOptions">Indicates the split options.</param>
    ''' <returns>System.String[][].</returns>
    ''' <exception cref="Exception"></exception>
    Private Function GetSourcePageArray(ByVal URL As String,
                                        Optional ByVal TrimLines As Boolean = False,
                                        Optional ByVal SplitOptions As StringSplitOptions =
                                                       StringSplitOptions.None) As String()

        Try

            Using StrReader As New IO.StreamReader(Net.HttpWebRequest.Create(URL).GetResponse().GetResponseStream)

                If TrimLines Then

                    Return (From Line As String
                           In StrReader.ReadToEnd.Split({Environment.NewLine}, SplitOptions)
                           Select Line.Trim).ToArray

                Else
                    Return StrReader.ReadToEnd.Split({Environment.NewLine}, SplitOptions)

                End If

            End Using

        Catch ex As Exception
            Throw New Exception(ex.Message)
            Return Nothing

        End Try

    End Function


+ Un breve ejemplo de la utilización de un RegEx:

Código (vbnet) [Seleccionar]
#Region " RegEx Match Tag "

    ' [ RegEx Match Tag Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Dim str As String = <a><![CDATA[href=>Drifter - In Search of Something More [EP] (2013)</a>]]></a>.Value
    ' MsgBox(RegEx_Match_Tag(str, 1)) ' Result: Drifter - In Search of Something More [EP] (2013)

    Private Function RegEx_Match_Tag(ByVal str As String, Optional ByVal Group As Int32 = 0) As String

        ' Match criteria:
        '
        ' >Text<

        Dim RegEx As New System.Text.RegularExpressions.Regex( _
        <a><![CDATA[>([^<]+?)<]]$cdataend$</a>.Value)

        Return RegEx.Match(str).Groups(Group).ToString
       
    End Function

#End Region



Saludos
#6939
.NET (C#, VB.NET, ASP) / Re: Help Gui
28 Junio 2014, 03:51 AM
Cita de: StevenKhooks en 16 Junio 2014, 04:32 AMel problema es que cuando meto mi codigo no me compila el codigo

Cita de: StevenKhooks en 16 Junio 2014, 04:32 AMque problema me pasa ?

¿Que código tienes?.

Saludos
#6940
Opino lo mismo que el compañero @KuBox, o bien desarrollas una aplicación simple y usas API Hooking, o bien te pones a desarrollar un Driver,
hace tiempo estuve interesando sobre el mismo tema, pero me di cuenta de que era una eternidad de trabajo del que me habia podido imaginar ...y solo quería hacerlo por capricho, así que no lo intenté.

Mi consejo: olvídalo, conformate con menos, o busca una alternativa de terceros.

Algo que puedes hacer y que es mucho más llevadero ...pero con sus obvios inconvenientes, es usar un FileSystemWatcher para detectar la eliminación de un archivo (una vez ya ha sido enviado a la papelera) y la librería WindowsApiCodePack de Microsoft para manejar la papelera, entonces puedes recuperar el archivo eliminado de la papelera y su contenido, para restaurarlo a su ubicación original, ¿cual es el inconveniente?: la falta de control sobre la eliminación permanente de un archivo (Shift + Del).

Saludos!