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

#6911
DESCRIPCIÓN:

Una amiga me pidió que la ayudase a conseguir mantener la ventana del Skype siempre encima (por sus motivos personales), así que acabé desarrollando una pequeña utilidad con esa finalidad.

NOTA: No llevaré a cabo ninguna sugerencia para esta aplicación, se le pueden añadir mejoras como un icono en el systray, o usar la WinAPI para un mejor método de tección (por el nombre de la Class de la ventana del Chat en lugar de monitorizar el proceso), pero no me resulta necesario.






IMÁGENES:

   






DESCARGA:

http://www.mediafire.com/?6j129hf0t01i3yp

Incluye el código fuente, y compilación
#6912
NUEVA VERSIÓN 1.1

CitarNotas de la versión 1.1

· Añadido:
 Un log con (solamente) reporte de errores.
 El progreso ahora también se muestra en la barra de tareas de Windows.

· Corregido:
 La lista de archivos no se actualizaba correctamente al detener y reanudar el procedimiento, este bug causaba un "crash" o un "freeze" en el programa.
#6913
El código puede subscribirse a los eventos del mouse, eso significa que si, puedes grabar cada acontecimiento y el orden de ellos, pero claro, eso requieriría hacer unas modificaciones para que el código se adapten a tus necesidades que "graben" los eventos en un objeto o archivo que contenga ese "set" de eventos, y lo mismo que para reproducir esas acciones.

Hace tiempo escribí un código para automatizar ambas tareas, la de grabar y la de reproducir, pero es un código que no reviso desde hace mucho tiempo, lo escribí cuando me estuve iniciando en .NET y usé técnicas inapropiadas (un timer) para grabar los eventos así que puede tener sus fallos, de todas formas te dejo el código por si te sirve:

Código (vbnet) [Seleccionar]

#Region " Record Mouse Class "

' [ Record Mouse Functions ]
'
' // By Elektro H@cker
'
' Examples :
' Record_Mouse.Start_Record()
' Record_Mouse.Stop_Record()
' Record_Mouse.Play() : While Not Record_Mouse.Play_Is_Completed : Application.DoEvents() : End While
' Record_Mouse.Mouse_Speed = 50

