elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 1236
91  Programación / Scripting / Re: Conteo continuo con Batch (Ayuda) en: 9 Marzo 2024, 18:24 pm
Ese es un breve ejemplo que hice
(...)
Pero, el usuario en este caso no puede hacer nada.

Esa es la naturaleza de Batch-script. Los archivos por lotes no entienden de conceptos como hilos que trabajen de forma asincrónica realizando tareas en segundo plano sin interrumpir el flujo de la aplicación. Se puede simular algo, pero es muy limitado.

Lo que solicitas hacer, lo podrías hacer perfectamente en otro lenguaje de programación, pero no puedes hacerlo con la precisión necesaria en una herramienta tan limitada como es Batch. Y cualquier cosa que veas similar a lo que solocitas, será una mera simulación imprecisa haciendo saltos "GoTo" o "Call" entre etiquetas u otras formas muy enrevesadas que se me ocurren, por ejemplo, mediante la ejecución de un script adicional que vaya guardando el tiempo transcurrido en segundos en un archivo intermediario de texto plano, y desde el script principal simplemente lees el contenido del archivo intermediario para obtener los segundos transcurridos...

Aquí abajo te muestro un ejemplo de esa metodología.

De esta forma se logra evitar la interrupción de la ejecución del script principal, pero no esperes precisión en términos de mostrar segundo a segundo (1+1) en pantalla. Y además, tiene sus complicaciones, ya que el archivo intermediario puede estar en uso, siendo escrito por el script adicional, al mismo tiempo que se intenta leer desde el script principal, causando errores (que se pueden silenciar) y mayor imprecisión causando 1 segundo de retraso cada vez que no se pueda leer el archivo, o que el archivo contenga el mismo valor por que el script adicional todavía no haya completado el intervalo de 1 segundo (del comando TIMEOUT) para escribir el nuevo valor en el archivo intermediario.

Con el comando SETX para crear variables de entorno y el modificador /F para extraer el valor desde un archivo de texto, también se puede hacer algo parecido, pero sería incluso más enrevesado.

Este tipo de cosas no son para intentar hacerlas en Batch, insisto. Quizás haya una metodología más eficiente que esta, pero no creo que merezca la pena investigar siendo Batch.

Por último, te muestro el ejemplo:

Timer.cmd
Código
  1. @Echo Off
  2.  
  3. (ECHO+)>"%TEMP%\ElapsedSeconds.tmp"
  4. FOR /L %%# IN (1, 1, 9999999) DO (
  5. (
  6. TIMEOUT /T 1 /NOBREAK
  7.     ECHO:%%#>"%TEMP%\ElapsedSeconds.tmp"
  8.    )1>NUL 2>&1
  9. )
  10.  
  11. Exit /B 0

Script Principal.cmd
Código
  1. @Echo Off
  2. SetLocal EnableDelayedExpansion
  3.  
  4. Start /B "" CMD /K "Call Timer.cmd"
  5.  
  6. SET /A "PreviousValue=0"
  7. SET /A "ElapsedSeconds=0"
  8.  
  9. FOR /L %%# IN (0, 1, 9999999) DO (
  10. (
  11. TIMEOUT /T 1 /NOBREAK
  12. FOR /F "UseBackQ Tokens=* Delims=" %%_ IN (
  13. "%TEMP%\ElapsedSeconds.tmp"
  14. ) DO (
  15. SET /A "ElapsedSeconds=%%_"
  16. )
  17. )1>NUL 2>&1
  18.  
  19. If !ElapsedSeconds! NEQ !PreviousValue! (
  20. ECHO:Elapsed Seconds: !ElapsedSeconds!
  21. SET /A "PreviousValue=!ElapsedSeconds!"
  22. )
  23. )
  24.  



Aténtamente,
Elektro.
92  Programación / Programación General / Re: Buscamos la ayuda de programadores voluntarios para proyecto de bien público en: 9 Marzo 2024, 05:54 am
¿Enviar y recibir mensajes por Whatsapp sin establecer una conexión activa a la red de Whatsapp?, eso a mi me hace explotar la cabeza. Lástima no poder ayudar.

