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

#3581
Traigo buenas noticias, he probado a hacer la captura con SharpDX y funciona de maravilla :). He usado el mismo ejemplo que el de GitHub, si necesitas ayuda con eso lo traduciré a VB.NET y te mostraré una función de uso genérico (hoy o mañana).

Saludos!
#3582
Foro Libre / Re: Tengo un lio de mil demonios
2 Julio 2016, 20:15 PM
Cita de: GreenTick en 25 Junio 2016, 03:00 AMMi primer consejo; es que empapeles toda tu casa de papel de aluminio para que no te puedan entrar conexiones de fuera..

Cita de: EFEX en  2 Julio 2016, 19:55 PMPor fin nos ponemos técnicos., Deberias de poner a prueba lo que escribio kub0x, tomate una semanas para realizarlo y nos cuentas.

Allá cada uno con su técnica de anti control mk-ultra, pero yo pienso que lo de forrar las paredes de la casa con papel de aluminio es mucho más efectivo, eso sí, tiene que ser aluminio foil (Tin Foil), que el normal es muy tóxico. Además, conserva muy bien los cultivos de María. 2x1.

Saludos!
#3583
Software / Re: SIGUEN PROBLEMAS SKYPE
2 Julio 2016, 20:04 PM
Cita de: Andrea120205 en  2 Julio 2016, 04:42 AMdos de mis contactos se borran solos los vuelvo agregar y a los cinco minutos vuelven a borrarse

Esto no pasaba con el MSN.


...¿Por qué, Microsoft?, ¿¡POR QUÉ!?.
#3584
Cita de: TrashAmbishion en  2 Julio 2016, 06:20 AMNo se si habras usando el programa FRAPS es que el uso para hacer capturas y grabar video de los juegos en tiempo real y funciona muy bien.

Es bueno saber que existe un programa que pueda hacerlo, intentaré investigar sobre la metodología que utiliza ese programa aunque es un programa de pago así que no creo que me digan nada al respecto :-/.

También me faltó probar otra cosa diferente; el wrapper de DirectX para .NET, SharpDX, tiene un ejemplo en GitHub para capturar imágenes, aunque no me lo he mirado detalladamente pero quizás esa sea la solución para poder tomar capturas de pantalla de juegos como este en fullscreen, quiero decir, con un algoritmo basado en DirectX.

https://github.com/sharpdx/SharpDX-Samples/blob/master/Desktop/Direct3D11.1/ScreenCapture/Program.cs

Cuando tenga un rato intentaré buscar una solución con todo eso.

Saludos
#3586
Hola.

Antes de nada:
1. Utiliza la etiqueta GeShi para formatear el código. Esto es un foro de programación.
2. Lee las normas del foro de programación.
3. Las preguntas de C# van en el subforo de .NET.




En el idioma Español, se utiliza una coma "," como separador de deciales, no un punto. Esto es importante mencionarlo por que los algoritmos de parsing de formatos de .NET Framework usan las reglas del idioma/cultura actual de la aplicación, y en una aplicación .NET el idioma o cultura por defecto es la misma que la que tenga tu sistema (donde desarrolles la app), es decir, será el idioma Español (es-ES)

