Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: sunicomi en 11 Septiembre 2012, 14:18 pm



Título: [PYTHON] 2 dudas
Publicado por: sunicomi en 11 Septiembre 2012, 14:18 pm
Buenas, estoy haciendo un programa en python cuya interfaz es la cmd de Windows. Este programa me da un texto que yo quiero que se pueda seleccionar en la cmd para copiarlo y pegarlo en otra parte. Como hago para que se habilite la opción de seleccionar texto en la cmd?

y Otra pregunta: Como se hace en Python para añadir un programa al registro de forma que se inicie cada vez que se encienda el PC.

Gracias de antemano!



Título: Re: [PYTHON] 2 dudas
Publicado por: Eleкtro en 11 Septiembre 2012, 17:49 pm
Como se hace en Python para añadir un programa al registro de forma que se inicie cada vez que se encienda el PC.

Código
  1. from _winreg import *
  2. keyVal = r'Software\Microsoft\Windows\CurrentVersion\Run'
  3. key = CreateKey(HKEY_CURRENT_USER, keyVal)
  4. SetValueEx(key, "MI PROGRAMA", 0, REG_SZ, "C:\carpeta\miprograma.exe")
  5. CloseKey(key)

--> Winreg (http://www.blog.pythonlibrary.org/2010/03/20/pythons-_winreg-editing-the-windows-registry/)



Como hago para que se habilite la opción de seleccionar texto en la cmd?

Te lo doy en forma de registro, Así practicas  :P
Código:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"QuickEdit"=dword:00000001

PD: Los cambios del modo "edición rápida" no tienen efecto hasta que abres una nueva instancia de la CMD.

EDITO: Aunque también podrías mandar el texto directamente al portapapeles, así no hay necesidad de copiar el texto manualmente...

En Batch:
Código
  1. @Echo OFF
  2. Echo elhacker.net | Clip
  3. REM ctrl + V

En Python (bajo Windows):
win32clipboard del paquete pywin32
http://sourceforge.net/projects/pywin32/

Saludos


Título: Re: [PYTHON] 2 dudas
Publicado por: sunicomi en 11 Septiembre 2012, 18:47 pm
Muchas gracias, es justo lo que estaba buscando. ahora lo pruebo todo.

EDITO: Lo único que no entiendo es el porque de la r delante de 'Software\Microsoft\Windows\CurrentVersion\Run'

Para que sirve esa r?


Título: Re: [PYTHON] 2 dudas
Publicado por: Eleкtro en 11 Septiembre 2012, 22:13 pm
Lo único que no entiendo es el porque de la r delante de 'Software\Microsoft\Windows\CurrentVersion\Run'

Para que sirve esa r?

No tiene nada que ver con winreg, Sirve para indicar que la cadena se manipule como si fuese una expresión regular

Para el ejemplo que te puse no es necesario usarlo, pero imaginate esta situación:
Código
  1. from _winreg import *
  2.  
  3. keyVal = 'Software\Microsoft\Windows\CurrentVersion\n'
  4. # La "\n" no se reconocería porque se entiende como un salto de linea en python.
  5. # Entonces tendrías que escapar el slash así:
  6. keyVal = 'Software\Microsoft\Windows\CurrentVersion\\n'
  7. # En cambio al manipularlo como expresión regular, la "\n" se reconoce sin necesidad de añadir otro slash... útil para agilizar las cosas un poco más y evitar errores en este caso:
  8. keyVal = r'Software\Microsoft\Windows\CurrentVersion\n'
  9. # Aunque por supuesto esta no es la finalidad total del uso de las expresiones regulares.
  10.  
  11. key = CreateKey(HKEY_CURRENT_USER, keyVal)
  12. SetValueEx(key, "MI PROGRAMA", 0, REG_SZ, "C:\carpeta\miprograma.exe")
  13. CloseKey(key)

info: http://docs.python.org/library/re.html

EDITO: Otro ejemplo más claro:
Código
  1. print "hola\nhola"
  2. print r"adios\nadios"
  3. raw_input()


Saludos.