Título: código para evitar que el computador se bloquee por inactividad Publicado por: binario010101 en 25 Octubre 2015, 04:15 am hola amigos
alguien conoce un código para evitar que el computador se bloquee por inactividad, no soy administrador del equipo para modificar esta opción, así que creo necesitar algo que emule click o pulsaciones de letras para evitar que se bloquee el equipo, alguna idea? gracias Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: CR0N0S en 4 Noviembre 2015, 22:39 pm ¿Qué sistema operativo tienes? Porqué en la mayoría puedes modificar el tiempo que tarda en cerrarse por inactividad y configurarlo en nunca. Y si no es el sistema operativo lo que te lo apaga, puedes mirar en la BIOS.
Pero si no se me ocurre que puedes crear un bucle infinito tipo: Código
[NOTA DEL MODERADOR] Usa las etiquetas GeShi para insertar código. Lee las reglas del subforo. Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: binario010101 en 5 Noviembre 2015, 02:54 am Hola amigo gracias por contestar, es un sin 7, uso un usuario de red para iniciar sesión así que no puedo modificar la configuración del pc porque tiene seguridad, puedes explicarme lo den bucle infinito ?
Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: Eleкtro en 5 Noviembre 2015, 12:22 pm Recurriendo a la APi de Windows, la función SetThreadExecutionState, supuestamente es capaz de evitar que el sistema entre en un estado IDLE (inactividad). Esta función afecta por thread o hilo.
Cita de: MSDN Enables an application to inform the system that it is in use, thereby preventing the system from entering sleep or turning off the display while the application is running. Nótese que dicha función, usándola periodicamente (mediante un "temporizador" por ejemplo) y pasándole los valores adecuados (ES_CONTINUE + ES_SYSTEM_REQUIRED + ES_AWAY_MODE_REQUIRED) simulará que el PC está en estado de sueño (Sleep). Si también quieres prevenir que la pantalla se apague, usa el valor o flag ES_DISPLAY_REQUIRED. Otra alternativa, en caso de que esa metodología no te funcionase por el motio que fuese, sería utilizar la función Win32 SendMessage para enviar el mensaje de ventana WM_POWERBROADCAST junto al prámetro (WParam) PBT_APMQUERYSUSPEND , pero esto requeriría desarrollar otro wrapper para dicha función. En caso de que SetThreadExecutionState no te funcione me pondré con la otra función de la WinAPI. Cuéntanos los resultados obtenidos. Código fuente, desarrollado en el lenguaje Visual Basic.Net: (http://i.imgur.com/8yLylHO.png) (https://github.com/ElektroStudios/VBNetSnippets/blob/master/System/Power%20Util.vb) Ejemplo de uso: ( Lo he testeado en Windows 7 x64, funciona perfectamente. ) Código
Saludos Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: CR0N0S en 5 Noviembre 2015, 14:59 pm Hola amigo gracias por contestar, es un sin 7, uso un usuario de red para iniciar sesión así que no puedo modificar la configuración del pc porque tiene seguridad, puedes explicarme lo den bucle infinito ? Básicamente es crear un programa cuya única función sea ejecutar un bucle infinito, de esta manera el equipo no está inactivo al mantener funcionando el bucle y no se apaga. El código que te puse está en C#, para una aplicación de consola. Entero sería algo así: Código
Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: Eleкtro en 5 Noviembre 2015, 15:23 pm Básicamente es crear un programa cuya única función sea ejecutar un bucle infinito, de esta manera el equipo no está inactivo al mantener funcionando el bucle y no se apaga. El código que te puse está en C#, para una aplicación de consola. Entero sería algo así: Pensar así es una equivocación, el código que has mostrado no funcionará, por que el trabajo que haga una aplicación no es lo mismo que lo que el sistema considera por "estar trabajando", donde se requiere una interacción por parte del usuario. Con un búcle infinito no conseguirás nada, a menos que asignes una señal de actividad al thread donde estás ejecutando ese búcle (o cualquier otra operación) para mantener el sistema despierto, con la función de la API que mencioné en el post de arriba. Ten en cuenta que decenas de servicios y aplicaciones de Windows, y aplicaciones de terceros que mantengas en ejecución, están siempre en segundo plano, trabajando, pero aun así el sistema se pone en estado de inactividad, ¿verdad?. Aparte de eso, hay una cosa muy importante a tener en cuenta en el código que has mostrado, y es que el bucle infinito consumira CPU hasta tal punto que pondrá al PC en un estado de estrés al realizar un trabajo tan intensivo o repetitivo, el cual no es necesario, ya que teniendo en cuenta que el tiempo mínimo para que se ponga el sistema en estado Sleep es de 1 minuto, entonces deberías detener el thread por unos 50 segundos en cada iteración del búcle para dejar descansar al PC y no consumir tantos recursos del sistema: Código
De todas formas, como ya digo esa metodología del búcle infinito es inservible para tal fin, pero lo comento para evitar malos hábitos de programación en el sentido que acabo de explicar. EDITO: Tal vez podrías probar a utilizar un búcle infinito donde simulases una pulsación de teclado o keystroke, con el método System.Windows.Forms.SendKeys.Send, pero de igual modo no creo que esto funcionase para tal fin. (no lo he comprobado) Saludos! Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: Flamer en 5 Noviembre 2015, 17:18 pm Hola binario mejor no te enredes programando lo que tu buscas se llama automatizador y aqui esta uno llamado tinytask:
(http://www.vtaskstudio.com/images/tinytask_vis.png) es el que yo uso repite todo lo que escribas, clic y movimientos del mause descarga lo aqui desde su web:http://www.vtaskstudio.com/support.php (http://www.vtaskstudio.com/support.php) Saludos Flamer y es gratuito Título: Re: código para evitar que el computador se bloquee por inactividad Publicado por: binario010101 en 7 Noviembre 2015, 18:58 pm Instalar programas no es opción por la seguridad del pc, creo que solo debe ser algo en vbs, bat o una macro en excel. Estoy intentado dejar una tarea programada desde imacros forma chre pero no funciona. Gracias
|