Entonces, este bloque de órdenes jamás podrá funcionar como esperas, por que tú estás utilizando el separador de decimales que corresponde al idioma Inglés de EEUU (en-US):
Código (csharp) [Seleccionar]
linea = Console.ReadLine();
longitud = float.Parse(linea);
if (longitud >= 1.20 && ...


Así que cuando parseas un número como 1.25, ese número se convierte en un entero, osea que el valor que se le asignará a la variable "longitud" será 125,0.

La solución es simple: utiliza la coma para separar decimales como todo el mundo, o bien cambia la cultura de la aplicación a Inglés.

Puedes cambiar la cultura en las propiedades de tu proyecto, o bien en tiempo de ejecución:
Código (csharp) [Seleccionar]
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-US");

O también puedes utilizar el overload de la función float.Parse() que toma un parámetro que derive de la interfáz IFormatProvider, el cual sirve para especificar con que formato queremos que se parsee el string:
Código (csharp) [Seleccionar]
linea = Console.ReadLine(); // 1.25
longitud = float.Parse(line, NumberStyles.Float, new CultureInfo("en-US").NumberFormat);

if ((longitud >= 1.2f) && (longitud <= 1.3f)) {
sirven += 1;
}


Saludos.
#3587
Cita de: Orubatosu en 29 Junio 2016, 20:54 PMNo, no es una nave. Cansan los que ven marcianos hasta en la sopa.

Pues a mi me cansan mucho más los que creen conocer la respuesta a cualquier cosa, incluso a aquello que desconocen por completo.

Ese tipo de gente que jamás podrá aprender, puesto que en su razonamiento ni siquiera existe la posibilidad de poder asumir que está cometiendo una equivocación.
Ese tipo de gente que ni siquiera se molestan en ver o leer supuestas pruebas que podrían hacerle darse cuenta de su equivocación y descubrir que la realiad es distinta a como ellos pensaban que era.
Ese tipo de gente que creen tener un derecho sagrado para poder burlarse de las creencias de los demás solo por que piensan que esa creencia es menos científica o menos real que la suya.
Ese tipo de gente que solo creerán lo que venga a decirles un tio vestido con una bata blanca y una etiqueta en el traje donde ponga "soy científico".

Gente como tú, para ser más exactos.




Cita de: okik en 30 Junio 2016, 20:34 PM
Pues nada, hoy toca desmontar mitos.... :P

Con Photoshop he hecho mi propia pieza de nave extraterrestre:

Esa falacia en realidad no desmonta nada, ya que supuesta y obviamente las imágenes que publica NASA y etc. no están Photoshopeadas, al menos en el sentido de agregar objetos ficticios.

Es como comparar una persona de carne y hueso con un maniquí disfrazado ...no le veo sentido, el mismo sin sentido que a este tipo de respuestas prepotentes y escépticas, sin argumento alguno.




Cita de: Judokaito en 30 Junio 2016, 06:43 AMLa NASA no me parece de fiar.

Cita de: AlbertoBSD en 30 Junio 2016, 02:02 AMno se trata de dinero, se trata de experiencia.

Os puedo asegurar yo que NASA os engaña como unos bellacos. ¿Qué argumento tengo para afirmar esto?, pues la experiencia personal de haber visto una nave alienígena más grande que el patio de un colegio (no un puntito en el cielo y a lo lejos que no se sabe lo que puede ser, no) aunque se que eso no sirve como una prueba para otra persona, y sirve más bien para calificar de loco, pero mi argumento es ese, lo crean o no, y no lo puedo cambiar.

Si algunas personas, gente común y corriente como yo han tenido la oportunidad de divisar en el cielo una nave alienígena, o si también fuese cierto como otros dicen que han tenido contacto visual o verbal con alienígenas, entonces inevitablemente eso significa que una agencia espacial como NASA que lleva una vida trabajando e investigando todo lo relacionado con la ufología, conocen la existencia de la vida alienígena, y por supuesto saben de sobra que esa vida alienígena visita y merodea por La Tierra, probablemente también saben con que propósitos, y quien sabe si incluso han mantenido contacto ellos mismos con alienígenas para pactar algún tipo de acuerdo que les beneficie.

¿La vida en Marte existe?, yo creo que es inevitable que exista vida en un planeta, quizás no exista en este preciso momento, pero... ¿es que todas las personas se han vuelto estúpidas o que pasa?, a veces parece que el exceso de escepticismo también causa una gilipollez aguda.

Me explico, a ver, La Tierra sirve como un soporte o pilar para cosechar la vida y que ésta evolucione, y La Tierra es un planeta, hasta ahí todo claro creo yo, entonces... ¿por qué debemos pensar lo contrario al mirar a otro planeta que no sea el nuestro?, si sabemos perfectamente que un planeta sirve para dar el fruto de la vida, solo que para que eso ocurra primero deben darse unas circunstancias especiales que, aunque no puedo saber si ya se habrán dado en Marte o no, pero se acabarán dando esas circunstancias para la vida dentro de unos miles o millones de años, solo se necesita TIEMPO. Por ese motivo me parece irrelevante discutir si hay vida en Marte o no la hay, o si esa vida podría ser microscópica o inteligente, por que aunque no hubiese vida ahora, en el futuro la habrá, y en otros planetas que no sean Marte habrá vida ahora mismo.

Lo que deberiamos preguntarnos es por qué motivo NASA quiere ocultar las evidencia de vida alienígena que ya conocen, sean marcianas o no, cosa que como ya os he explicado ...es información que están ocultando.

Para deducir una posible respuesta a esa pregunta, solo hay que conocer que es lo que hace mover este mundo, es decir, el maldito dinero.

Imaginaros por un momento que en Marte hay vida, y NASA lo sabe, pero no nos dice nada e intenta ocultar cualquier prueba de ello. Pero.. ¿por qué lo ocultan?. No, la pregunta debería ser... ¿por qué no deberían ocultarlo?. Reflexionemos, ¿qué es NASA?, es una empresa en términos simples, ¿y cual es la prioridad principal para cualquier empresa?, obtener beneficios, ganar dinero, hacerse rico y poderoso sin límite alguno.

Entonces, ¿qué ocurriría si un buen día NASA nos dijese que ha encontrado un lago, un mar, vida microscópica, o seres bípedos que van correteando a sus anchas en Marte? (no que ha encontrado agua cristalizada...), pues que automáticamente a ojos de los 7,125 miles de millones de personas que existimos en este planeta, la NASA se convertiría en el responsable de invertir miles de millones cada año al desarrollo de cohetes, robots, y todo tipo de tecnología para investigar ese planeta y mantener informado de todos los avances a la humanidad...probablemente de por vida, dejando de lado otros proyectos que ellos tengan de otro tipo de interés personal (ej. buscar vida en otro planeta, o buscar formas de colonizar otro planeta en mejores condiciones), probablemente de por vida también.

Dicho de otra forma: si NASA admitiesen que hay vida en Marte, se condenarían como empresa, por que las consecuencias de no seguir investigando ese planeta con vida probablemente sería la ruina como consecuencia de las protestas de toda la humanidad, y hacerlo, sería igualmente otro tipo de ruina, por que no podrían darle mayor prioridad a otro tipo de investigaciones que no sean Marte.

Eso es lo que yo creo, aunque obviamente puede haber mil y una otras razones por la cual nos ocultan la existencia de vida alienígena, como por ejemplo que no cunda el caos entre ese 70% de humanos que todavía siguen creyendo en Dios, o simplemente por que a lo mejor son unos verdaderos hijos de **** que solo intentan consumir nuestras esperanzas para que pensemos que estamos solos en este Universo y manipularnos de algún modo. ¿Quien sabe el motivo?.




Cita de: okik en 30 Junio 2016, 20:34 PMVer caras y figuras donde no las hay se llama  PAREIDOLIA

Qué exista una explicación científica a un efecto óptico, no significa que la razón de todos los efectos ópticos se deban a esa razón científica. Puede haber otra razón, se llama Realidad.

Hay que tener algo más de criterio personal y mirarlo TODO con un ojo crítico, por que las pareidolias existen, por supuesto, pero la naturaleza tiene sus límites, no es capaz de formar objetos cuadrados con una geometria perfecta, con los ángulos y los lados perfectos hasta el milímetro, como por ejemplo este objeto desconocido que está ubicado en Marte:



Si negamos que eso es un objeto fabricado por un ser inteligente (y ojo, eso no implica que deba ser un objeto alienígena. Podría ser un residuo humano que se desprendió de una sonda o algo similar y se estrelló en esa zona de Marte. ), entonces debemos asumir que es mágia, si, que los dioses de las estrellas se han unido para crear una pareidolia jamás vista, y no se yo como de absurdo y "científico" suena pensar que es esto último, una pareidolia...

Pero bueno, si eso también te parece una pareidolia ...qué le vamos a hacer, cada uno que piense lo que prefiera. El mundo es un color de rosa donde todos los políticos y entidades gubernamentales miran por nuestro bien estar, donde lo único que le importa a cualquier empresa/organización es hacernos feliz ...¡cómo a la industria farmaceutica!, y no existe ni se permite la corrupción, el engaño, o la manipulación de la sociedad, ni mucho menos los auto-atentados de un país, y quien piense lo contrario a esto es un loco conspiracnoico que necesita medicación (nótese la ironía otra vez.).

La imagen original se podía ver en el siguiente enlace, y si, digo "se podía" hablando en pasado por que inexplicablemente la han reemplazado por otra fotografía, vaya por dios (¿ocultación de pruebas?, no hombre no, eso sería demasiado típico, esta vez lo habrán hecho sin querer. Nótese la ironía):

Por cierto, aquí os dejo unos videos hablando de ese cubo, donde además queda registrada la existencia de la imagen en el enlace que di arriba (que como ya he dicho, esa imagen ya no es la misma):
[youtube=640,360]https://www.youtube.com/watch?v=GD8IbMCQhS0[/youtube]     [youtube=640,360]https://www.youtube.com/watch?v=qqsc20qESLE[/youtube]

Saludos!
#3588
Cita de: DiegoAZL en  1 Julio 2016, 19:34 PMespero haberte ayudado un poco

Aunque la intención sea buena, por favor, fíjate en la fecha de publicación antes de responder un tema de hace 5 años. Está prohibido revivir temas antiguos.

Tema Cerrado
#3589
Cita de: TrashAmbishion en 30 Junio 2016, 04:06 AMConfirmado es en dependencia del tipo de juego..

Tú mismo lo has dicho. El problema está en como trabaja/renderiza ese juego en específico, Battlefield 3 (y el resto de juegos que sean similares en ese sentido).

Lo he descargado para probarlo y lo primero que me he dado cuenta es que el juego no puede trabajar a una resolución nativa de 1920x1080px, sino que trabaja en una resolución bastante menor, y entonces cuando juegas en modo fullscreen el juego reescala hasta una resolución mayor. Esto es importante, y es lo que causa que no se pueda obtener una imagen real y al tamaño esperado, por que para reescalar la pantalla se vuelve negra o se queda una imagen estática de la ventana del juego antes de ponerlo en fullscreen. Si el juego trabajase a una resolución nativa igual que la de la pantalla, entonces la imagen al menos se tomaria a pantalla completa.

He probado varios capturadores de pantalla profesionales para intentar confirmar que realmente se trata del juego y no de mi algoritmo. Estos han sido los resultados:

Primero de nada, si estando dentro del juego pulsamos la tecla "Imprimir pantalla" para dejar que Windows tome la captura, este es el resultado:

( Una imagen a 1920x1080. La parte blanca imagino que es la superfie de renderizado que el juego no puede rellenar, al no trabajar a esa resolución. )

Esta imagen fue tomada con WinSnap, una captura de pantalla con retardo de 10 segundos, estando dentro del juego. Exactamente el mismo resultado que una captura de Windows:


Esta es una imagen tomada con ElektroKit, el resultado fue exactamente el mismo:


El código utilizado fue este:
Código (vbnet) [Seleccionar]
Imports System.Drawing.Imaging

Imports Elektro.Application.Types
Imports Elektro.Core.IO.Enums
Imports Elektro.Imaging.Tools

Public NotInheritable Class Form1 : Inherits Form

   ' Fullscreen capture.
   Friend WithEvents HotkeyScreenshotType1 As New Hotkey(HotkeyModifiers.None, Keys.D1)

   ' BF3 window capture.
   Friend WithEvents HotkeyScreenshotType2 As New Hotkey(HotkeyModifiers.None, Keys.D2)

   Private Sub HotkeyScreenshotType1_Press(ByVal sender As Object, ByVal e As HotkeyPressEventArgs) _
   Handles HotkeyScreenshotType1.Press

       Static imgIndex As Integer = 0
       Dim path As String = String.Format(".\Fullscreen_{0:00}.png", Interlocked.Increment(imgIndex))

       Using screenshot As Image = ImageUtil.TakeScreenshotFromDesktop(includeMouse:=False)
           screenshot.Save(path, ImageFormat.Png)
       End Using
       ' Process.Start(path)

   End Sub

   Private Sub HotkeyScreenshotType2_Press(ByVal sender As Object, ByVal e As HotkeyPressEventArgs) _
   Handles HotkeyScreenshotType2.Press

       Static imgIndex As Integer = 0

       Dim name As String = "bf3"
       Dim proc As Process = Process.GetProcessesByName(name).Single()
       Dim hwnd As IntPtr = proc.MainWindowHandle
       Dim path As String = String.Format(".\{0}_{1:00}.png", name, Interlocked.Increment(imgIndex))

       Using screenshot As Image = ImageUtil.TakeScreenshotFromObject(hwnd, includeMouse:=False)
           screenshot.Save(path, ImageFormat.Png)
       End Using
       ' Process.Start(path)

   End Sub

End Class





No creo que pueda haber una solución "directa" a este tipo de problema. Sabiendo que la resolución nativa de ese juego es 1280x720px, lo único que se me ocurre que puedes hacer es recortar la imagen para eliminar la superficie o canvas blanco, y redimensionar la imagen cortada.

El siguiente código producirá esta imagen a 1920x1080p o la resolución que sea tu pantalla...:


Código (vbnet) [Seleccionar]
Imports System.Drawing.Imaging

Imports Elektro.Application.Types
Imports Elektro.Core.IO.Enums
Imports Elektro.Imaging.Extensions.Image
Imports Elektro.Imaging.Tools

Public NotInheritable Class Form1 : Inherits Form

   Friend WithEvents HotkeyScreenshot As New Hotkey(HotkeyModifiers.None, Keys.D0)

   Private Sub HotkeyScreenshot_Press(ByVal sender As Object, ByVal e As HotkeyPressEventArgs) _
   Handles HotkeyScreenshot.Press

       Static imgIndex As Integer = 0

       Dim procName As String = "bf3"
       Dim proc As Process = Process.GetProcessesByName(procName).Single()
       Dim hwnd As IntPtr = proc.MainWindowHandle
       Dim gameRes As New Size(1280, 720)
       Dim scr As Screen = Screen.PrimaryScreen
       Dim path As String = String.Format(".\{0}_{1:00}.png", procName, Interlocked.Increment(imgIndex))

       If (scr.Bounds.Width > gameRes.Width) AndAlso (scr.Bounds.Height > gameRes.Height) Then
           Using screenshot As Image = ImageUtil.TakeScreenshotFromRegion(scr.Bounds, includeMouse:=True),
                 cutted As Image = screenshot.Cut(gameRes.Width, gameRes.Height, 0, 0),
                 resized As Image = cutted.Resize(scr.Bounds.Size)

               resized.Save(path, ImageFormat.Png)
           End Using

       Else
           Using screenshot As Image = ImageUtil.TakeScreenshotFromRegion(scr.Bounds, includeMouse:=True)
               screenshot.Save(path, ImageFormat.Png)
           End Using

       End If

       ' Process.Start(path)

   End Sub

End Class


Pero ese código de nada sirve ya que aun faltaría solucionar otro problema que no he sido capaz de lograr, ni Windows, ni el resto de capturadores profesionales: actualizar la imagen del juego.

Cuando quieras tomar una captura del juego, primero debes minimizar el juego y maximizarlo de nuevo para que se guarde una imagen (estática) del juego en ese preciso momento y la captura tome esa imagen, de lo contrario siempre tomará la misma imagen (si nunca restauraste la ventana del juego entonces no habrá imagen, será una imagen negra o blanca). Al parecer no es posible capturar una imagen real, sino la última imagen del juego cuando lo restauras de esta forma, no se si me explico, pero así es como funciona.

Saludos!
#3590
En Batch puedes hacerlo, pero aparte de ser tedioso llevarlo a cabo, un script considerado eficiente que hiciese las verificaciones necesarias probablemente resultaría en un procedimiento muy, muy lento, llegando a superar sin exagerar los 60 minutos o tal vez +90-120, en caso de que realmente sean +9 millones de archivos quizás varias horas (es dificil calcularlo a ojo, es realmente muy lento), por la lógica de filtración de archivos (incrementación, substring/regex, etc). Sin embargo, en otro lenguaje sería una tarea simple y sencilla de agrupación de archivos según "X" condición.

Supongo que el lenguaje te será indiferente ya que solo pareces querer llevar a cabo una tarea administrativa con cualquier herramienta que pueda hacerlo, esté escrita en el lenguaje que esté. Pero antes de empezar y mostrarte el código necesario (en C#/VB.NET, no Batch), para asegurarnos que todo me haya quedado claro por favor muéstrame otro ejemplo real aparte de este:
Citar00361570001.tiff
00361571002.tiff
00361572003.tiff
00361573004.tiff
00361574005.tiff
00361575006.tiff
00361576007.tiff
00361577008.tiff

Ya que, con los datos que has proporcionado, yo supongo que el siguiente grupo a mover sería algo así:
00361580001.tiff
00361581002.tiff
00361582003.tiff
00361583004.tiff
00361584005.tiff
00361585006.tiff
00361586007.tiff
00361587008.tiff


Y el siguiente podría ser este:
00361590001.tiff
00361591002.tiff
00361592003.tiff
00361593004.tiff
00361594005.tiff
00361595006.tiff
00361596007.tiff
00361597008.tiff


Es decir, que el "delimitador" virtual empezaría siempre en esta posición:

00361570001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff

00361580001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff

00361590001.tiff
*******1002.tiff
*******2003.tiff
*******3004.tiff
*******4005.tiff
*******5006.tiff
*******6007.tiff
*******7008.tiff


¿Todo esto que acabo de decir es correcto?.

Saludos