Quizás a aquellas personas que tengan suficientes conocimientos sobre programación orientada a la telefonía móvil o la mensajería instantánea, les ayudaría saber cuales son tus preferencias o las limitaciones sobre el lenguaje de programación en el que pueda estar basada la solución / API.

¡Suerte!.
93  Sistemas Operativos / Windows / Re: Crear carpetas y subcarpetas dentro del menú contextual en: 9 Marzo 2024, 05:38 am
Como siempre me tuve que apañar de aquella manera y sigo haciéndolo, pasas por alto cambios bastante útiles y fáciles.

A veces nos acostumbramos tanto a ciertas formas de trabajar, que pasamos por alto otras posibles formas de hacer lo mismo y que podrían facilitar (o no) nuestra tarea. En este caso, no te has perdido gran cosa.



La gente en general quizás no lo sepa, pero la inmensa mayoría de programas que interactúan con el menú contextual de archivos y carpetas lo hacen registrando un archivo DLL en el sistema operativo para añadir y controlar el comportamiento de un menú. WinRAR (RarExt.dll), 7-zip (7-zip.dll) y cualquier otro programa que se nos ocurra, por que esa es la metodología a la que recurre el programador en la distribución de su programa, es decir, el desarollo de "una DLL". Pero también existe la alternativa menos compleja (la cual ya comenté) para el usuario convencional. Y el programador, para lo que se dedica hacer, que es programar, no tiene por qué conocer ni recurrir a esa alternativa que a pesar de ser menos compleja también es menos sofisticada y eficiente.

Y ya no digo más, que soy muy pesado.

¡Saludos!
94  Foros Generales / Dudas Generales / Re: Historial de shorts de YouTube en Chrome Windows en: 8 Marzo 2024, 23:56 pm
Yo igual, me revisé las opciones de configuración en youtube, y no encontré nada relevante.

@Songoku, no pierdes nada por probar lo que te dije. Es cuestión de descargar el portable, extraerlo / instalarlo, e iniciar sesión en Youtube. En menos de 5 minutos lo tienes hecho. Quizás algo si que cambie, o qizás no, da igual, es precisamente por descartar otras opciones, ya que si con el portable de portableapps también te ocurre lo mismo pues al menos se podrá asumir con mayor seguridad que no se trata de un problema aislado de la configuración de tu instalación original de Chrome en Windows.
95  Sistemas Operativos / Windows / Re: Crear carpetas y subcarpetas dentro del menú contextual en: 8 Marzo 2024, 21:05 pm
Muchas gracias. Una pregunta tonta. ¿Cómo se pone, pues, para

1. Abrir una carpeta
2. Abrir un programa
3. Abrir un archivo con un programa concreto?

De la misma forma en como lo harías de forma tradicional, es decir, agregando una subclave "command" en la clave de registro que haga referencia a la entrada del menú contextual que quieras utilizar para realizar esas acciones, y especificando el comando a llevar a cabo en el valor por defecto ("@") de esa clave.

Por ejemplo, y tomando como punto de referencia el script con el que ilustré mi respuesta anterior; para que la entrada con nombre "Sub Opción 4" inicie el notepad harías los siguientes cambios:

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
  2. "MUIVerb"="Sub Opción 4"
  3.  
  4. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  5. @="notepad.exe"

Para abrir el Explorer de Windows con el elemento/archivo/directorio seleccionado (en este caso sería una unidad de disco):

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  2. @="\"Explorer.exe\" /Select,\"%1\""

O para iniciar notepad o cualquier otro programa pasándole como argumento el elemento seleccionado (en este caso sería una unidad de disco, por lo cual no tiene mucho sentido, pero es solo un ejemplo):

Código
  1. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6\command]
  2. @="\"notepad.exe\" \"%1\""

Te aconsejo realizar las modificaciones directamente en el Regedit, y luego exportar la clave a un script de registro para evitar cometer errores de sintaxis (al escribir una ruta, por ejemplo, debes escapar el caracter "\" usando el caracter de escape, que es el mismo caracter "\", quedando así: "\\", y al escribir comillas dobles, también: "\"").