Public Class Record_Mouse

   ''' <summary>
   ''' Sets the speed of recording/playing the mouse actions.
   ''' Default value is 25.
   ''' </summary>
   Public Shared Mouse_Speed As Long = 30L

   ''' <summary>
   ''' Gets the status pf the current mouse play.
   ''' False = Mouse task is still playing.
   ''' True = Mouse task play is done.
   ''' </summary>
   Public Shared Play_Is_Completed As Boolean

   ' Where the mouse coordenates will be stored:
   Private Shared Coordenates_List As New List(Of Point)

   ' Where the mouse clicks will be stored:
   Private Shared Clicks_Dictionary As New Dictionary(Of Long, MouseButton)

   ' Timer to record the mouse:
   Private Shared WithEvents Record_Timer As New Timer

   ' Button click count to rec/play clicks:
   Private Shared Click_Count As Int32 = 0

   ' Thread to reproduce the mouse actions:
   Private Shared Thread_MousePlay_Var As System.Threading.Thread = New Threading.Thread(AddressOf Thread_MousePlay)

   ' API to record the current mouse button state:
   Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

   ' API to reproduce a mouse button click:
   Private Declare Sub Mouse_Event Lib "User32" Alias "mouse_event" (ByVal dwFlags As MouseButton, ByVal dx As Integer, ByVal dy As Integer, ByVal dwData As Integer, ByVal dwExtraInfo As Integer)

   ' GetAsyncKeyState buttons status
   Private Shared Last_ClickState_Left As Long = -1L
   Private Shared Last_ClickState_Right As Long = -1L
   Private Shared Last_ClickState_Middle As Long = -1L

   Enum MouseButton

       Left_Down = &H2    ' Left button (hold)
       Left_Up = &H4      ' Left button (release)

       Right_Down = &H8   ' Right button (hold)
       Right_Up = &H10    ' Right button (release)

       Middle_Down = &H20 ' Middle button (hold)
       Middle_Up = &H40   ' Middle button (release)

       Left               ' Left   button (press)
       Right              ' Right  button (press)
       Middle             ' Middle button (press)

   End Enum

   ''' <summary>
   ''' Starts recording the mouse actions over the screen.
   ''' It records the position of the mouse and left/right button clicks.
   ''' </summary>
   Public Shared Sub Start_Record()

       ' Reset vars:
       Play_Is_Completed = False
       Coordenates_List.Clear() : Clicks_Dictionary.Clear()
       Last_ClickState_Left = -1 : Last_ClickState_Right = -1 : Last_ClickState_Middle = -1
       Click_Count = 0

       ' Set Mouse Speed
       Record_Timer.Interval = Mouse_Speed

       ' Start Recording:
       Record_Timer.Start()

   End Sub

   ''' <summary>
   ''' Stop recording the mouse actions.
   ''' </summary>
   Public Shared Sub Stop_Record()
       Record_Timer.Stop()
   End Sub

   ''' <summary>
   ''' Reproduce the mouse actions.
   ''' </summary>
   Public Shared Sub Play()
       Thread_MousePlay_Var = New Threading.Thread(AddressOf Thread_MousePlay)
       Thread_MousePlay_Var.IsBackground = True
       Thread_MousePlay_Var.Start()
   End Sub

   ' Procedure used to store the mouse actions
   Private Shared Sub Record_Timer_Tick(sender As Object, e As EventArgs) Handles Record_Timer.Tick

       Coordenates_List.Add(Control.MousePosition)

       ' Record Left click
       If Not Last_ClickState_Left = GetAsyncKeyState(1) Then
           Last_ClickState_Left = GetAsyncKeyState(1)
           If GetAsyncKeyState(1) = 32768 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Left_Down)
           ElseIf GetAsyncKeyState(1) = 0 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Left_Up)
           End If
       End If

       ' Record Right click
       If Not Last_ClickState_Right = GetAsyncKeyState(2) Then
           Last_ClickState_Right = GetAsyncKeyState(2)
           If GetAsyncKeyState(2) = 32768 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Right_Down)
           ElseIf GetAsyncKeyState(2) = 0 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Right_Up)
           End If
       End If

       ' Record Middle click
       If Not Last_ClickState_Middle = GetAsyncKeyState(4) Then
           Last_ClickState_Middle = GetAsyncKeyState(4)
           If GetAsyncKeyState(4) = 32768 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Middle_Down)
           ElseIf GetAsyncKeyState(4) = 0 Then
               Click_Count += 1
               Coordenates_List.Add(Nothing)
               Clicks_Dictionary.Add(Click_Count, MouseButton.Middle_Up)
           End If
       End If

   End Sub

   ' Procedure to play a mouse button (click)
   Private Shared Sub Mouse_Click(ByVal MouseButton As MouseButton)
       Select Case MouseButton
           Case MouseButton.Left : Mouse_Event(MouseButton.Left_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Left_Up, 0, 0, 0, 0)
           Case MouseButton.Right : Mouse_Event(MouseButton.Right_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Right_Up, 0, 0, 0, 0)
           Case MouseButton.Middle : Mouse_Event(MouseButton.Middle_Down, 0, 0, 0, 0) : Mouse_Event(MouseButton.Middle_Up, 0, 0, 0, 0)
           Case Else : Mouse_Event(MouseButton, 0, 0, 0, 0)
       End Select
   End Sub

   ' Thread used for reproduce the mouse actions
   Private Shared Sub Thread_MousePlay()

       Click_Count = 0
       Clicks_Dictionary.Item(0) = Nothing

       For Each Coordenate In Coordenates_List

           Threading.Thread.Sleep(Mouse_Speed)

           If Coordenate = Nothing Then
               Click_Count += 1
               If Click_Count > 1 Then
                   Mouse_Click(Clicks_Dictionary.Item(Click_Count))
               End If
           Else
               Cursor.Position = Coordenate
           End If

       Next

       Mouse_Click(MouseButton.Left_Up)
       Mouse_Click(MouseButton.Right_Up)
       Mouse_Click(MouseButton.Middle_Up)

       Play_Is_Completed = True

   End Sub

End Class

#End Region




#6914
Cita de: kub0x en 28 Junio 2014, 18:59 PMBuen aporte EleKtro, estaría bien que añadieses las siguientes cosas:

Cita de: engel lex en 28 Junio 2014, 19:02 PMno lo hice porque me parecía de mala educación decir que agregara cosas XD

Las sugerencias o criticas, mientras sean constructivas, siempre son bien recibidas.

· El Auto-inicio con Windows es algo que lo añadiré como una opción del instalador.
· El icono y menú en el systray lo tomo más en cuenta y estará añadido en una próxima (y seguramente última) version.

Citar• Menú contextual "subir imagen" al hacer click derecho sobre un archivo.
Esto ya es algo implementado (en el instalador).

EDITO: pensandolo mejor, añadiré el auto-inicio también al systray, así como la posibilidad de asociar/desasociar los archivos de imagenes soportados.

Gracias por las sugerencias
Saludos!
#6915
No se me habia pasado por la cabeza usar CUDA, y porsupuesto debe resultar mucho más veloz que los otros métodos, me pondré a documentarme sobre ello y a ver si encuentro algo interesante para compartir :).

Cita de: engel lex en 28 Junio 2014, 21:09 PMque es cuda?

CUDA es el motor GPU de nVidia, ATI tiene otro, pero no recuerdo su nombre. las aplicaciones pueden aprovechar la aceleración GPU para aumentar el rendimiento de una forma bastante increible.

Cita de: http://www.geforce.com/hardware/technology/cudaCUDA is a parallel computing platform and programming model invented by NVIDIA. It enables dramatic increases in computing performance by harnessing the power of the graphics processing unit (GPU).

Saludos!
#6916
Cita de: Gld900 en 28 Junio 2014, 19:37 PMP.D Esto lo hago con el mero hecho de investigar y averiguar el funcionamiento y las acciones de este tipo de aplicaciones con mis propios ordenadores y redes.

Tener la intención de robar a una persona ajena no es el modo correcto para aprender, estos temas, además de ser ilegales están prohibidos en el foro.

El IceCrack lo publiqué con fines educativos, más que nada es un recopilatorio de herramientas commandline con una (simple) interfaz de usuario en Batch para mostrar los datos que se pueden obtener de un PC sin requerir apenas conocimientos de cualquier tipo, ya que esas aplicaciones hacen todo el trabajo sucio.

Tema cerrado.

Saludos!
#6917
Windows / Re: duda net framework
28 Junio 2014, 09:24 AM
Si ya tienes instalado FW 3.0 e instalas FW 4.0, o lo que viene siendo lo mismo ...si tienes instalada una versión anterior y te instalas una versión reciente, entonces podrás seguir ejecutando tu aplicación con totla normalidad, ya que el anterior FW no se elimina,
por lo contrario, si NO tienes instalado FW 3.0 (por el motivo que sea), e instalas FW 4.0, entonces debes saber lo siguiente:

.Net Framework 4.X tiene capacidad limitada para poder ejecutar ensamblados que requieran versiones anteriores de .Net Framework, esto quiere decir que quizás puedas, o quizás no, pero lo más probable es que debas instalar la versión requerida por esa aplicación (no lo aseguro a ciencia cierta, solo por experiencia en el uso e instalación de software de terceros).

Saludos
#6918
Cita de: engel lex en 28 Junio 2014, 01:41 AMphyton... la identacion, la forma en que hace los programas... no se! D:!!!!!!!

IDEM, no soporto que un lenguaje sea tan restrictivo hasta el punto de tener que amoldarte a la cantidad de tabulaciones que debes usar en cada linea, es un verdadero estorbo cuando necesitas hacer un test rápido sobre el lenguaje ...ya que el lenguaje te impide ahorrar tiempo escribiendo "mal",
y aparte, en resumen, cualquier lenguaje que no use keywords del tipo Start, End, Begin etc y en su lugar use símbolos para empezar/terminar un bloque (Ej: C#) no me agrada mucho ya que me resulta menos productiva ese tipo de sintaxis.

Saludos.
#6919
Hola

Aparte de lo que te han explicado, un lenguaje interpretado necesita de un archivo al que llamamos "intérprete", y que como su nombre indica se encarga de interpretar las instrucciones (el contenido escrito) del script, por ejemplo, Batch necesita a la CMD para traducirse, Python necesita a py.exe/pyw.exe, Ruby necesita a rb.exe/rbw.exe, etc... mientras que un lenguaje compilado es traducido a instrucciones nativas que solo requieren la ejecución del hardware/OS.

Otra cosa que hay que tener en cuenta es que, un lenguaje compilable es un lenguaje compilado, y un lenguaje que no es compilable es un lenguaje interpretado,
pero a esto añadiria que, no se debe confundir a un empaquetador/conversor de exe con lo que es un compilador, porque es algo que se suele hacer mucho.

Saludos
#6920
Cita de: engel lex en 28 Junio 2014, 05:36 AM
wow! pero que bonito ;)

No se si es sarcasmo ...porque el diseño es un poco feo, pero gracias por comentar xD

PD: Cuando hago un programa personal, es decir, para mi ...pero con intención de compartirlo, siempre me cuesta encontrar un set de colores que no sea desagradable tanto para los usuarios que usan los estilos visuales de Windows, como para mi con el theme de terceros que yo uso, intento compensar el gran cambio visual que supone de un theme a otro ...y ahí está el problema xD.

Saludos