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

#1901
Chester Bennington, el vocalista del grupo de Rock Linkin Park, se suicidó en su residencia de Palos Verdes, en Los Ángeles.
De acuerdo con el portal "TMZ", su cuerpo fue descubierto la mañana de hoy jueves.

Bennington tenía 41 años. También fue vocalista de la banda Stone Temple Pilots, en sustitución de Scott Weiland, fallecido en 2015.

 




Yo no soy muy de publicar noticias, y aparte tampoco encuentro ahora mismo ningún artículo en idioma Español que haga referencia a esta noticia, así que me limitaré a compartir con ustedes algunas fuentes en Inglés (la fuente original de la noticia en el portal TMC, y otras fuentes de interés) donde se detallan muchas más cosas:


Por último, os dejo por aquí este videoclip músical de Linkin Park... uno de sus grandes éxitos que siempre nos acompañará en nuestros corazones:

[youtube=640,360]https://www.youtube.com/watch?v=eVTXPUF4Oz4[/youtube]
#1902
Cita de: El_Andaluz en 20 Julio 2017, 00:16 AM
Aunque el cannabis se entiende como una droga en la mayoría del mundo, no todos los países la consideran ilícita ni prohíben su consumo.



PD: Le vais a gastar el nombre a nuestro entrañable Hasoncito...
#1903
Cita de: Randomize en 19 Julio 2017, 21:47 PM
¡¡¡ El algoritmo !!!

¿Pero de dónde las sacas?

El algoritmo está en mi cabeza, es algo así como el sentido arácnido de Spiderman... es un don que he ido desarrollando con el paso de los años, lo siento, pero no está al alcance de todo el  mundo. ;)




Voy a compartir una reliquia antigua, de esas que o le gustan mucho a uno, o no le gustan nada, pero lo que es seguro es que no le dejará indiferente a nadie... tiene un rollete a lo Felix The Cat:

Space Cowboy - My Egyptian Lover
[youtube=640,360]https://www.youtube.com/watch?v=icmh8eOgztU[/youtube]

Y otra reliquia del género Elektro:

Mondo - Alive
[youtube=640,360]https://www.youtube.com/watch?v=GOWSxs1SMyY[/youtube]

Venga, que acabo de recordar otro temón del Mondo de la época:

Yanou Feat. Liz - King Of My Castle (Mondo Remix)
[youtube=640,360]https://www.youtube.com/watch?v=tAuQMkovDSA&list=RDtAuQMkovDSA[/youtube]

Y la original:
[youtube=640,360]https://www.youtube.com/watch?v=DXSyQjppqG0[/youtube]

Me viene a la cabeza también este mítico e hipnótico temazo housero... solo para los gustos más exquisitos:

Dj Rolando - Jaguar
[youtube=640,360]https://www.youtube.com/watch?v=LK2qFtDanxw[/youtube]

Suficiente, que me pongo muy nostálgico.

Saludos!
#1904
Cita de: Randomize en 19 Julio 2017, 21:17 PMLlama a un Illuminetti de esos que nombras tanto a ver si te sugiere algo bueno...

Pues oye, a lo mejor te sorprendo...

[youtube=640,360]https://www.youtube.com/watch?v=vAH7H0jbjeU[/youtube]
( ¿la voz del principio te suena? ;) )

[youtube=640,360]https://www.youtube.com/watch?v=8kuKW0n2OOA[/youtube]

[youtube=640,360]https://www.youtube.com/watch?v=_FN0Eutpmxc[/youtube]

Y luego está... ehm... no sé como definirlo, pero me descojono vivo:

[youtube=640,360]https://www.youtube.com/watch?v=wmeMHVga_O4[/youtube]
#1905
Cita de: Randomize en 19 Julio 2017, 20:12 PM
¡¡¡ Ésto está calentito de hecho salía mañana !!!

Pues si la cosa va de videos recien salidos del horno, aquí teneis un surtido de Rock:

DIAMANTE - Coming In Hot
[youtube=640,360]https://www.youtube.com/watch?v=EHZbeJ__1NE[/youtube]

ESKIMO CALLBOY - MC Thunder
[youtube=640,360]https://www.youtube.com/watch?v=wobbf3lb2nk&feature=em-uploademail[/youtube]

Orestea - Elements
[youtube=640,360]https://www.youtube.com/watch?v=XbcsVFPow_4&feature=em-uploademail[/youtube]

Memphis May Fire - Virus
[youtube=640,360]https://www.youtube.com/watch?v=8BlP622J-L0&feature=em-uploademail[/youtube]




...Y este nuevo videoclip de mi diosa sexual del olimpo del paraiso de las mujeres más bellas y sexys del planeta y de todas las galaxias, por supuesto estoy hablando de la única, la incomparable, la que me la pone más tiesa que el martillo de Thor (y además canta muy bien :)), ella es... ¡Alexandra Stan!

[youtube=640,360]https://www.youtube.com/watch?v=g6w53kGIqq0&feature=em-uploademail[/youtube]
#1906
Lo que estoy escuchando ahora mismo, se me está pegando el tema  :silbar:

Youth Killed It - (Jean-Claude) Van Mann
[youtube=640,360]https://www.youtube.com/watch?v=DcrN06od2Uk[/youtube]
#1907
Cita de: g5server en 19 Julio 2017, 17:17 PMQuizás no te has fijado que en los enlaces que me indicas hace referencia expresa a:

zipfile='mifichero.lib', en lugar de zipfile=None.

Al ponerlo en None, consigo que esa librería se incorpore al EXE y, aunque engorde el ejecutable, provoca una mejora muy muy sustancial de velocidad.

Por favor, lee en profundidad los artículos que he compartido en esos enlaces, sobre todo esta parte:

Cita de: https://medium.com/@bjoernstiel/code-signing-py2exe-executables-a222c0d06d3fCreate the executable

Without going too much into detail, the exe created by py2exe is a simple loader that loads the Python interpreter plus your Python code. The Python code can either be bundled inside the exe or be detached from the exe loader as a separate library.

In order to apply a sign certificate, we need to detach the library from the exe loader. This is done by specifying the zipfile property on the setup dictionary

setup(name="name",
     console=[],
     windows=[app],
     ...
     # py2exe options
     zipfile = "app.lib", # detached zip library
     data_files = [],
     options={"py2exe": py2exe_options},
)

Si además lees la documentación oficial de py2exe, comprenderás en base al texto citado arriba, que al especificar zipfile = None estás impidiendo (al menos en teoría) la posibilidad de firmar digitálmente el archivo autoextraible/SFX generado con py2exe:

Cita de: http://www.py2exe.org/index.cgi/ListOfOptionszipfile - name of shared zipfile to generate; may specify a subdirectory; defaults to 'library.zip'. If zipfile is set to None, the files will be bundled within the executable instead of 'library.zip'.

En resumen, dependiendo de como configures el parámetro "zipfile", si especificas el valor "none" entonces los archivos.py que componen a tu programa de Python serán incluidos tal cual dentro del exe generado, y si por lo contrario especificas un nombre de archivo entonces los archivos.py se incluiran dentro de un archivo comprimido/zip aislado dentro del exe generado, y para hacer lo que quieres, es decir, firmar el exe, en teoría necesitas crear dicho archivo comprimido como se explica en aquél artículo, por ende, la solución al problema ya se te ha ofrecido...

EDITO:
...Otra cosa bien distinta es que la solución no te guste por las desventajas que supone xD, lamentablemente al parecer py2exe no permite la modificación del nivel de compressión del archivo zip resultante dentro del SFX, de poder hacerlo eso solventaría el inconveniente del impacto negativo al que haces referencia en la velocidad de descomprensión e inicio del intérprete/script, pero no, al parecer no se puede modificar (al menos no diréctamente, pero supongo que en el código fuente si).

De todas formas py2exe está muy sobrevalorado... a pesar de ser una herramienta obsoleta (última release en sourceforge: año 2008, y en la web de PyPI: año 2014, es un proyecto descontinuado). Como alternativa siempre puedes probar a generar el SFX con la librería cx_Freeze, y comprobar por ti mismo si el exe generado puedes firmarlo o tampoco se puede...


Saludos!
#1909
. . . :rolleyes:

[youtube=640,360]https://www.youtube.com/watch?v=n3kgSYamqbM[/youtube]
#1910
El método SendKeys() es muy limitado, igual que el lenguaje VBS, donde ni tan siquiera se puede llamar a la API de Windows sin recurrir a la instalación de componentes de terceros.

Tengamos presente que Windows no es solo Batch y VBS, hay otros lenguajes soportados de forma nativa y son mucho más potentes/completos, como JS, y PowerShell.

En este último lenguaje podemos simplificar muchas tareas, pero para intentar demostrar el potencial de este lenguaje yo he optado por compilar una clase escrita en otro lenguaje adicional, VB.NET (aunque también podría haber sido C#, F# o VC++), con una clase donde he implementado los métodos necesarios y los P/Invokes para hacer lo que pides (ejecutar el notepad y activar el foco de ventana, y luego mantener pulsada una tecla). No es necesario conocer el lenguaje VB.NET, tan solo debes fijarte en las 3 últimas lineas al final de este código:

Script.ps1
Código (vbnet,101,102,103) [Seleccionar]
$vbCode = @'
Imports Microsoft.VisualBasic
Imports System
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Runtime.InteropServices
Imports System.Threading
Imports System.Windows.Forms

Namespace Elektro

   Public NotInheritable Class NativeMethods

       Friend Const KEYEVENTF_KEYUP As UInteger = 2UI

       <DllImport("User32.dll", CharSet:=CharSet.Auto, SetLastError:=True)>
       Friend Shared Sub keybd_event(ByVal vkey As Byte,
                                     ByVal scanCode As Byte,
                                     ByVal flags As UInteger,
                                     ByVal extraInfo As UInteger)
       End Sub

       <DllImport("User32.dll", SetLastError:=True)>
       Friend Shared Function GetForegroundWindow() As IntPtr
       End Function

       <DllImport("User32.dll", SetLastError:=True)>
       Friend Shared Function SetForegroundWindow(ByVal hwnd As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
       End Function

   End Class

   Public NotInheritable Class ProcessTools

       ''' <summary>
       ''' Runs and activates Notepad process.
       ''' </summary>
       Public Shared Sub RunNotepad()

           Using p As New Process() With {
                   .StartInfo = New ProcessStartInfo("notepad.exe") With {
                       .UseShellExecute = True
                   }
               }

               p.Start()
               p.WaitForInputIdle(Timeout.Infinite)

               Dim hwnd As IntPtr = IntPtr.Zero
               Do While (hwnd = IntPtr.Zero)
                   hwnd = p.MainWindowHandle
               Loop
               Debug.WriteLine("Window Handle: " & hwnd.ToInt32())

               Do Until (NativeMethods.GetForegroundWindow() = hwnd)
                   Dim result As Boolean = NativeMethods.SetForegroundWindow(hwnd)
               Loop
               '' Alternativa administrada:
               ' Interaction.AppActivate(p.Id)

           End Using

       End Sub

   End Class

   Public NotInheritable Class KeyboardTools

       ' Press and holds the specified key.
       Public Shared Sub PressKey(ByVal key As Keys)
           NativeMethods.keybd_event(CByte(key), 0, 0UI, 0UI)
       End Sub

       ' Releases a previous hold key.
       Public Shared Sub ReleaseKey(ByVal key As Keys)
           NativeMethods.keybd_event(CByte(key), 0, NativeMethods.KEYEVENTF_KEYUP, 0UI)
       End Sub

   End Class

End Namespace
'@
$vbType = Add-Type -TypeDefinition $vbCode `
                  -CodeDomProvider (New-Object Microsoft.VisualBasic.VBCodeProvider) `
                  -PassThru `
                  -ReferencedAssemblies "Microsoft.VisualBasic.dll", `
                                        "System.dll", `
                                        "System.ComponentModel.dll", `
                                        "System.Runtime.InteropServices.dll", `
                                        "System.Threading.dll", `
                                        "System.Windows.Forms.dll" `
| where { $_.IsPublic }

# # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# End of VB.NET CodeDom Provider Compiler Services Sample
# # # # # # # # # # # # # # # # # # # # # # # # # # # # #

Add-Type -AssemblyName "System.Windows.Forms"
$Keys = [System.Windows.Forms.Keys]

[Elektro.ProcessTools]::RunNotepad()
[Elektro.KeyboardTools]::PressKey($Keys::ShiftKey)
# [Elektro.KeyboardTools]::ReleaseKey($Keys::ShiftKey)


El modo de empleo es muy sencillo, abstraido de cualquier complejidad. Con el método Elektro.ProcessTools.RunNotepad() se ejecuta una nueva instancia del proceso Notepad.exe (o el hijack correspondiente que haya definido en el sistema) y se activa el foco de ventana. Con el método Elektro.KeyboardTools.PressKey(Keys) se simula una pulsación del teclado de la tecla que deseemos (la tecla se mantendrá pulsada), y con el método Elektro.KeyboardTools.ReleaseKey(Keys) liberamos la tecla que previamente habiamos pulsado.

Espero que te sirva de ayuda.

PD: Nótese que el miembro keybd_event de la API de Windows está considerado obsoleto, esto en realidad debería reemplazarse por la utilización de la infraestructura SENDINPUT, sin embargo la implementación de los miembros necesarios habría extendido el código de ejemplo en varios cientos de lineas, así que simplemente lo he preferido hacer así como una decisión de diseño y simplificación; esto es tan solo un ejemplo ordinario y funcional, no una solución optimizada.

Saludos