Aténtamente,
Elektro.
96  Sistemas Operativos / Windows / Re: Crear carpetas y subcarpetas dentro del menú contextual en: 8 Marzo 2024, 20:44 pm
Con la sugerencia del programa de terceros mencionado por @SonGoku ya estaba todo dicho (yo iba a proponer el mismo programa, por que al final esa es la solución más rápida, intuitiva y óptima para la mayoría de usuarios), sin embargo me veo en la obligación de contrastar cierta información incorrecta que se ha ofrecido:

En cambio para crear submenús hay que crear una dll que debe implementar ciertas interfaces, que utiliza el menú contextual. ...para lo cual hay que programar y no sé si es este tu caso, luego si con la solución que te ofrece Songoku, te basta, como usuario no te hace falta más entonces.

Debo decir que eso es incorrecto, @Serapis. Crear una extensión de shell de un controlador del menú contextual, o expresado como tu dijiste para que lo entienda mejor la gente: "un archivo DLL que implemente ciertas interfaces de programación" - eso no es una obligatoriedad, no es en absoluto un requisito, simplemente es una forma de hacerlo.

Crear menús, con todos los submenús que uno quiera y con sus correspondientes funciones para cada entrada del menú (abrir una carpeta, iniciar un programa, etc), se puede llevar a cabo manipulando el registro de Windows de forma convencional. Y no es para nada algo complejo, simplemente hay que familiarizarse con el concepto de COMANDOS, y luego ya solo es cuestión de su asignación y reutilización en las claves de los menús donde queramos añadir dichos COMANDOS.

A continuación muestro un script del Registro de Windows que creará un menú en cascada con varios submenús, que se mostrará al hacer click derecho sobre una unidad de disco:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
  4. "MUIVerb"="Menú En Cascada"
  5. "Icon"=""
  6. "Position"="Top"
  7. "SubCommands"="MenúEnCascada.Command1;MenúEnCascada.Command2"
  8.  
  9. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
  10. "MUIVerb"="Opción 1"
  11. "Icon"=""
  12. "Position"="Top"
  13.  
  14. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
  15. "MUIVerb"="Opción 2"
  16. "Icon"=""
  17. "Position"="Top"
  18. "SubCommands"="MenúEnCascada.Command3;MenúEnCascada.Command4"
  19.  
  20. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
  21. "MUIVerb"="Sub Opción 1"
  22. "Icon"=""
  23. "Position"="Top"
  24.  
  25. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
  26. "MUIVerb"="Sub Opción 2"
  27. "Icon"=""
  28. "Position"="Top"
  29. "SubCommands"="MenúEnCascada.Command5;MenúEnCascada.Command6"
  30.  
  31. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
  32. "MUIVerb"="Sub Opción 3"
  33. "Icon"=""
  34. "Position"="Top"
  35.  
  36. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]
  37. "MUIVerb"="Sub Opción 4"
  38. "Icon"=""
  39. "Position"="Top"



(Donde pone "Sub Opción 4" y "5" debería poner "3" y "4", eso fue un simple error de escritura que ya está corregido en el script del Registro de Windows de aquí arriba.)

Y un script para eliminar / deshacer las claves y valores de registro generados por el script anterior:

Código
  1. Windows Registry Editor Version 5.00
  2.  
  3. [-HKEY_CLASSES_ROOT\Drive\shell\Mi Menú]
  4. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command1]
  5. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command2]
  6. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command3]
  7. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command4]
  8. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command5]
  9. [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\MenúEnCascada.Command6]



Por último, aquí tienen además una forma ligeramente distinta de manipular el registro para llevar a cabo la misma finalidad, mediante el uso de la subclave ExtendedSubCommandsKey:

 - learn.microsoft.com - Cómo crear menús en cascada con la entrada del Registro ExtendedSubCommandsKey
 - learn.microsoft.com - How to Create Cascading Menus with the SubCommands Registry Entry
(son dos artículos con ejemplos diferentes)

Aténtamente,
Elektro.
97  Foros Generales / Dudas Generales / Re: Pegatina con licencia HP Windows 7 en: 8 Marzo 2024, 19:24 pm
Si va a abrirse un negocio entonces creo que podrá permitirse invertir alrededor de 10€-15€, que es lo que parece costar una licencia OEM de Windows 7, y alrededor de 20€ una OEM de Windows 10, para asegurar la integridad de su negocio y quitarse las preocupaciones de encima. Aquí tienes algunas:

 - Clave Win 7 Home Premium
 - Clave Win 10 Home
 - Clave Win 10 Pro

Para despejar posibles dudas:

 - (Video de Youtube) - Windows y Office - ¿Son legales las licencias de 10€? Retail vs OEM vs Pirata

Aténtamente,
Elektro.
98  Foros Generales / Foro Libre / Re: Fallece Akira Toriyama, creador de series míticas como Dragon Ball y Dr. Slump en: 8 Marzo 2024, 18:38 pm
Tuvimos la mejor infancia que se puede tener gracias a Akira Toriyama y su universo de animación plasmado en Dragon Ball, en el cual, y mediante pinceladas de humor, sirvieron de apoyo a la educación de nuestros padres para transmitirnos valores como la amistad, la compasión, la masculinidad más vigorizante con la determinación del espíritu de lucha, la búsqueda de la superación personal, la lealtad, y la importancia de proteger a los seres queridos mediante personajes emblemáticos como Son Gokuh, Piccolo, Vegetta y muchos otros.

Si echamos la vista al mundo actual, las series de animación solo parecen servir como vía de difusión para panfletos ideológicos con los que adoctrinar a los más pequeños implantándoles semillas de odio y confrontación con ciertas ideas que no se asemejan en nada a los valores tradicionales universales y conservadores compartidos a través de series de animación japonesas de antaño, como Dragon Ball.

Por eso el legado de Toriyama perdurará como una fuente de inspiración educacional y entretenimiento por los siglos de los siglos.

Descanse en paz.
99  Foros Generales / Dudas Generales / Re: Historial de shorts de YouTube en Chrome Windows en: 7 Marzo 2024, 11:41 am
¿Querrías probar a ver si te ocurre lo mismo con Chrome Portable en Windows? ( https://portableapps.com/apps/internet/google_chrome_portable )

Es el que yo utilizo, y acabo de comprobar que los shorts aparecen en el historial de Youtube.



Aunque ya hayas probado a crear un nuevo perfil, esto que propongo sería como probar Chrome "de fábrica", y de forma portable sin afectar a tu instalación actual de Chrome.

Al menos así se podría confirmar si con una instalación limpia de Chrome (portable) te funciona, y dependiendo de eso se podría asimilar que el problema podría estar relacionado con la cache o alguna extensión o algún valor de la configuración de tu instalación original de Chrome, o por lo contrario el problema tal vez podría ser con la configuración de la cuenta de usuario de Google/Youtube.

En cualqueir caso, ¡es muy raro!.
100  Programación / .NET (C#, VB.NET, ASP) / Re: Limpiar datagrid vinculado a un ObservableCollection - WPF en: 6 Marzo 2024, 17:09 pm
añadí un break; seguido de vmRutas.LimpiarRutasPatrullas(); y listo..

Hola. ¿Te das cuenta que al añadir la sentencia break para interrumpir el ciclo del bucle foreach, solamente acabarás iterando y añadiendo el primer elemento de la colección GenerarRutas.SelectedItems del DataGrid?. Usar un bucle pierde todo el sentido si añades un break de la forma en la que lo detallas, sin criterio / condición específica.

Indiferentemente de eso, el código que has mostrado es algo confuso ya que hay dos miembros con nombre idéntico donde solo cambia el orden de las palabras: PatrullasRutas y RutasPatrullas.

En cualquier caso, con el método vmRutas.LimpiarRutasPatrullas() alteras una colección eliminando todos sus elementos, lo haces en cada iteración del bucle. No hay necesidad. Simplemente mueve ese método fuera del bucle foreach y el problema se debería solucionar.

No puedes iterar una colección al mismo tiempo que la alteras añadiendo o eliminando elementos en la misma. En esos casos se puede recurrir a generar una copia de la colección original para iterar los elementos de la copia y realizar las operaciones de adición o eliminación de elementos en la original.

No manejo WPF, pero si te siguiese dando error entonces haz una copia del objeto selectedItem al añadir dicho elemento en el bucle: PatrullasRutas.Items.Add(copia de selectedItem);.

Aténtamente,
Elektro.
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines