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ú

Temas - okik

#46
Así será el cine del futuro





En lugar de usar un proyector se usará un superordenador capaz de generar escenas 3D de animación con una calidad y realismo increíbles. Las películas se visualizarán a través de gafas de realidad virtual. Los entornos y escenas estarán realizadas digitalmente por ordenador, aunque puedan incluir imágenes reales.

El espectador no interactuará como haría en un videojuego pero podrá mover su cabeza y observar el entorno. Además podrá ajustar el volumen, cambiar el idioma, subtitularla y ver información  sobre la película.


¿Cómo serán las películas?

Algunos videojuegos  usan el propio modelado del juego para representar escenas a diferencia de otros que usan vídeos cuya calidad, realismo y calidad es muy superior contrastando con la calidad real del juego.

Las películas usarán el mismo principio, se colocará al espectador (la cámara) en un lugar determinado para observar la escena y se creará un entorno 3D con personajes (modelos 3D) que representen su papel.

Las cámaras que representen los ojos del espectador que solo marcarán la posición de éste no serán estáticas siempre si no que podrán moverse con los personajes, seguirles y mostrar diferentes puntos de vista, al igual que hacen las cámaras de cine real. Además sería posible crear varias posiciones que el espectador pueda elegir.

¿Se podrán usar actores reales?
Ni idea, quizás con alguna técnica especial para ello. Sin embargo ya hemos podido ver en Avatar que la cosa no está tan lejos y que  es posible crear personajes muy realistas. Lo que seguro se hará será usar actores reales para captar movimientos físicos y faciales que se aplicarán al modelo 3D, como ya se hace en la actualidad.

También el espectador podrá ver según interese desde las perspectiva de un personaje en primera persona. Verse las manos, reflejado en el espejo, los pies.

Una nueva experiencia
Imagina moverte por fondo del mar, estar dentro de un submarino, volar, vivir en primera persona el ataque al Pearl Harbor, la Guerra del Vietnam, estar en el antiguo Egipto, estar en Marte, dentro del cuerpo humano, en la antigua Roma  o  en la nave de Alien.  Las posibilidades son infinitas y la diversión está asegurada. Todo ello con un realismo espectacular.

De hecho ya sería posible hacerlo con animaciones y entornos como los de Toy Story por ejemplo.

Seguramente se reversionarán películas actuales a este formato

El formato
Como he dicho no se usaría proyector si no un superordenador que se encargaría de ejecutar el programa y de administrar las preferencias y las vistas de los usuarios dentro del filme.

La película será un programa, al igual que un videojuego y no una serie de fotogramas uno detrás de otro como en la actualidad.

El programa del filme a diferencia de un videojuego solo ejecutará una series de instrucciones sobre raíles, es decir, no se interactúa, Simplemente se marcan una serie de sucesos en el entorno virtual, los cuales serán los mismos para todos los espectadores.
#47
Foro Libre / la religión en el cine
30 Octubre 2016, 08:58 AM
Religión en el cine:

Constantemente el cine es utilizado para hacer proselitismo. Realmente no se cual es el fin. Yo no me voy a hacer creyente por ver una imagen de una cruz cristiana o de algo con forma de cruz cristiana

Alien 3 (minuto 7)


Matrix Reloaded



Sin City




Esta imagen es curiosa porque dura apenas un segundo y realmente no aporta nada. Ya que el personaje que está leyendo la Biblia, y se han molestado de que quede bien clarito, no interviene para nada en la escena.


Realmente la lista es larga. Hay películas en las que tiene su sentido, por tema de la película pero muchísimas no. En la imagen de Alien 3 es un fotograma que apenas dura un momento y recurren a la pareidolia inducida.

En SuperMan Return,  Superman pierde el conocimiento en el espacio y pone los brazos en cruz. Prueba a dejarte caer como si perdieras el conocimiento. Para poner los brazos en cruz se requiere aplicar una fuerza y tensión a los músculos para elevar el brazo, no digo más, la imagen es buscada. De forma similar ocurre en 'Gran Torino' donde el protagonista sacrifica su vida para salvar el barrio y a su amigo de una banda callejera. En Prometheus al principio, la nave adquiere forma de cruz cristiana al verse en un determinado ángulo  y donde a finales del siglo XXI, algunos tripulantes celebran la navidad con un árbol artificial que parece sacado de los chinos, no seguí viendo el resto, así que si sale alguna referencia más no tengo ni idea.

Pero esto último son como "huevos de pascua" que para un espectador desinteresado puede pasar desapercibido. Nunca entenderé el porqué de esta manía de algunos cineastas. No se si es que la industria les obliga o qué.

También hay diálogos fuera de lugar en películas insospechadas como 'La Isla' donde se expone un debate sobre Dios y cómo los científicos 'juegan a ser Dios'. Y digo fuera de lugar porque te pintan la película como una de ciencia-ficción y acción y luego te meten la traca. Si solo fuera en esta, pero es que en películas de ciencia ficción es una constante. No se porqué.


El colmo para mí fue 'V for Vendetta' donde se repite varias veces "mi abuela decía que Dios está en la lluvia". Cortesía de l@s Herman@s Wachowski(guión). La segunda vez que se dice se ve caer una gota de lluvia empicada hacia la cara de la protagonista que recita la frase. Desde entonces cada vez que llueve me acuerdo. Me han creado una asociación que nunca olvidaré. Para mí la lluvia siempre será solo agua, pero siempre me acordaré de la maldita frase. Debería denunciarles si es que se puede o sale a cuenta.



La verdad es que la lista es larga, muy muy larga  de películas en las que no te esperas contenido religioso ya sea guión o imágenes (Doom, Iron Man 3(dudo sobre si era en la 2), World Trade Center, Sed de venganza, Piratas del Caribe: En mareas misteriosas, Star Wars, Kalifornia, Planeta Rojo, Sunshine, Alien(2/3), Señales, Ultimátum a la Tierra(lo de las langostas está basado en el Apocalipsis), Soy Layenda, y no quiero alargar más pero esto es una muestra del uso 'subliminal' de la religión en el cine. Algunas son algo sutil otras es descarado. Pueden ponerlo todo lo que quieran, resulta molesto pero al mismo tiempo, inútil.

Otras se puede perdonar pues están basadas en libros que ya incorporan este tipo de referencias como es 'La guerra de los mundos'(la voz en off del final) o Drácula (a Drácula las cruces cristianas le ciegan y le queman). Lo que no se puede perdonar son los libros.
#48
Foro Libre / Cosas que "Dios" no puede hacer
30 Octubre 2016, 08:45 AM
Dice la creencia religiosa que "Dios" todo lo puede....


¿Puede Dios crear una piedra que no pueda mover?


#49
A continuación una lista de las técnicas usadas por los comerciantes y publicistas para vender más que he podido observar.

El 2x1
Yo solo quiero uno, pero si lo quiero más barato tienes que llevarte dos, si o si. Oigan, dividan el precio, me llevo uno y pago la mitad ¿no?.  
Si dos unidades cuestan 1€ y la unidad 0,75€. ¿Cuál es  PVP real del producto?  Al comprar dos unidades el precio por unidad es 0,50€, en este caso el PVP del producto es de 0,50€. De modo que cuando compras uno te están robando 0,25€. Si es lo contrario te regalan 0,50€ ¿Crees de verdad que te van a regalar 0,50€? yo creo que no.


La oferta o bajada de precio falsa.
Aparte de lo de poner "rebajado" u "oferta" falsamente en la etiqueta o carteles. Existe el método de mediante publicidad, el hacer creer al consumidor que esa tienda  es la más barata, están tirando los precios, la casa por la ventana, no lo encontrarás  más barato. Fui una vez a cierta tienda conocida de electrodomésticos, víctima de este tipo de publicidad. Estaba  repleto de gente, en cambio  en otra no tan conocida no había prácticamente nadie. Era para comprar una lavadora. Comparé precios y la encontré más barata en la segunda y me la llevaron a casa  gratis. Hay cosas en una más caras que en la otra y viceversa, lo que hay que hacer es comparar y no dejarte engañar por la publicidad del vendedor por mucho  que te diga que no lo vas a encontrar más barato, quien sabe puede que sea cierto en algún caso, pero compruébalo antes. No te creas todo lo que te dicen.

Rebajar el primer dígito del precio para que parezca más barato; 5.99, 4,99 , 0.99, 299 y resaltar el primer díjito y reducir los decimales;  5,99 ; 23,99
Parece una tontería pero funciona. Una vez escuché a una mujer decir, -mira, solo cuesta cinco euros ...-, ponía 5,99
Incluso yo mismo he caído. Nunca leas  'cinco con... ', siempre redondea el total: 60, 300, 6. Tampoco te dejes engañar por el vendedor/a que en voz alta te va a decir este cuesta 'cincuenta y nueve'.  Ese 'cincuenta y...' resulta engañoso, nunca lo olvides en decirte a ti mismo  'sesenta', antes de comprarlo.


Resaltar el precio "rebajado" y minimizar el precio real en los cartelitos:
Esto lo vi un conocido supermercado de marca francesa. No recuerdo que fui a comprar pero vi precios increíblemente baratos, 2, 12, 35, 20, 5 en cosas que valen mucho más, me acerqué -mmm que raro...- y sorpresa:
rebajado 2€,
ahora    15€

25% más gratis.
En botes de cacao por ejemplo. Con la excusa del supuesto 25% gratis (habría que ver si en realidad lo estás pagando) es aumentar exageradamente el  tamaño del recipiente. Cuando lo abres, sobran cuatro dedos. Esos cuatro dedos de más de recipiente, en realidad es un material que lo has pagado y no sirve para nada,  solo para engañarte haciéndote creer que hay más producto de lo que tiene en realidad. Para colmo va a contribuir a generar más basura.

Recipientes diseñados para que parezcan más voluminosos
Bueno, esto lo puedes ver en casi todo. Los formas para conseguir el engaño parecen infinitos, alargar el cuello, falso fondo, recipiente más grueso de lo normal, modificación de la forma, etc.


Liquidación por jubilación/Solo hasta el X día/ Solo quedan X productos/Regalo a las primeras X llamadas, X compras/Oferta única
Consiste en presionar al consumidor (al fin y al cabo todos lo somos) haciéndole creer que es una oportunidad única, es ahora o nunca.  Cuando en realidad, seguramente volverán a hacer una oferta similar e incluso más barata.
Con respecto a la liquidación, habrán casos verdaderos pero también es cierto que hay tiendas que colocan el cartel  durante años.

Embellecer los productos más de lo que son en realidad, exagerar sus propiedades o insinuar propiedades que no tiene.
Este se puede ver continuamente en la publicidad de la TV.

Uno muy común es decir que es rico en hierro y vitaminas D y E... cuando en realidad son propiedades comunes en todos los productos de igual característica. Es como decir;  leche rica en calcio, o Agua mineral y resaltar en una etiqueta en forma de estrella - ¡CON H2O! -. De forma similar ocurre con algunos productos de higiene o  detergentes cuyos ingredientes resaltados como algo especial es común en la mayoría del  mismo tipo.

Una vez compré unos barquillos de chocolate en el Ldl en vísperas navideñas. La foto de la caja mostraba unos barquillos completamente recubiertos de chocolate negro.  Los compré, cuando llego a casa y lo abro, me encuentro que es chocolate con leche y estaban mal recubiertos, tenía una capa muy fina y por trozos se veía el barquillo  amarillo. No volví a comprar, como podéis imaginar. Pero todos los años los ponen. No habrán recibido quejas... ¿Vale la pena denunciar por una cajita que me debió  costar un euro tirando para arriba, tirando para abajo? Nadie se molesta.

En cuanto a INSINUAR PROPIEDADES que en realidad no tiene, son anuncios que utilizan expresiones como; ayuda a..., te hace sentir, favorece. Por ejemplo; - te hace sentir menos hinchada - (no te deshincha la barriga, te lo hace sentir)

Muchos productos alimenticios tiene un aspecto fantástico en TV y fotografías de promoción pero a la hora de la verdad pueden no tener una aspecto tan magnífico y mucho menos sabor.

Trucos con el fin de engañar visualmente al espectador o al subconsciente.
Como un cartel que vi una vez de comida rápida que ponía algo así: TODO POR 1 EURO, se veían unos seis productos más o menos y una flechita indicando a una  hamburguesa. El truco está en crearte la impresión de que todos los productos en conjunto valen 1€. Cualquiera con dos dedos de frente sabe que eso no es así pero... si  cuela, cuela. Se trata de uno de esas técnicas psicológicas para vender, de engañar al subconsciente. La flecha indica que es solo uno. De ese modo evitan denuncias y  pueden decir que lo indican con la flechita.

Marear al consumidor: el ratón en el laberinto
IKEA:
Aunque tengas claro que comprar o donde está lo que quieres te obligan a recorrer toda la tienda y hacer todo el recorrido o debería llamar laberinto. El objetivo  es que lo veas todo y digas - pues esto igual me hace falta - o - mira esto que chulo, me lo voy a llevar... -  y la mujer... -cari mira..., que bonito, lo podríamos poner en.... -  y te lleves más cosas de las que en  realidad tenías pensado  o teníais si vas en compañía .  Aunque hay señalización para salida de emergencia y supongo lo tienen todo en regla, en caso de ocurrir una situación de pánico y todos quieran  salir corriendo al mismo tiempo, en mi opinión, creo que se formaría un caos.

Supermecados laberínticos :
En mi ciudad hay un supermercado llamado Mercadona. Más que supermercado habría que llamarlo super laberinto. Yo creo que la idea es que te pierdas, que no encuentres lo que busques al instante y vayas directo  a caja. Al igual que IKEA, es que pases más tiempo en la tienda y acabes comprando más de la cuenta. Y si no lo hacen a posta, macho, pues que lo arreglen, porque vaya mareo. Pero cosa que dudo porque en tres que he estado, son iguales. Dos casualidad, tres ya no tanto. Si vas regularmente, te acostumbras y te lo vas aprendiendo, pero puede que al otro día no encuentres el mismo producto en el mismo sitio.

Música y sonidos
Los comerciantes pueden intentar influir en el estado de ánimo de los consumidores usando música. También sirve como forma de bloqueo mental, que impide pensar (música estridente, repetitiva, dance) o bien colocar al consumidor en una situación de relajación o falsa sensación de bienestar (música romántica o progresiva).  

- Pulsos o bits sonoros-
Consiste en producir pulsos sonoros o bits cada corto espacio de tiempo. Normalmente agudos, que distraen la mente del consumidor, interrumpiendo o entorpeciendo un proceso mental al desviar su atención hacia el sonido. Es algo similar a lo que usan los entrenadores de perros, que cuando entran en un determinado estado negativo les dan un toque para apartarles de ese estado mental.  

Ofertas variadas de servicios que parecen distintas pero que al final pagas lo mismo.
Los directivos de  operadoras de telecomunicaciones escudriñan constantemente como crear fórmulas para ofrecer lo mismo, cobrar lo mismo o más, y que tú creas que sales ganando.
Ejemplo sencillo:
1º Oferta  servicio de datos..>
5 GB datos Internet  + 1 € cada 100 Mb una vez superado el GB
Precio: 50€ mes (oferta inventada)

2º Oferta servicio de datos ..>
1 GB datos internet + 1 € cada 100 Mb una vez superado el GB
Precio: 10€ mes (oferta inventada)

La primera oferta ofrece 50€/5GB= 10€ el GB. El gigabyte sale por 10 €
Tanto en la primera como en la segunda oferta ofrecen la posibilidad de seguir conectado pero por 1€ cada  100 Mb
Teniendo en cuenta que 1GB = 1000 Mb
Precio 5GB =( (5GB * 1000Mb)* 1€)/ 100Mb = 50€
De modo que pagas igual en la primera que en la segunda. Con la segunda oferta si al final de mes has usado 5 GB de datos pagarás lo  mismo que en la primera oferta.

Las ofertas reales son mucho más complejas que esto. Es realmente difícil descomponer todo el entramado. Ellos se toman su tiempo tiene gente preparada y formada para realizar esta clase de fórmulas con el fin de ofrecer algo distinto pero que en realidad es lo mismo.  De hecho es común que dos operadoras de telefonía ofrezcan ofertas una más atractiva que la otra pero que al final pagas igual por una que por la otra.

Los vendedores y comerciantes, van a tratar de engañarte, manipularte, marearte a toda costa y sin ningún escrúpulo, por TV, Internet, revistas, periódico, etc. o en persona.  Y con una sonrisa en la cara.


Aprovechar  la ignorancia o desconocimiento del consumidor
Anuncio: ¿Te han subido el precio del seguro? ... a mi no...  SEGUROS X...  Lo que el consumidor probablemente no sepa es que el mercado de los seguros por motivos de economía y demanda están subiendo el precio para poder compensar el gasto y el servicio. SEGUROS X aprovecha sabiendo que los demás seguros están subiendo el precio para captar clientes con este truco publicitario. Pero ellos si no lo han subido ya, lo harán también.

Productos baratos en la entrada
"Gafas por 59€ sin obligación de comprar dos pares "
"Calzado deportivo de marca  35€, 42€". -Cuando normalmente pasan de los 50€-

El objetivo es atraer la atención del consumidor. Entonces entras en la tienda de óptica  pides unas gafas, te gradúan la vista y luego llega el momento de escoger la montura. Te enseñan gafas horribles que no te quedan bien ni siendo Miss Universo, luego te sacan unas 'perfectas' que te van como anillo al dedo y te quedan genial, pero que casualidad que éstas valen más caras, el doble, del precio ofertado como cebo. ¿La excusa?, que son de marca y de más calidad.

Consejo: intenta aclarar los términos de la oferta. No des por hecho nada. Que leas "Todo a 1€", no significa que todo valga un euro. Que te digan "Dos gafas por X precio" no significa que TODAS las gafas estén dentro de la oferta. Solo unas pocas monturas están dentro de dicha oferta. Lo suyo sería hacer una foto a la oferta, por listos, luego entrar y pides las que tú quieras y si te dicen "no, es que estas valen más porque...", a la oficina del consumidor, denuncia y que te las den por el precio que ofertan.

Buscas calzado deportivos, miras en una tienda: 129, 69, 89, 249, 59. Son caras, vas a otra y ves mismas marcas por 49, 42,... pero solo varias, entonces piensas - vaya precios aquí parece que valen más baratas- Entras y dices quieres esas y no te dicen cuanto valen, te preguntan el número, te las sacan, te las pruebas, dices que sí que las quieres. Entonces sacan un libro empiezan a pasar páginas y cuando las encuentran dicen cincuenta y nueve euros (60€). Pero resulta que son realmente similares, prácticamente idénticas y misma marca que las que habían en el escaparate por 49, 42...

Consejo: siempre, pregunta el precio antes de probarte nada o acordar nada. Y por supuesto no de dejes engañar por el "cincuenta y nueve" o el " dos con  noventa y nueve".  Son sesenta y tres euros  respectivamente ¡carajo!. Esa diferencia por un euro o un céntimo es para rebajar el primer dígito e inconscientemente nos parezca más barato.


El gato por liebre
Esto es muy común en tiendas de los chinos. Artículos atractivos y baratos que luego no cumplen las expectativas. Relojes digitales huecos con botones que no funcionan, herramientas hechas de un material inadecuado, bolígrafos de colores que luego  todos pintan azul, transformadores que se sobre calientan y huelen mal, productos eléctricos con enchufe frágil que se rompe al meterlo en el enchufe hembra, etc.


#50
Tengo un error número c0000374 en VS2012 tras  instalar InstallShield2010

APPCRASH
 Nombre de la aplicación: vs_professional.exe
 Versión de la aplicación: 11.0.50727.1
 Marca de tiempo de la aplicación: 4fd9f28c
 Nombre del módulo con errores: StackHash_d245
 Versión del módulo con errores: 6.1.7601.18247
 Marca de tiempo del módulo con errores: 521ea8e7
 Código de excepción: c0000374


He restaurado el sistema a un punto anterior de haber instalado InstallShield y el error continúa

No puedo desinstalar VS desde el desinstalador de Windows, también me da error.

He buscado en Internet y he borrado una clave tal según encontré como solución y tampoco funciona.

He desinstalado todo componente de Microsoft SQL y Framework  y sigue sin funcionar el desinstalador.

Antes de algunos pasos conseguí que funcionara el desinstalador por defecto pero tras reparar y reinstalar seguía sin funcionar. Ahora ya no consigo que funcione el desinstalador y me da la excepción c0000374

He pasado el CCleaner y he limpiado el registro

Solo me queda eliminarlo manualmente. Pero después de todo lo anterior no estoy seguro que cuando lo haga funciona de nuevo.

¿Alguna idea?

gracias




Lo he desinstalado manualmente y luego lo he vuelto a instalar. Ahora funciona pero no me instala todos los lenguajes de programación solo el SQL server. Ni C++. ni VB, ni C# ni nada.

#51
Ayer estuve repasando mis códigos y encontré uno viejo que tenía de ejemplo para enviar mensajes a una ventana y lo he pasado a NET. Consiste en cambiar las vistas a de los iconos del escritorio, quitar las etiquetas y ocultar.

   
Iconos Muy Grandes
Iconos Grandes
Iconos Medianos
Iconos Pequeños
Lista
Detalle
Mosaico
Contenido


Si eres de es@s que les gusta llenar el escritorio de iconos esto te vendrá de lujo, porque puedes ponerlo en modo Lista o detalle, permitiendo una forma ordenada y reduciendo notablemente el espacio y tamaño de los iconos. Esto es posible porque el lugar donde se encuentran los iconos del escritorio es en realidad el equivalente a un ListView cuyo nombre de clase es SHELLDLL_DefView.


El 'snippet' que permite esta acción es el siguiente:
Código (vbnet) [Seleccionar]

''' <summary>
''' Clase NativeMethods
''' </summary>
''' <remarks></remarks>
<System.Security.SuppressUnmanagedCodeSecurity()>
Friend NotInheritable Class NativeMethods
   Inherits Attribute
   Private Sub New()
   End Sub
   ''' <summary>
   ''' Función que devuelve el identificador de una ventana
   ''' </summary>
   ''' <param name="lpClassName">Nombre de la clase de la ventana</param>
   ''' <param name="lpWindowName">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowA", SetLastError:=True)> _
   Private Shared Function FindWindow(
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpClassName As String,
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpWindowName As String) As IntPtr
   End Function

   ''' <summary>
   ''' Recupera un identificador a una ventana cuyo nombre de clase
   ''' y nombre de la ventana que coincida con las cadenas especificadas.
   ''' La función busca en ventanas secundarias, comenzando por la raíz de la
   ''' ventana secundaria especificada. Esta función no realiza una búsqueda
   ''' entre mayúsculas y minúsculas.
   ''' </summary>
   ''' <param name="hWnd1">Un identificador de la ventana padre cuyo hijo son ventanas que se debe buscar</param>
   ''' <param name="hWnd2">Un identificador de una ventana secundaria</param>
   ''' <param name="lpsz1">El nombre de la clase o un átomo de clase creada por una llamada previa a la RegisterClass o RegisterClassEx función</param>
   ''' <param name="lpsz2">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowExA", SetLastError:=True)> _
   Private Shared Function FindWindowEx(
                                       ByVal hWnd1 As IntPtr,
                                       ByVal hWnd2 As IntPtr,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz1 As String,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz2 As String) As IntPtr

   End Function
   ''' <summary>
   ''' Envía el mensaje especificado a una ventana o ventanas.
   ''' La función SendMessagellama al procedimiento de ventana de la ventana especificada
   ''' y no vuelve hasta que el procedimiento de la ventana ha procesado el mensaje.
   ''' </summary>
   ''' <param name="hwnd">Un identificador de la ventana</param>
   ''' <param name="wMsg">El mensaje que se enviará.</param>
   ''' <param name="wParam">Información adicional-mensaje específico.</param>
   ''' <param name="lParam">Información adicional-mensaje específico.</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="SendMessageA", SetLastError:=True)> _
   Private Shared Function SendMessage(ByVal hwnd As IntPtr,
                                       ByVal wMsg As Integer,
                                       ByVal wParam As Integer,
                                       lParam As Integer) As Boolean
   End Function

   Private Const WM_COMMAND = &H111
   ''' <summary>
   ''' Valores wParam para SendMessage que cambia el estilo de visualización
   ''' del escritorio
   ''' </summary>
   ''' <remarks></remarks>
   Public Enum viewOptIcon As Integer
       vIconosMuyGrandes = &H704D
       vIconosGrandes = &H704F
       vIconosMedianos = &H704E
       vIconosPequeños = &H7050
       vLista = &H7051
       vDetalle = &H704B
       vContenido = &H7052
       vMosaico = &H704C
       vOcultarIconos = &H7073 '(no bloquea el escritorio)
       vQuitarEtiquetas = &H7037
   End Enum

   ''' <summary>
   ''' Cambia el estilo de visualización de los iconos del escritorio [by @Okik]
   ''' </summary>
   ''' <param name="intValueView">Valor wParam para SendMessage</param>
   ''' <remarks></remarks>
   Public Shared Sub ViewModeIconDesktop(ByVal intValueView As viewOptIcon)
       Dim hProgMan As IntPtr = FindWindow("Progman", "Program Manager")
       Dim hDefView As IntPtr = FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", vbNullString)
       SendMessage(hDefView, WM_COMMAND, intValueView, &H0)
   End Sub
 
End Class


Para usarlo se realiza de la forma siguiente:
Código (vbnet) [Seleccionar]
NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vLista)


Aquí dejo un código completo de ejemplo para cambiar todas las vistas:


Código (vbnet) [Seleccionar]

Imports System.Runtime.InteropServices

Public NotInheritable Class Form1 : Inherits Form
   Friend rdButton(7) As RadioButton
   Friend chkBox(1) As CheckBox
   Sub New()

       ' Llamada necesaria para el diseñador.
       InitializeComponent()

       ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
       Dim N As Integer = 10
       For Index As Integer = 0 To 7
           rdButton(Index) = New RadioButton With {.AutoSize = True, .Location = New Point(10, N)}
           N = N + 20
           AddHandler rdButton(Index).Click, AddressOf rdButton_Click
       Next Index
       rdButton(0).Text = "Iconos Muy Grandes"
       rdButton(1).Text = "Iconos Grandes"
       rdButton(2).Text = "Iconos Medianos"
       rdButton(3).Text = "Iconos Pequeños"
       rdButton(4).Text = "Lista"
       rdButton(5).Text = "Detalle"
       rdButton(6).Text = "Mosaico"
       rdButton(7).Text = "Contenido"
       rdButton(3).Checked = True

       chkBox(0) = New CheckBox With {
           .Location = New Point(10, rdButton(7).Top + 30), .AutoSize = True,
           .Text = "Ocultar/Mostrar Etiquetas (Solo en modo Icono y Detalle)"
       }
       chkBox(1) = New CheckBox With {
           .Location = New Point(10, chkBox(0).Top + 25), .AutoSize = True,
           .Text = "Ocultar/Mostrar Iconos"
       }
       For Index As Integer = 0 To 1
           AddHandler chkBox(Index).CheckedChanged, AddressOf chkBox_CheckedChanged
       Next


   End Sub
   Private Sub chkBox_CheckedChanged(sender As Object, e As EventArgs)
       Dim Index As Integer = Array.IndexOf(chkBox, sender)
       Select Case Index
           Case 0
               If chkBox(1).Checked = True Then
                   NativeMethods.ViewModeIconDesktop(NativeMethods.viewOptIcon.vQuitarEtiquetas)
               Else
                   NativeMethods.ViewModeIconDesktop(NativeMethods.viewOptIcon.vQuitarEtiquetas)
               End If

           Case 1
               If chkBox(0).Checked = True Then
                   NativeMethods.ViewModeIconDesktop(NativeMethods.viewOptIcon.vOcultarIconos)
               Else
                   NativeMethods.ViewModeIconDesktop(NativeMethods.viewOptIcon.vOcultarIconos)
               End If
       End Select


       'NOTA:
       'Ten en cuenta que esta aplicación no tiene medio para saber, al iniciarse, si el escritorio tiene
       'los iconos ocultos o no, o sin etiquetas, para establecer el valor verdadero o falso de
       'los objetos CheckBox
   End Sub
   Private Sub rdButton_Click(sender As Object, e As EventArgs)
       Dim Index As Integer = Array.IndexOf(rdButton, sender)
       Select Case Index
           Case 0 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vIconosMuyGrandes)
           Case 1 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vIconosGrandes)
           Case 2 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vIconosMedianos)
           Case 3 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vIconosPequeños)
           Case 4 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vLista)
           Case 5 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vDetalle)
           Case 6 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vContenido)
           Case 7 : NativeMethods.ViewModeIconDesktop(intValueView:=NativeMethods.viewOptIcon.vMosaico)

       End Select



   End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       For Index As Integer = 0 To 7
           Me.Controls.Add(Me.rdButton(Index))
       Next
       For Index As Integer = 0 To 1
           Me.Controls.Add(Me.chkBox(Index))
       Next
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs)

   End Sub
End Class
''' <summary>
''' Clase NativeMethods
''' </summary>
''' <remarks></remarks>
<System.Security.SuppressUnmanagedCodeSecurity()>
Friend NotInheritable Class NativeMethods
   Inherits Attribute
   Private Sub New()
   End Sub
   ''' <summary>
   ''' Función que devuelve el identificador de una ventana
   ''' </summary>
   ''' <param name="lpClassName">Nombre de la clase de la ventana</param>
   ''' <param name="lpWindowName">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowA", SetLastError:=True)> _
   Private Shared Function FindWindow(
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpClassName As String,
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpWindowName As String) As IntPtr
   End Function

   ''' <summary>
   ''' Recupera un identificador a una ventana cuyo nombre de clase
   ''' y nombre de la ventana que coincida con las cadenas especificadas.
   ''' La función busca en ventanas secundarias, comenzando por la raíz de la
   ''' ventana secundaria especificada. Esta función no realiza una búsqueda
   ''' entre mayúsculas y minúsculas.
   ''' </summary>
   ''' <param name="hWnd1">Un identificador de la ventana padre cuyo hijo son ventanas que se debe buscar</param>
   ''' <param name="hWnd2">Un identificador de una ventana secundaria</param>
   ''' <param name="lpsz1">El nombre de la clase o un átomo de clase creada por una llamada previa a la RegisterClass o RegisterClassEx función</param>
   ''' <param name="lpsz2">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowExA", SetLastError:=True)> _
   Private Shared Function FindWindowEx(
                                       ByVal hWnd1 As IntPtr,
                                       ByVal hWnd2 As IntPtr,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz1 As String,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz2 As String) As IntPtr

   End Function
   ''' <summary>
   ''' Envía el mensaje especificado a una ventana o ventanas.
   ''' La función SendMessagellama al procedimiento de ventana de la ventana especificada
   ''' y no vuelve hasta que el procedimiento de la ventana ha procesado el mensaje.
   ''' </summary>
   ''' <param name="hwnd">Un identificador de la ventana</param>
   ''' <param name="wMsg">El mensaje que se enviará.</param>
   ''' <param name="wParam">Información adicional-mensaje específico.</param>
   ''' <param name="lParam">Información adicional-mensaje específico.</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="SendMessageA", SetLastError:=True)> _
   Private Shared Function SendMessage(ByVal hwnd As IntPtr,
                                       ByVal wMsg As Integer,
                                       ByVal wParam As Integer,
                                       lParam As Integer) As Boolean
   End Function

   Private Const WM_COMMAND = &H111
   ''' <summary>
   ''' Valores wParam para SendMessage que cambia el estilo de visualización
   ''' del escritorio
   ''' </summary>
   ''' <remarks></remarks>
   Public Enum viewOptIcon As Integer
       vIconosMuyGrandes = &H704D
       vIconosGrandes = &H704F
       vIconosMedianos = &H704E
       vIconosPequeños = &H7050
       vLista = &H7051
       vDetalle = &H704B
       vContenido = &H7052
       vMosaico = &H704C
       vOcultarIconos = &H7073 '(no bloquea el escritorio)
       vQuitarEtiquetas = &H7037
   End Enum

   ''' <summary>
   ''' Cambia el estilo de visualización de los iconos del escritorio [by @Okik]
   ''' </summary>
   ''' <param name="intValueView">Valor wParam para SendMessage</param>
   ''' <remarks></remarks>
   Public Shared Sub ViewModeIconDesktop(ByVal intValueView As viewOptIcon)
       Dim hProgMan As IntPtr = FindWindow("Progman", "Program Manager")
       Dim hDefView As IntPtr = FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", vbNullString)
       SendMessage(hDefView, WM_COMMAND, intValueView, &H0)
   End Sub
 
End Class






se me olvidaba, tiene un pero y es que si se deja en modo Lista en un principio la lista se ve en modo vertical, pero  al reiniciar o cerrar sesión, la lista se extiende horizontalmente, y claro ya no queda bien. La manera de volver a conseguir la lista vertical es cambiar a modo icono, cerrar sesión y volver a establecer modo lista.

No se si alguien sabrá porque ocurre esto y si hay forma de solventarlo.

chau




Como  el estado de modo detalle no se ve alterado al reiniciar o cerrar sesión de windows, se me ha ocurrido ocultar/mostrar la barra cabecera de columnas a mi antojo, de la siguiente manera:
Código (vbnet) [Seleccionar]

  ''' <summary>
   ''' Oculta la cabecera del modo 'Detalle' del escritorio
   ''' </summary>
   ''' <param name="sH32State">Valor ncmdShow para ShowWindow// True=Hide, False=Normal </param>
   ''' <remarks></remarks>
   Public Shared Sub HideHeaderListView(ByVal sH32State As Boolean)
       Dim hProgMan As IntPtr = FindWindow("Progman", "Program Manager")
       Dim hDefView As IntPtr = FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", vbNullString)
       Dim hSysListView32 As IntPtr = FindWindowEx(hDefView, IntPtr.Zero, "SysListView32", vbNullString)
       Dim hSysHeader32 As IntPtr = FindWindowEx(hSysListView32, IntPtr.Zero, "SysHeader32", vbNullString)
       ShowWindow(hSysHeader32, Convert.ToInt32(sH32State))
   End Sub


para ocultar se llamaría así

Código (vbnet) [Seleccionar]
HideHeaderListView(True)



hoy he cambiado HideColumnListView por HideHeaderListView para evitar confusión. Ya que en realidad oculta la cabecera no la columna.

chau



6 Octubre 2016, 17:50

WorkerW
Hoy he ejecutado el código en otro ordenador con W764bits, y se me ha planteado un problema y es que este ordenador tiene el objeto Listview de nombre de clase SHELLDLL_DefView en WorkerW, y Progman no tiene ventanas "hijo".  Como resultado el snippet no funciona  :P

Resulta que hay más de una ventana con nombre de clase WorkerW. Me he tirado un buen rato intentado encontrar la manera de encontrar el correcto.  

En realidad es simple vas rastreando  en un bucle todos las ventanas hasta que des con una con hijo que tenga nombre de clase SHELLDLL_DefView.

Código (vbnet) [Seleccionar]
 ''' <summary>
   ''' Obtiene el identificador de WorkerW del escritorio
   ''' </summary>
   ''' <returns></returns>
   ''' <remarks></remarks>
   Public Shared Function GetHWorkerW() As IntPtr
       Dim ClassNameChild As New System.Text.StringBuilder(255)
       Dim hWorkerW As IntPtr
       Dim hwnd As IntPtr = FindWindow(Nothing, Nothing)
       Do While Not ClassNameChild.ToString.Equals("SHELLDLL_DefView")
           hwnd = GetNextWindow(hwnd, GW_Const.GW_HWNDNEXT)
           hWorkerW = GetWindow(hwnd, GW_Const.GW_CHILD)
           GetClassName(hWorkerW, ClassNameChild, 260)
       Loop
       Return hwnd
   End Function
   '//Otra forma de obtener el handle de WorkerW
   ' ''' <summary>
   ' ''' Obtiene el identificador de WorkerW del escritorio
   ' ''' </summary>
   ' ''' <returns></returns>
   ' ''' <remarks></remarks>
   'Public Shared Function GetHWorkerW() As IntPtr
   '    Dim ClassNameChild As New System.Text.StringBuilder(255)
   '    Dim hWorkerW As IntPtr
   '    Dim hwnd As IntPtr = FindWindow("Progman", Nothing)
   '    Do While Not ClassNameChild.ToString.Equals("SHELLDLL_DefView")
   '        hwnd = GetWindow(hwnd, GW_Const.GW_HWNDPREV)
   '        hWorkerW = GetWindow(hwnd, GW_Const.GW_CHILD)
   '        GetClassName(hWorkerW, ClassNameChild, 260)
   '    Loop
   '    Return hwnd
   'End Function



Modificando el  código quedaría así .

Código (vbnet) [Seleccionar]
''' <summary>
''' Clase NativeMethods
''' </summary>
''' <remarks></remarks>
<System.Security.SuppressUnmanagedCodeSecurity()>
Friend NotInheritable Class NativeMethods
   Inherits Attribute
   Private Sub New()
   End Sub
   ''' <summary>
   ''' Función que devuelve el identificador de una ventana
   ''' </summary>
   ''' <param name="lpClassName">Nombre de la clase de la ventana</param>
   ''' <param name="lpWindowName">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowA", SetLastError:=True)> _
   Private Shared Function FindWindow(
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpClassName As String,
                                     <MarshalAs(UnmanagedType.LPStr)> ByVal lpWindowName As String) As IntPtr
   End Function

   ''' <summary>
   ''' Recupera un identificador a una ventana cuyo nombre de clase
   ''' y nombre de la ventana que coincida con las cadenas especificadas.
   ''' La función busca en ventanas secundarias, comenzando por la raíz de la
   ''' ventana secundaria especificada. Esta función no realiza una búsqueda
   ''' entre mayúsculas y minúsculas.
   ''' </summary>
   ''' <param name="hWnd1">Un identificador de la ventana padre cuyo hijo son ventanas que se debe buscar</param>
   ''' <param name="hWnd2">Un identificador de una ventana secundaria</param>
   ''' <param name="lpsz1">El nombre de la clase o un átomo de clase creada por una llamada previa a la RegisterClass o RegisterClassEx función</param>
   ''' <param name="lpsz2">El nombre de la ventana (el título de la ventana)</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="FindWindowExA", SetLastError:=True)> _
   Private Shared Function FindWindowEx(
                                       ByVal hWnd1 As IntPtr,
                                       ByVal hWnd2 As IntPtr,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz1 As String,
                                       <MarshalAs(UnmanagedType.LPStr)> ByVal lpsz2 As String) As IntPtr

   End Function
   ''' <summary>
   ''' Envía el mensaje especificado a una ventana o ventanas.
   ''' La función SendMessagellama al procedimiento de ventana de la ventana especificada
   ''' y no vuelve hasta que el procedimiento de la ventana ha procesado el mensaje.
   ''' </summary>
   ''' <param name="hwnd">Un identificador de la ventana</param>
   ''' <param name="wMsg">El mensaje que se enviará.</param>
   ''' <param name="wParam">Información adicional-mensaje específico.</param>
   ''' <param name="lParam">Información adicional-mensaje específico.</param>
   ''' <returns></returns>
   ''' <remarks></remarks>
   <DllImport("user32", EntryPoint:="SendMessageA", SetLastError:=True)> _
   Private Shared Function SendMessage(ByVal hwnd As IntPtr,
                                       ByVal wMsg As Integer,
                                       ByVal wParam As Integer,
                                       lParam As Integer) As Boolean
   End Function

   <DllImport("user32.dll")> _
   Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Boolean
   End Function

   Private Const WM_COMMAND = &H111
   ''' <summary>
   ''' Valores wParam para SendMessage que cambia el estilo de visualización
   ''' del escritorio
   ''' </summary>
   ''' <remarks></remarks>
   Public Enum viewOptIcon As Integer
       vIconosMuyGrandes = &H704D
       vIconosGrandes = &H704F
       vIconosMedianos = &H704E
       vIconosPequeños = &H7050
       vLista = &H7051
       vDetalle = &H704B
       vContenido = &H7052
       vMosaico = &H704C
       vOcultarIconos = &H7073 '(no bloquea el escritorio)
       vQuitarEtiquetas = &H7037
   End Enum
   Public Const GW_HWNDNEXT = 2

   <DllImport("user32", EntryPoint:="GetWindow", SetLastError:=True)> _
   Public Shared Function GetNextWindow(ByVal hwnd As IntPtr, ByVal wFlag As Integer) As IntPtr
   End Function
   <DllImport("user32", SetLastError:=True)> _
   Private Shared Function GetWindow(ByVal hwnd As IntPtr, ByVal wCmd As Integer) As IntPtr
   End Function

   <DllImport("user32.dll", CharSet:=CharSet.Auto)> _
   Private Shared Function GetClassName(ByVal hWnd As System.IntPtr, _
  ByVal lpClassName As System.Text.StringBuilder, _
  ByVal nMaxCount As Integer) As Integer
   End Function

   Public Enum GW_Const
       GW_CHILD = 5
       GW_HWNDFIRST = 0
       GW_HWNDLAST = 1
       GW_HWNDNEXT = 2
       GW_HWNDPREV = 3
       GW_MAX = 5
       GW_OWNER = 4
   End Enum
   ''' <summary>
   ''' Cambia el estilo de visualización de los iconos del escritorio [by @Okik]
   ''' </summary>
   ''' <param name="intValueView">Valor wParam para SendMessage</param>
   ''' <remarks></remarks>
   Public Shared Sub ViewModeIconDesktop(ByVal intValueView As viewOptIcon)
       Dim hProgMan As IntPtr = FindWindow("Progman", "Program Manager")
       Dim hDefView As IntPtr = FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", Nothing)

       If hDefView = IntPtr.Zero Then
           Dim hWorkerW As IntPtr = GetHWorkerW()
           hDefView = FindWindowEx(hWorkerW, IntPtr.Zero, "SHELLDLL_DefView", Nothing)
       End If
       SendMessage(hDefView, WM_COMMAND, intValueView, &H0)
   End Sub

   ''' <summary>
   ''' Oculta las cabeceras de modo 'detalle' del escritorio
   ''' </summary>
   ''' <param name="sH32State">Valor ncmdShow para ShowWindow// True=Hide, False=Normal </param>
   ''' <remarks></remarks>
   Public Shared Sub HideHeaderListView(ByVal sH32State As Boolean)
       Dim hProgMan As IntPtr = FindWindow("Progman", "Program Manager")
       Dim hDefView As IntPtr = FindWindowEx(hProgMan, IntPtr.Zero, "SHELLDLL_DefView", Nothing)
       If hDefView = IntPtr.Zero Then
           Dim hWorkerW As IntPtr = GetHWorkerW()
           hDefView = FindWindowEx(hWorkerW, IntPtr.Zero, "SHELLDLL_DefView", Nothing)
       End If
       Dim hSysListView32 As IntPtr = FindWindowEx(hDefView, IntPtr.Zero, "SysListView32", Nothing)
       Dim hSysHeader32 As IntPtr = FindWindowEx(hSysListView32, IntPtr.Zero, "SysHeader32", Nothing)
       ShowWindow(hSysHeader32, Convert.ToInt32(sH32State))
   End Sub

   ''' <summary>
   ''' Obtiene el identificador de WorkerW del escritorio
   ''' </summary>
   ''' <returns></returns>
   ''' <remarks></remarks>
   Public Shared Function GetHWorkerW() As IntPtr
       Dim ClassNameChild As New System.Text.StringBuilder(255)
       Dim hWorkerW As IntPtr
       Dim hwnd As IntPtr = FindWindow(Nothing, Nothing)
       Do While Not ClassNameChild.ToString.Equals("SHELLDLL_DefView")
           hwnd = GetNextWindow(hwnd, GW_Const.GW_HWNDNEXT)
           hWorkerW = GetWindow(hwnd, GW_Const.GW_CHILD)
            GetClassName(hWorkerW, ClassNameChild, 260)
       Loop
       Return hwnd
   End Function
   '//Otra forma de obtener el handle de WorkerW
   ' ''' <summary>
   ' ''' Obtiene el identificador de WorkerW del escritorio
   ' ''' </summary>
   ' ''' <returns></returns>
   ' ''' <remarks></remarks>
   'Public Shared Function GetHWorkerW() As IntPtr
   '    Dim ClassNameChild As New System.Text.StringBuilder(255)
   '    Dim hWorkerW As IntPtr
   '    Dim hwnd As IntPtr = FindWindow("Progman", Nothing)
   '    Do While Not ClassNameChild.ToString.Equals("SHELLDLL_DefView")
   '        hwnd = GetWindow(hwnd, GW_Const.GW_HWNDPREV)
   '        hWorkerW = GetWindow(hwnd, GW_Const.GW_CHILD)
   '        GetClassName(hWorkerW, ClassNameChild, 260)
   '    Loop
   '    Return hwnd
   'End Function
End Class



En GetHWorkerW podría devolver directamente el handle de 'SHELLDLL_DefView' y ahorrarme alguna línea. Pero lo dejo así.




#52
Hola. Ayer la lié parda añadiendo referencias a VB6, con motivo a una respuesta a otro usuario de este foro. Estuve añadiendo referencias ActiveX para probar códigos relacionados con bases de datos y SQL.

A partir de entonces me surge este problema navegando con IE (uso 3 navegadores) y con Visual Studio 2012

En IE me surgía este error:

APPCRASH ntdll.dll Exception Code: c0000005

y las referencias que añadí  en VB6 fueron estas:
Microsoft ActiveX Data Object (Multi-dimensional)
Microsoft ActiveX Data Object 2.0/2.1/2.5/2.6/2.8/6.0
Microsoft Active Server Pages Objext Library
Microsoft ADO Ext. 2.8 for DDL and Security
Microsoft DAO 2.5/3.51 Compatibility Library
Microsoft DAO 3.6 Object Library
Microsoft SQL Parser Object Library 1.0
Microsoft SQL Server Compact Control
Microsoft SQL Server Compact Edition Control



VS también me daba APPCRASH, y tras iniciar varias veces, tras varios errores, arrancó pero no podía iniciar proyecto de ningún tipo.

Solucioné el problema restaurando el sistema de Windows a un punto anterior. Vamos, no me compliqué la vida.

Pero me queda la duda de que es lo que ha ocurrido.

Según parece tiene algo que ver con el SQL.





#53
Windows / Limpiar Windows manualmente
22 Septiembre 2016, 15:35 PM
////Eliminar un programa manualmente/////:
(porque de forma predeterminada no puedes, es decir desde AGREGAR Y QUITAR PROGRAMAS  o desde el desinstalador del programa)

Tecla Windows + R, escribe REGEDIT.EXE y pulsa ENTER

Dirígete a la clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
Aquí se encuentran una serie de claves que hacen referencia a programas instalados de 32bits en sistemas de 32bits, y 64bits en sistemas de 64bits

Los programas de 32bits en sistemas de 64bits están en:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\


Por ejemplo si no puedes eliminar Firefox de 32bits, seleccionas la clave Uninstall, Selecciona en el menú Edición, la opción BUSCAR, desmarca "Claves"  y  "Valores" y deja marcado Datos  y pones "Mozilla". Entonces REGEDIT buscará a partir de Uninstall, claves que contengan datos con valor "Mozilla". Debería encontrar una similar a esta, según versión:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox 43.0.1 (x86 es-ES)

Para comprobar que el programa que queremos eliminar es el correcto pones, comprueba el valor InstallLocation que muestra el directorio donde está instalado el programa.

En el caso de Mozilla Firefox debería poner:

C:\Program Files (x86)\Mozilla Firefox

(en sistemas de 64bits con Firefox de 32bits)

C:\Program Files\Mozilla Firefox

(En sistemas de 32bits)

o también:

C:\Archivos de Programa\Mozilla Firefox


Para asegurarte más aún comprueba el valor DisplayName, muestra el nombre de la aplicación que aparece en la lista del desinstalador de programas de Windows.


Una vez estás seguro que la clave es del programa que quieres eliminar, borras la clave (por si acaso puedes exportarla a un archivo reg para poder recuperarla) y  cuando abras el desinstalador de Windows, ya no aparecerá en la lista.


Ten en cuenta que hay programas que crean varias claves. Por ejemplo Nero, crea claves para cada uno de sus componentes; Nero Vision, Nero Recode, Nero ShowTime, etc. Igualmente ocurre con Adobe Photoshop, por ejemplo.


Los programas suelen crear claves de consulta de datos o registro en el registro de Windows. Suelen estar en:


HKEY_CURRENT_USER\Software
HKEY_LOCAL_MACHINE\SOFTWARE


HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
(programas de 32bits en sistemas de 64bits)


Por ejemplo Mozilla Firefox crea esta clave:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mozilla


Se pueden borrar, sin problemas, pero recuerda que es recomendable exportar las claves antes de borrar si no se estás seguro, para restaurarlas en caso de error.

Los programas suelen crear otras claves por todo el registro, pero no siempre sabemos cuales son o si el borrarlas pueden generar problemas al sistema o no. Por ello solo muestro la clave anterior.


Pero el hecho que borres las claves y no aparezca el programa en el desinstalador de programas de Windows no significa que el programa esté desinstalado, completamente. Falta borrar los archivos que suelen estar en:

C:\Program Files\
C:\Program Files (x86)\


Por ejemplo Mozilla Firefox (32bits) en un sistama de 64bits estaría en:
C:\Program Files (x86)\Mozilla Firefox

Esta carpeta se borra y ya tendrías el programa desinstalado. Sin embargo los programas pueden crear archivos de dependencia y carpetas en otros directorios como [\system32], [\Common Files], [C:\Users\Usuario\AppData\Roaming], [C:\Users\USUARIO\AppData\Local], [C:\ProgramData]. Por ejemplo Mozilla Firefox crea:


C:\Users\USUARIO\AppData\Roaming\Mozilla
C:\Users\USUARIO\AppData\Local\Mozilla



Así que si quieres hacer una desinstalación total debes eliminar también estos archivos y carpetas de dependencia, siempre y cuando esté seguro que pertenezcan con seguridad al programa que quieres eliminar o bien no sean compartidos por otro programa que los pueda necesitar.

Una forma de saber que archivos y carpetas ha creado un programa es ver el archivo install.log, que normalmente se encuentra en la carpeta donde está instalado el programa junto al programa de desinstalación. Este archivo muestra una lista de los archivos, carpetas y algunas claves de registro creados por el programa. Si no lo encuentras haces clic con el botón derecho sobre el acceso directo del Uninstall para ver el directorio donde se encuentra y ahí debería estar el install.log

Desgraciadamente no todos los programas tienen un install.log legible con el notepad, algunos usan un formato de archivos DAT u otro tipo y otro nombre. Y otros ni siquiera lo tienen.



[////Limpiar archivos temporales/////]

Tecla Windows + R, escribes %windir%\system32\cleanmgr.exe y pulsas ENTER
   
Esto inicia el liberador de espacio en disco de Windows.

Selecciona el directorio C:

Click en Limpiar archivos del sistema

y marcas:
[v]Archivos temporales de internet
[v]Archivos de registro de instalación
[v]Papelera de reciclaje
[v]Archivos temporales
[V]Miniaturas


Si deseas eliminar las instantáneas de restauración:
Clic en 'LImpiar archivos del sistema'
Selecciona 'Más opciones'
En 'Restaurar sistema e instantáneas' pulsa 'Liberar'


Para limpiar la carpeta Temp:
Muchos programas, generan o crean multitud de archivos temporales. Hay programas de instalación empaquetados que se desempaquetan en la carpeta temporal y ejecutan la isntalación, instalan el programa pero dejan toda la basura de instalación allí. Hay incluso Updates automáticos que generan archivos gigantescos allí, que a veces quedan corruptos o a medias y ocupan un buen cacho de disco. Por eso es recomendable de vez en cuando limpiar la carpeta temporal.

-Abre notepad y pones esto:
FOR /D %%p IN (%temp%*.*) DO rmdir "%%p" /s /q
del /q %temp%\*.*
md  "%Temp%"


--Guarda como LimpiarCarpetaTemp.cmd
---Ejecuta  LimpiarCarpetaTemp.cmd

(Recomiendo cerrar todos los programas antes de limpiar la carpeta temporal)




#54
Hace tiempo que no entro aquí XD

Pero este es un problema difícil de buscar. No se ni que poner en google.

Es muy simple, cargo un formulario principal A, con X controles. Luego oculto A y libero sus controles al cargar el formulario B. Al cerrar B, se liberan los controles y eventos de B y se vuelve a mostrar el formulario A y recarga sus controles y eventos. Pero tras esto el formulario A no se cierra. Lo podría solucionar simplemente usando End. Pero no es elegante, está claro que no aplico bien el método.

Formulario 1
Código (vbnet) [Seleccionar]

Public NotInheritable Class frmMain
   Inherits Form
   Friend MyButton1 As Button

   Public Sub New()

       ' Llamada necesaria para el diseñador.
       MyClass.InitializeComponent()
       Me.MyButton1 = New Button With {
           .Text = "Show Form2",
           .Location = New Point(10, 10)
       }
       ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
       AddHandler MyButton1.Click, AddressOf MyButton1_Click
   End Sub


   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.Controls.Add(MyButton1)
       Me.Text = "frmMain"
   End Sub
   Private Sub MyButton1_Click(sender As Object, e As EventArgs)
       DisposeControls()
       Me.Hide()
       frmDialog.Show()
   End Sub

   Sub DisposeControls()
       Me.MyButton1.Dispose()
       RemoveHandler MyButton1.Click, AddressOf MyButton1_Click
   End Sub

End Class



Formulario 2
Código (vbnet) [Seleccionar]
Public NotInheritable Class frmDialog
   Inherits Form
   Friend MyButton2 As Button
   Friend fmain As New frmMain
   Public Sub New()
       ' Llamada necesaria para el diseñador.
       MyClass.InitializeComponent()
       MyButton2 = New Button With
       {
           .Text = "Show Form1",
           .Location = New Point(10, 10)
       }
       ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
       AddHandler MyButton2.Click, AddressOf MyButton2_Click
   End Sub

   Private Sub frmDialog_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
       fmain.Show()
       ' fmain.Visible=tue

   End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Me.Controls.Add(MyButton2)
       Me.Text = "frmDialog"
   End Sub
   Private Sub MyButton2_Click(sender As Object, e As EventArgs)
       DisposeControls()
       Me.Close()
   End Sub
   Sub DisposeControls()

       RemoveHandler MyButton2.Click, AddressOf MyButton2_Click
       Me.MyButton2.Dispose()
   End Sub
End Class


He probado de todo.



gracias por la ayuda



Si no libero los controles y eventos creados en el formulario A, entonces va bien. Pero deberían poderse liberar.


Código (vbnet) [Seleccionar]
Public NotInheritable Class frmMain
    Inherits Form
    Friend MyButton1 As Button

    Public Sub New()

        ' Llamada necesaria para el diseñador.
        MyClass.InitializeComponent()
        Me.MyButton1 = New Button With {
            .Text = "Show Form2",
            .Location = New Point(10, 10)
        }
        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        AddHandler MyButton1.Click, AddressOf MyButton1_Click
    End Sub


    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Controls.Add(MyButton1)
        Me.Text = "frmMain"
    End Sub
    Private Sub MyButton1_Click(sender As Object, e As EventArgs)
        DisposeControls()
        Me.Hide()
        frmDialog.Show()
    End Sub

    Sub DisposeControls()
        Me.MyButton1.Dispose()
        RemoveHandler MyButton1.Click, AddressOf MyButton1_Click
    End Sub

End Class



Código (vbnet) [Seleccionar]
Public NotInheritable Class frmDialog
    Inherits Form
    Friend MyButton2 As Button
    Public Sub New()
        ' Llamada necesaria para el diseñador.
        MyClass.InitializeComponent()
        MyButton2 = New Button With
        {
            .Text = "Show Form1",
            .Location = New Point(10, 10)
        }
        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
        AddHandler MyButton2.Click, AddressOf MyButton2_Click
    End Sub

    Private Sub frmDialog_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
        '  fmain.Show()
        frmMain.Show()

    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Controls.Add(MyButton2)
        Me.Text = "frmDialog"
    End Sub
    Private Sub MyButton2_Click(sender As Object, e As EventArgs)
        'DisposeControls()
        Me.Close()
    End Sub
    Sub DisposeControls()

        RemoveHandler MyButton2.Click, AddressOf MyButton2_Click
        Me.MyButton2.Dispose()
    End Sub
End Class

#55
Dudas Generales / Sitio para colgar fotos
19 Septiembre 2016, 11:33 AM
Hola buenas. Me pueden decir sitios para colgar fotos gratuitamente, para luego poder compartirlas con un link. ¿Cuál me recomiendan?


Supongo esta pregunta se habrá hecho muchas veces pero en el buscador encontraba como subir a este foro no como colgarlas en alguna parte.

Gracias


ups, encontré en google.

http://fotografia.about.com/od/Impresion_publicacion/tp/10-Sitios-Para-Publicar-Primera-Parte.htm
#56
Foro Libre / USB Killer ¿Qué opinas?
18 Septiembre 2016, 21:52 PM
Ha salido al mercado un pendrive que acumula energía y luego la devuelve de golpe al equipo destruyendo el equipo.




Los creadores lo vendían a fabricantes pero tras su fracaso decidieron venderlo a usuarios y lo justifican diciendo que está orientado a mejorar la seguridad.
Qué tomadura de pelo, ¿Quién va a probarlo en su equipo?


No creo que quien compre esos USB sea para probar seguridad de equipos.

Esto es como las armas de fuego. Venden armas para los servicios de seguridad, pero los malos también las usan...

Quien va a usar algo  que solo conectarlo al equipo en segundos te lo cargas. En fin, no se, ¿Qué opinas? ¿Para qué lo usarías tú?


#57
hola
Tengo un PC con Windows 10 y no escucho el altavoz interno del PC. Windows reproduce a través de altavoces externos.



El servicio Beep está iniciado.
Desde Adminstrador de dispositivos el Plug and Play Beep está activo y lo inicia el sistema.
Cuando el PC arranca se escucha un Beep, luego el altavoz funciona.
Desde Linux si que funciona

He creado un programa que genera beeps de forma automática y veo los pulsos del sonido pero no se escucha nada.

Parece que Windows desvía el sonido a los externos, aunque no tenga ninguno conectado.

gracias por la ayuda

#58
Dudas Generales / icono suspender
31 Agosto 2016, 15:06 PM
hola, ¿Qué icono definiría mejor el concepto de suspender?

Tengo varios-
-apagar con puntos suspensivos debajo
-dos barritas dentro un círculo (II) = pausa
- un reloj...

no se es que no me convence ninguno  :(

Usaré  (II)
#59
qtal, bueno pues resulta que se me ejecuta FlashUtil64_22_0_0_210_ActiveX.exe

que se encuentra en:
C:\Windows\System32\Macromed\Flash

cuando entro en elhacker.net ¿por qué?

Lo curioso es que me sale un mensaje de confirmación si deseo ejectuarlo o no y aunque responda "no permitir". Se ejecuta igual.

nada solo esta duda, de porqué ocurre, nada más, de momento lo he cambiado el nombre "FlashUtil64_22_0_0_210_ActiveX.exe.bak" para que no se ejecute.   :¬¬



por cierto me he equivocado quería preguntar en dudas generales. sorry

#60
Windows / Duda con Windows 7 pirata
25 Agosto 2016, 19:33 PM
qu tal

Me he bajado un Windows 7 pirata. La razón es que necesito comprobar una cosa con la versión Windows7 starter, pero eso no viene cuento.

Ya para empezar había un troyano detectable en el disco. que he eliminado, claro

Desde VirtualBox, inicio la instalación y  aparece un cuadro en el que puedes elegir todas las versiones de W7. Digo, bueno vale, pues para adelante y elijo W7 starter.

Cuando entro en el administrador de discos de la instalación elimino todas las particiones( porque he usado un disco virtual ya usado para otro sistema)-

Creo una nueva y sorpresa, la partición reservada que se crea ocupa nada menos que 350MB cuando deberían ser 100MB, ¿Esto es normal?.
¿no será que el buen samaritano que ha compartido el W7 este ha modificado para meter ahí algún regalo?

No se

Gracias por la ayda.



Añado que tengo el Enterprise y el Ultimate y ambos me crean 100mb. Sin embargo este crea 350 incluso cuando selecciono el Ultimate en la lista. :-\

#61
que tal como andamos. Ya no usaba vb6, pero el otro día me surgió un problema y decidí optar por usar VB6. Que sorpresa cuando veo que no lo puedo instalar en Windows 7 64bits. Primero lo intenté instalar por mi cuenta ya que en esos momentos no tenía acceso a Internet y descubrí mi propia manera, pero ya con conexión a Internet  vi que había otra manera pero no detallan algunas cosas.

La forma conocida y que se puede encontrar en internet es esta:

- Primero es ejecutar el predeterminado Setup.exe desde el CD de instalación, para iniciar el asistente de instalación. Tras aceptar los acuerdos de licencia, introducir el ID y el Usuario, aparece un mensaje de incompatibilidad:
Aplicación de 16 bits no compatible

El objetivo de iniciar el Setup.exe desde el CD de instalación, aún sabiendo que no podrá instalar, es crear unas claves en el registro (necesarias para la instalación) que también se pueden crear manualmente mediante un archivo REG:
(esta es una de las cosas que no se suele mencionar)

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\6.0\Setup]
"VsCommonDir"="C:\\Program Files (x86)\\Microsoft Visual Studio\\Common"
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\6.0\Setup\Visual Studio 98\SetupWizard]
"aspo"=dword:38395356
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\6.0\Setup\Visual Studio 98\SetupWizard-3082-ENT]
"heuristics"=hex:00,00,00,00,00,00,00,00

(tu  VS6 podría necesitar claves con valores diferentes. Se crean iniciando el Setup del CD como se ha mencionado arriba.)

- Copia el CD de VS6 (Visual Studio 6) en el disco duro; llamar la  carpeta [VS6] por ejemplo.

- Copiar el contenido de la carpeta [.\SETUP] en [.\VS6].

- Renombrar el archivo VS98ENT.STF o  VS98PRO.STF por ACMSETUP.STF.

- Ejecutar ACMSETUP.EXE como administrador.

Si aparece el mensaje 'Debe ejecutar el Asistente para la  instalación antes de ejecutar este programa de instalación'. Es porque no se han creado las claves de registro antes mencionadas.

- Selecciona todos los componentes VS6 que quieras instalar a excepción de estos dos ya que producen un error que cierran la instalación:
VISUAL STUDIO ANALIZER    (Herramientas administrativas)
VISOR DE OBJETOS OLE Y COM    (Herramientas)
(esto tampoco  se suele mencionar ¿no cuesta tanto no?)




[OTRA FORMA DE INSTALAR VS6 EN W7-64BITS]
Al final y después de todo la única razón por la cual no se puede instalar es a causa de ACMBOOT.EXE que es una aplicación de 16 bits.

No te moleste en cambiar a compatibilidad con w95/w98 o ejecutar como administrador si te sale este mensaje.
La versión de este archivo no es compatible con la versión de Windows que  está ejecutando.
Compruebe la información del sistema para ver si necesita un aversión x86(32 bits) o x64 (64 bits) del programa
y después póngase en contacto con el proveedor.


Pues manda guevos que en realidad si que se puede ejecutar. ¿Como? Modificando la aplicación y no hace falta tanta historia.

Si haces clic en ACMBOOT.EXE con le botón derecho y clicas en 'Propiedades' y  luego seleccionas 'Detalles'. Verás una serie de líneas de información sobre la aplicación:

Descripción del archivo EXE de instalación de MS
Tipo Apliación
Versión del archivo 3.1.0.1811
Nombre de producto Programa de instalación de Microsoft para Windows
Versión producto 3.01
....


Lo que hay que cambiar es:
Programa de instalación de Microsoft para Windows

por esto otro:

Microsoft Setup for Windows
Te digo como. Irónicamente necesitas abrir la aplicación ACMBOOT.EXE con  Microsoft Visual Studio C++ 6.0 y como archivo de recursos, en su defecto puedes usar algún programa que te permita acceder y modificar recursos de aplicaciones de 16bits.

-Copia todo el CD de VS6 en el disco duro

- En C++ para abrir ACMBOOT.EXE como Recursos, en el menú clicas en [ File /Open] y seleccionas [Tipo: Executable Files (Exe; dll; ocx)]  y [Open as: Resources], como se muestra en la imagen:




- Abres la 'carpeta' "Version" y haces doble clic en "1"
- Haces doble clic en [ProductName    Programa de instalación de Microsoft para Windows] para editar
- Cambia [Programa de instalación de Microsoft para Windows] por [Microsoft Setup for Windows]
- Guarda los cambios

Ahora inicia la instalación de VS6, deberías poder instalar sin problemas. Es posible que aparezca el siguiente mensaje:
Citar
Este programa tiene problemas de compatibilidad conocidos
Bla, bla, bla...
                   [Buscar una solución en línea][Ejecutar programa][Cancelar]

[ ] No volver a mostrar este mensaje

clica en  Ejecutar programa y si no quieres que te vuelva a mostrar el mensaje marca No volver a mostrar...

Y destacar como en el modo anterior:

CitarSelecciona todos los componentes VS6 que quieras instalar a excepción de estos dos ya que producen un error que cierran la instalación:
VISUAL STUDIO ANALIZER   (Herramientas administrativas)
VISOR DE OBJETOS OLE Y COM   (Herramientas)

La idea una vez modificado, es compilar todo en una imagen ISO u otro formato de imagen de  CD y así la próxima vez que instales no tienes que hacer cosas raras.

pues eso eso todo
#62
 :(que tal. pues eso, he visto que a veces en el foro pone :
usuario (+ 1 Oculto(s))

¿qué significa?

#63
que tal. Estaba creando un tutorial relacionado con la instalación de VS6 (visual studio 6) en W7 64bits, ya que los que he visto en la red no explican según que cosas.

Pues bien, resulta que el programa de instalación de VS6 necesita iniciar una aplicación de 16 bits que se llama ACMBOOT.EXE.

Al iniciar la instalación de mi VS6 en castellano muestra un mensaje de incompatibilidad al ejecutar ACMBOOT.EXE:

La versión de este archivo no es compatible con la versión de Windows que  está ejecutando.
Compruebe la información del sistema para ver si necesita un aversión x86(32 bits) o x64 (64 bits) del programa
y después póngase en contacto con el proveedor.


Resulta que en le tutorial facilito una serie de claves de registro y quiero comprobar si otro programa de instalación de VS6 genera los mismas claves de registro. Así que ejecuto una versión VS6 en inglés.

Cuál es mis sorpresa cuando la instalación se ejecuta con normalidad. Ahora resulta que ACMBOOT.EXE, también de 16 bits, creado y modificado en 1998 es ejecutable. ¿Cómo puede ser?

En lugar del mensaje anterior se muestra otro:
Citar
Este programa tiene problemas de compatibilidad conocidos
Bla, bla, bla...
                   [Buscar una solución en línea][Ejecutar programa][Cancelar]

[ ] No volver a mostrar este mensaje

Le doy a  'Ejecutar programa' y se ejecuta.

Así que tengo:
ACMBOOT.EXE de 16 bits del CD de VS6 Edición Empresarial (castellano)
ACMBOOT.EXE de 16 bits del CD de VS6 Enterprise Edition (inglés)

El primero no se puede ejecutar y el segundo sí ¿por qué?
#64
Windows / Error en Tortilla en W7-64bits
17 Agosto 2016, 16:59 PM
me sale este error:


Error in wmain(): Failed to open ToTortillaWrittenEvent (0xC000003A)

Es por un error con tortilla.sys. El sistema produce un error al crear el dispositivo tortilla y no se crea correctamente.

no encuentro solución,

gracias




añado q el error se produce en la consola de Tortilla, no es pantallazo azul ni nada de eso. No afecta a windows, simplemente es una especie de error del controlador de tortilla y se produce este error al iniciar tortilla.




Wau cuantas respuestas jaja

lo conseguí solucionar aunque no se muy bien como.

Estaba acostumbrado a que el controloador de Tortilla se instalara a la primera en XP y Vista, que usaba de  32bits, que no se si tendrá que ver.

El caso es que entré en modo de prueba, usando el comando:

bcdedit /set TESTSIGNING ON


y al reiniciar en el escritorio, abajo a la derecha pone


Modo de Prueba
Windows 7
Compilación 7601


no se si será por esto pero ahora el controlador de Tortilla no refleja conflicto y al ejecutar Tortilla.exe ya no da error.


Sí, es por eso.
Ayer desactivé la conexión de red Tortilla e inicié windows normalmente  bcdedit /set TESTSIGNING ON
Tras esto, volvía a aparecer el error y no había manera de Activar de nuevo  la conexión. Volví a establecer el 'Modo de Prueba', reinicie y ya en este modo (no confuncir con el Modo seguro o Safe Mode), podía Activar la conexión de red Tortilla.
Así que, por lo menos en mi versión de Windows para poder usarlo tengo que entrar en este modo.  :-\


chau


#65
hola. me aparece un mensaje de error cuando trato de descargar los mensajes de mediante Windows Live.

No se pueden enviar ni recibir mensajes de la cuenta Hotmail (micorreo). Para enviar y recibir mensajes en tu cuenta de Hotmail, ve a

http://hotmail.live.com en Internet o inténtalo de nuevo más tarde. Para obtener ayuda del Servicio de soporte al cliente de
Windows Live, ve a

http://support.live.com y haz clic en Windows Live Mail en la lista de servicios.

Error de servidor: 3219
Respuesta del servidor: An error occured in looking up the user's information in mserv
Servidor: 'http://mail.services.live.com/DeltaSync_v2.0.0/Sync.aspx'
Id. de error de Windows Live Mail: 0x8DE00005


Lo he estado usando hasta ahora sin problemas. Pero ayer  entré en http://login.live.com con otra cuenta. no se si tendrá que ver.

Antes he entrado en Google y todos los foros dicen lo mismo y no parece que nadie solucione el problema.  Por eso pregunto.


Lo que he hecho.
He desinstalado Windows Live
He borrado el directorio: C:\Users\nombreusuario\AppData\Local\Microsoft\Windows Live Mail
y la clave del registro: HKEY_CURRENT_USER\Software\Microsoft\Windows Mail
HKEY_CURRENT_USER\Software\Microsoft\Windows Live Mail

luego lo he vuelto a instalar y sigue dando error.

Añado que no tiene nada que ver con el Outlook, NO tengo el Office instalado en mi sistema, ni lo he tenido instalado con anterioridad.

ya añado también que he entrado http://hotmail.live.com  y he podido entrar, tras eso he iniciado Windows live e igualmente no puedo entrar.



Pues parece que el problema no está en mi compu, si no en el servidor. Ya que he probado desde otro ordenador y ocurre igual.




Encontré la razón del error (y la SOLUCIÓN) aquí:

Cómo configurar cuentas de Outlook.com con el protocolo IMAP en Windows Live Mail 2012

Recibí un mensaje de Microsoft hace días, no le hice mucho caso y lo borré.

En enlace dice...:

Citar
Microsoft está trasladando el servicio de correo Outlook.com, que también incluye las antiguas cuentas de Hotmail, Windows Live y MSN, a una infraestructura basada en Office 365. La nueva plataforma abandona el protocolo DeltaSync empleado por Windows Live Mail, de modo que esta aplicación dejará de sincronizar las cuentas configuradas como "Windows Live Hotmail" (HTTP). Microsoft envió un comunicado a los usuarios para advertirles de esta situación y animarles a adoptar las últimas versiones de Microsoft Outlook y las aplicaciones de correo de Windows 8.1 y Windows 10. .....
#66
Windows / Se acabó la privacidad con Windows 10
11 Agosto 2016, 18:20 PM
hl

He leído esto en una Web ¿Es cierto?
Si instalas Windows 10 con la configuración por defecto, Cortana registrará tu ubicación, contactos, mensajes, las webs que visitas, los lugares a dónde vas. Escuchará por el micrófono y aunque sólo quieras buscar un archivo en tu disco duro, lo hará a tráves de Internet, con Bing. Incluso aunque desactives Cortana y Bing, se seguirá enviando información personal a través de Internet.

Windows 10 no hace nada ilegal. La mayoría de los datos se recogen de forma anónima, no los vende a terceros, y todo está perfectamente especificado en el contrato de uso. Otros sistemas operativos y servicios gratuitos hacen lo mismo, o incluso van más allá. Por ejemplo iOS o Android te obligan a usar una cuenta de Apple o Google, pero Microsoft no, puedes usar otras, o ninguna.

Además la mayor parte de la recogida de datos se puede desactivar desde la configuración.

Hay que aclarar que esta actividad sólo ocurre en la versión doméstica (Home). La última actualización de Windows 10 versión Empresarial incorpora una opción que "desactiva toda la telemetría". En otras palabras, no extrae ningún dato de los ordenadores empresariales.


FUENTE:
http://computerhoy.com/noticias/software/windows-10-opiniones-seis-meses-usandolo-39811

Yo tengo una versión beta que iba a instalar en VirtualBox tras instalarle el W7 para evaluarlo y ver si me gustaba. Pero me dice que mi cpu no soporta el nx y no lo instalé.  Microsoft se piensa que podemos estar cambiando de aparato cada dos por tres. Iba a instalarlo en mi PC en otra partición (suponiendo q me deje), como he dicho para evaluarlo antes y ya no que vaya rápido y sea compatible, si no que me deje hacer las cosas que hago y usar los programas que me venga en gana XD. Tras el fracaso de Windows8 que es una ruina para PCs y portátiles no táctiles quería probar W10.

Al final conseguí instalarlo en VirtualBox tan solo tenía que activar 'Habilitar I/O Apic" y 'Habilitar PAE/NX', que normalmente nunca lo activo y por eso no se podía instalar.

Pero según voy leyendo menos me interesa y menos si voy a tener menos privacidad y si es cierto lo que dice este artículo y voy a tener que pasar horas buscando la forma de cortar y crackear windows para cortar todas estas intrusiones.

Visto lo visto, quizás sea mejor usar la versión Profesional. No entiendo esta invasión de la privacidad.

chau

#67
que tal

He desactivado el servicio Windows Update
He bloqueado los updates automáticos de programas.
He desactivado la actualización automática del antivirus

Pero veo que hay algo que usa el servicio 'Servicio de transferencia inteligente en segundo plano' a través de SVCHOST.EXE, que no para de descargar datos y datos y no se qué puede ser, solo para la descarga cuando desactivo este servicio. No hay envío de datos solo bajada. Hay envío de datos pero es proporcionalmente mucho menor.

¿Cómo puedo saber qué está usando este servicio para bajar que se yo?

gracias


#68
Que tal

Pues eso, tengo un Acer Aspire One D255 y tiene el Intel Graphics Media Accelarator 3150 for mobile pero no puedo girar la pantalla. No está disponible la opción. Ni con XP, ni con W7. He visto un vídeo en el que giran la pantalla con este laptop y con XP, no se si era fake o que, porque la opción de girarla estaba.

Me he bajado versiones nuevas desde la web de Intel, y no se pueden instalar. Antes tenía puesto W7 pero me iba lento porque le falta memoria y le puse el XP. Y Ubuntu.

La cosa es que con Ubuntu si que puedo girar la pantalla. No entiendo porque con XP, o windows 7 no puedo.

Necesito girar la pantalla porque lo uso como amplificador de guitarra con efectos y los programas no dejan maximizar y los veo incompletos debido a que la pantalla que tiene es pequeña.

Me hice un programa con Net para girar la pantalla y funciona pero no en este laptop.

¿Qué le falta?

gracias



He encontrado otro foro donde también tenían el mismo problema. Parece que no tiene solución.

https://communities.intel.com/thread/11958


Solo de me ocurre hacer un programa para capturar el Handle del programa de guitarra y habilitar le botón maximizar, o bien incrustarla en un form.





No me lo creo todavía, pero encontré la solución. Y no lo encontré en ningún foro, ni bucando en Google. El del vídeo solo mostraba como hacerlo suponendo que tuvieras la opción en las propiedades gráficas, es decir, clic botón derecho en el escritorio/Rotación....  

Se me ocurrió que si existen versiones de Laptops de Acer con la opción de activar o desactivar la rotación, debía crearse alguna clave en el registro de windows.

Busqué la entrada "Intel(R) Graphics Media Accelerator 3150", y la encontré en varias partes del registro. Pero la que interesa es esta:


HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\ialm\Device0

En esta clave tiene una lista largísima de valores. Muchas de ellas empiezan por "Display1_Enable..." o "Display2_Enable...".

Los valores que hay que crear son del tipo REGDWORD y son los siguientes:


Display1_EnableRotation
Display2_EnableRotation


Y le damos el valor "1" (sin comillas)

Realmente, los valores deben ser ser REGBINARY, pero una vez creados y activada la Rotación se cambian a REGBINARY de forma automática.

- En un archivo REG quedaría así:


Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\ialm\Device0]
"Display1_EnableRotation"=hex:01,00,00,00
"Display2_EnableRotation"=hex:01,00,00,00


El "Display2", es por si usas varios monitores.

Antes de activarlo la opción de Rotación por defecto no existe:



Antes de crear las claves los valores no hay ninguna opción para activar la rotación:

 


El registro de windows en el lugar donde deben crearse los valores:

 




Una vez se crean las claves los valores con valor 1, aparece la opción de rotación:




 



Y en las propiedades de gráficos ya aparece la opción activar la rotación, y las opciones de cambio

 


Pues eso es todo. Pero ahora me pregunto ¿Por qué no está habilitado por defecto?

De verdad no lo entiendo. Ya es ganas de tocar las bolas.

Bueno ahora cuando pones en Google, "Display1_EnableRotation" ya aparecen referencias a este truco  :¬¬

http://www.edugeek.net/forums/windows/4500-screen-rotation-intel-graphics-cards-3.html

Pero si pones cosas como el enunciado de este post, no aparece nada. Por lo menos yo no encontré.

#69
Que tal,

He intentado instalar el Wine en Ubuntu pero no hay manera  :¬¬

Comento lo que he hecho:

PRIMERO
- Desde el terminal poner:
Citarsudo apt-get install Wine 1.2 wine1.2
sudo apt-get install Wine 1.0 wine1.0
sudo apt-get install  Wine wine


Y me dice que no encuentra el paquete de wine.

SEGUNDO
- Descargar el Wine desde
http://dl.winehq.org/wine/source/1.8/wine-1.8.3.tar.bz2
comprimido en .bz2
- Descomprimirlo en /home
- Ejecutar directamente Wineinstall (sel. Ejecutar desde consola) que se encuentra en la carpeta ./wine-1.8.3/tool

Pero se produce algún error que no da tiempo ni a leer porque la consola se cierra.

TERCERO
- abrir el Terminal
- desde le terminal poner :
/home/usuario/wine-1.8.3/tools/wineinstall

Entonces me pide confirmación (Yes/No) y yo pongo Yes
Pero ahora me dice en inglés que meta el wine en el directorio  principal y luego que lo vuelva a intentar. ¿Cual es directorio  principal (main)?
Intenté copiar la carpeta del wine en /boot y /usr pero el sistema no me deja me dice que no tengo derechos o algo así.

Gracias

PD: también he probado -/configure y make pero tampoco



Si me sugieres instalar otra versión más actual de Ubuntu, te comento intenté descargar desde la página oficial el iso de ubuntu y es para amd64, y yo lo tengo instalado en un laptop con intel x86

(ubuntu tampoco me deja actualizar, dice que la versión esa versión ya no tiene soporte)
#70
Multimedia / Como descargar vídeo de una web
7 Julio 2016, 20:28 PM
Que hay

¿Cómo puedo descargar este vídeo?

En teoría se debería descargarse en mi ordenador ¿no? y luego reproducirse, pero he buscado  en el caché de Firefox y no he encontrado el archivo, lo bastante grande como para suponer que es el vídeo.

He instalado todas las extensiones que he encontrado y nada.

Los flash que detecta son pequeños y esto suponiendo que sea un flash

Video

Gracias
#71
buenas,

He instalado Windows 7 en mi portátil que por defecto traía windows vista.

Pero el Windows Update no trabaja, NO me da ningún error. Cuando lo ejecuté la primera vez me pidió actulizar a Windows Update Agent 7.6.7600.320.

Cuando trato de instalar el Net Framework 4 se queda iniciado en modo oculto y no hace nada.

Ya estoy un poco mosca porque no consigo que funcione.

Lo que más me interesa es poder instalar el Framework, pero según parece la causa que no funciones es la misma que la del Windows Update.


Una ayuda por favor.


Gracias



Windows Update se queda ahí buscando  y no hace nada porque miro la red y está  0 todo el rato..y pasan las horas y nada

#72
Hola

De nuevo me veo obligado a abrir tema porque estoy desquiziado con este problema.

Tengo un disco llamado Recovery_Disc_1 del laptop (sin lector) Acer Aspire One.

Usa el arranque WinPe, es decir tiene los archivos y carpetas

Boot (carpeta), EFI (carpeta), Sources (carpeta), Bootmgr (archivo)

Pero tiene otros no habituales como IMAGES (carpeta que contiene los paquetes de instalación del sistema), GAIA(carpeta) RCD.DAT  y RESTORE.DAT

Dentro de la carpeta SOURCES tiene el archivo  BOOT.WIM, que es el app que se enchega al arrancar.

Hasta ahí todo bien, el pendrive arranca con normalidad y ejecuta el la apliación BOOT.WIM.  Sin embargo no funciona como debería, ya que es como si no encontrara los archivos a cargar y leer en el USB y las opciones de instalación están desactivadas.

Usando un truquillo, dándole a TAB, he seleccionado un triangulito y al darle a ENTER me ha pasado al cuado siguiente, pero a la hora de instalar me dice que introduzca el CD.

Creo que el BOOT.WIM no está preparado para cargar desde un USB HDD. Ignora por completo los archivos existentes en él y busca el DVD-ROM

He usado varios programas, como RUFUS, WinSetupFromUSB, UNetbootin.

No se como hacer que BOOT.WIM crea que está arrancando desde un CD/DVD-ROM.

Creo que la clave pueden ser los archivos RCD.DAT Y RESTORE.DAT. (que son texto plano, no son binarios). Pero parece que estos archvios son ignorados.

¿Alguien a tratado con este tipo de discos con el RCD.DAT?

Ayuda,

Gracias
#73
GNU/Linux / Programación en Linux
22 Junio 2016, 14:04 PM
Hola

¿Qué lenguaje de programación puedo aprender para crear apps que funcionen en linux?

Se programar en VB y NET. Pero no busco un equivalente en Linux, sino el lenguaje más adecuado sin importar la dificultad.

Creo haber visto por ahí que es el C, hice un programa simple y no sabía ni como compilarlo, ni como abrir un proyecto  :P

Tenía archivos *.c, *.h, etc y no sabía ni como cargarlo usan Net o C++ de VB6

Graicasss




Y ya de paso preguntar que es mejor o más adecuado, C, C++, C#  , no entiendo para que sirve cada uno.

#74
llevo rato intentando averiguar que se dice en la grabación y solo encuentro las declaraciones de Fernandez Díaz.  :-[




Puse la televisión y creo que solo La Sexta, hablaba del tema en Al Rojo Vivo. En T5 creo que hablaban del pequeño Nicolas (cuando lo puse), vaya tela.

Madre mía !!! Por fin.

Aquí está:

fernandez-diaz-grabaciones-transcripciones
#75
GNU/Linux / Live USB con Linux
20 Junio 2016, 18:10 PM
Que tal

He usado Rufus para crear un live usb con linux y el Usb arranca pero se queda parado, Te sale la descripción en la parte superior, más abajo  pone "initializing..." no se que. Me pasa con varias versiones.

Creo que Rufus solo crea el arranque y nada más.

Los archivos que mete en el USB son:

boot  [carpeta]
isolinux [carpeta]
autorun.ico
autorun.inf
ldlinux.sys
livecd.sqfs
syslinux.cfg


En syslinux.cfg pone:

DEFAULT loadconfig

LABEL loadconfig
  CONFIG /isolinux/isolinux.cfg
  APPEND /isolinux/



No se si es que debo meter el contenido de la imagen ISO en la carpeta boot     o  isolinux   y modificar algo.

He buscado información en Google. Aparecen muchos tutoriales que son clones y parecen para imbéciles. Muy poca información y explican nada sobre la función de los archivos, como carga el sistema, la diferencia de cargas según los sistemas y esas cosas. Que ayudarían a un poco, la verdad.

He visto que aquí hay gente muy experta ¿Alguna idea?

Gracias

#76
Hola

Estas son las diez preguntas que en alguna ocasión me han hecho y me han dejado en estado de shock  :-X y en muchas ocasiones no he sabido que contestar, por miedo a consecuencias de algún tipo. Como no ser aceptado o ser rechazado como amistad o laboralmente.

1. ¿Con quién vives?
2. ¿Vives con tu madre?
3. ¿Tienes novia?
4. ¿Has tenido novia alguna vez?
5. ¿Has tenido relaciones?
6. ¿Tienes trabajo?
7. ¿Eres gay?
8. ¿Cuando fue la última vez que lo hiciste?
9. ¿Cuántas veces te masturbas al día?
10. ¿Tienes el SIDA?


Algunas de ellas muy recientes y ya paso de los cuarenta , lo cual no se entiende.  Y entonces  te preguntas ¿y por qué diantres me pregunta eso?

¿Con quién vives? 
Esta pregunta me la hicieron el día de ayer por la tarde (razón que me dio la idea de abrir este nuevo post). Alguien que no veía desde hacía años. Y lo primero que pregunta después del ¿Qué tal? es que con quien vivo. Alucino. ¿Vives con tu madre? Me pregunta después. Entonces me quedé en shock. -..Sí, soy Norman Bates, soy un asesino en serie y vivo con mi madre..- Debí decirle ...

¿porqué siempre la madre y qué pasa con el padre? Qué pasa ¿que si eres mayor de edad y vives con tu padre entonces ya no eres un asesino en serie o qué?.

Después me preguntó, ¿Te has casado?.  Vamos a ver, esto lo entendería de una mujer, pero de un hombre y con su mujer al lado no se entiende. No se, yo personalmente cuando me encuentro por ahí a gente que no veo desde hace tiempo no le pregunto, si se ha casado o con quien vive. A mí que más me da. Sobre todo a alguien que no recuerdo ni como se llama. La primera aunque también impertinente quizás es algo más normal, pero la segunda...

No entendí esa evaluación de mi persona...¿por qué? ¿Tengo pinta de bicho raro? pensé. Y si lo fuese ¿qué más te da? ¿qué derecho te da  a hacerme esas preguntas?


¿Tienes novia?
¿Es que está uno obligado siempre a tener novia o pareja?. O pretenden saber si eres gay. Lo cual, el hecho en sí de tener novia o estar casado con una mujer no  es garantía absoluta de heterosexualidad. Lo peor es cuando la tienes y alguien lo ponen en duda. Me ha pasado.

Además la pregunta en sí ofende. ¿Tan feo soy o indigno te tener pareja como para que me hagas la pregunta? A los 15 o 17 años se entiende pero a cierta edad, pues no.

¿Has tenido novia alguna vez? ¿Has tenido relaciones sexuales?
Bueno, estas es más humillantes y desconcertantes todavía, que la anterior. Esta me la hizo un compañero de trabajo, hace unos años, al que no conocía de nada en absoluto (y no con esas palabras). Esta si me dejó en estado de shock, porque no alcanzas a entender qué motivo le has podido dar para hacer dicha pregunta. Lo extraño es el contexto en el que ocurre y se hace esa pregunta. Donde no as dado motivos, la pregunta es directa y en frío. No conocía en nada al individuo en cuestión, y no era en situación cómica, ni de humor.


¿Tienes trabajo?
Qué manía tiene todo el mundo de saber si tienes trabajo. Y cuando lo tienes y dices que sí, te vuelven a preguntar ¿y donde trabajas?. Entonces me siento interrogado, porque yo, no suelo ser tan cotilla, ni suelo hacer ese tipo de entradas y preguntas. Tranquilo/a, ya me buscaré la vida. Si hace falta busco comida en los contenedores, no te preocupes tanto por mi estado laboral, porque cuando no tengo, pasas de mí.


¿Eres gay?
Esto me lo ha preguntado hace un par de meses un niñato de veintiún años, en un trabajo, con aire inquisitorio, como si fuera más macho que yo. Antes, no es que odiara a los gays pero me daban cierta grima. Ahora me siento identificado con ellos, me he sentido en su piel. No debe ser nada fácil que te juzguen por tu sexualidad y menos en los trabajos. (Debo aclarar que no soy afeminado, ni gesticulo afeminadamente. La pregunta era con motivos inquisitorios porque el nene era homofóbico, y no quería trabajar con gays)

Yo le contesté que no, pero luego me arrepentí de dar una respuesta, porque en mi mente le partía la cara. Lógico no lo hice, pero ganas tenía, desde luego.


¿Cuando fue la última vez que lo hiciste? o ¿Cuántas veces te masturbas al día?
Otras dos preguntas desconcertantes por sí solas. Pero a qué mente retorcida le puede interesar cuándo fue la última vez que lo hiciste o cuántas veces te masturbas al día. Que lo de "al día" ya es extraño, ¿En serio? ¿Al día?

 
¿Tienes el SIDA?
Bueno, nunca he sido de comer mucho y hasta hace poco tenía traumas intestinales casi a diario, y no hacía bien la digestión. Con lo cual siempre he sido delgado y además en sí, soy de constitución delgada.  Pues, en dos ocasiones se me ha hecho esta pregunta, pero en serio, nada de en broma.



¿Tú que contestarías? ¿Como reaccionarías? Ten encuesta que sea la cual sea la respuesta que darías, ¿Tiene el otro individuo derecho ha hacer la pregunta? y ¿Porqué la hace? Contestar seriamente es como seguirle el juego, porque no tienes porqué dar explicaciones de nada, pero aún así te ves obligado a contestar... :¬¬



#77
Hola
Tengo Android y necesito un app para escanear documentos con el móvil, y que gire las imágenes y recorte lo que sobra automáticamente. Es para utilizar con esto:

https://www.youtube.com/watch?v=SHxkdXKN5g0


Sl2



Mi móvil es un Platinum Zopo C2 (Android4.2.1)
#78
Hola
Me he dado cuenta que hay algunas páginas en la que si cuelgas algo, lo eliminas porque has detectado algún error y luego lo corriges y lo quieres volver a colgar, ya no puedes.

Me ha pasado en Yahoo y Youtube.

Colgué un video, detecté un error. Eliminé el vídeo. Corregí el error  y volví a intentar colgar el vídeo pero no hubo manera.

En los artículos de de Yahoo noticias, hay comentarios. Escribes uno, lo eliminas porque encuentras un error, pero si lo quieres volver a colgar ya no puedes.

¿Por qué?

Lo del vídeo me ha fastidiado mucho porque me ha costado mucho hacerlo

#79
Hola,

Pues aquí otra nueva duda.

No me gusta cargar demasiado de código el Form1, así que suelo poner las funciones por separado en módulos, o en módulos de clases.  El caso es que tengo un código de descarga de archivos desde un módulo y no consigo mostrar el proceso de descarga desde él.

Código (vbnet) [Seleccionar]

Imports System.Net
Module modDownloadURL
   Public Progress As String
   Private Sub DownloadProgressCallback(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
       Dim intBytes As Double = Double.Parse(e.BytesReceived.ToString()) 'Bytes recibidos
       Dim AllBytes As Double = Double.Parse(e.TotalBytesToReceive.ToString()) 'Total bytes recibidos
       Dim percentage As Double = intBytes / AllBytes * 100
       Progress = CStr(e.ProgressPercentage & (" %"))
   End Sub
   Private Sub Client_DownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
       MessageBox.Show("Descarga completada")
   End Sub

   Public Sub DownLoadFileInBackground2(ByVal address As String, ByVal strDirFile As String)
       Dim Client As WebClient = New WebClient()
       AddHandler Client.DownloadProgressChanged, AddressOf DownloadProgressCallback
       AddHandler Client.DownloadFileCompleted, AddressOf client_DownloadCompleted
       Dim uri As Uri = New Uri(address)
       Client.DownloadFileAsync(uri, strDirFile)
   End Sub
End Module


El porcentaje se carga en la variable string Progress  , y desde un botón en el formulario llamo a DownLoadFileInBackground2(url, [Dir+Namefile]) para descargar el archivo

Gracias

#80
https://apps.ubuntu.com/cat/applications/saucy/kalzium/

Que timo de página :(



Presupongo que la Web detecta si tienes instalado Ubuntu o no si no es así te pone el enlace para bajerte Ubuntu.

Pero es que precisamente tengo instalada Ubuntu en un PC sin conexión en otro lugar.
#81
Hola

Bueno, pues eso. ¿cuál es la lógica?

Vamos a ver de:
5 xor 3 devuelve 6

Según la ayuda de MSDN es porque como 5 = 101 (en binario ) y 3 = 11 pues devuelve  
110 que es el equivalente binario de 6.

En fin, menuda explicación chorra. Yo creo que el/la que lo puso no tenía ni idea. Y si la tenía, se ha explicado como por el culo. Por que ha dicho lo mismo pero con binarios.

Y luego está esto:
"Realiza una exclusión lógica entre dos expresiones de tipo Boolean o bien una exclusión bit a bit entre dos expresiones numéricas."

Más de lo mismo, es peor que el lenguaje administrativo.


Una ayudita porfa
:-(
#82
Hola

Soy emigrante de VB6 a .NET, de hecho ya me han echado la "bronca" en varias ocasiones por usar la metodología de VB6 en .NET cuando no era necesario. He visto que se puede prescindir de algunas funciones API de Windows en .NET.  El caso es que no se cuales funciones ya están incluidas en .NET o no.

Una que ahora mismo estoy buscando es el GetCursorPos, para determinar la posición X, Y del puntero en el escritorio.

Llamando así funciona:

Código (vbnet) [Seleccionar]
   
   Structure POINTAPI
       Public X As Integer
       Public Y As Integer
   End Structure
   Private Declare Function GetCursorPos Lib "user32.dll" ( _
   ByRef lpPoint As POINTAPI) As Integer



Pero parace ser que es más de '.NET' ponerlo así:

Código (vbnet) [Seleccionar]
  Public Structure POINTAPI
       Public X As Integer
       Public Y As Integer
   End Structure

 <Runtime.InteropServices.DllImport("user32.dll")> _
   Public Shared Function GetCursorPos(ByRef lpPoint As POINTAPI) As Integer
   End Function


No se, me extrañaría que los de Microsoft, al construir .NET no hubieran establacido funciones internas de .NET para todas funciones incluidas en DLLs de Windows como USER32.DLL. y no tener que hacer estas llamadas.


Saludos y gracias




Pues nada que en dicho caso parece que es lo que digo:

Código (vbnet) [Seleccionar]

'Posición X del cursor en el escritorio
  Me.Text = Cursor.Position.X


Fuente:
https://msdn.microsoft.com/es-es/library/system.windows.forms.cursor.position%28v=vs.110%29.aspx

No entiendo porqué, si como parece estoy en lo cierto, tanta gente postea y fomenta el uso de estas llamadas cuando no son necesarias

#83
buenas..

¿Hay alguna forma de eliminar elementos repetidos en un Array?


Me he hecho una función, que me ha costado, el ingeniarlo quiero decir, que es la siguiente:


Código (vbnet) [Seleccionar]
   Public Function DeleteArrayRepetitions(ByVal strArray1() As String, ByVal Sorted As Boolean) As Array
       Dim strArray2(0) As String
       Dim TempElement As String
       Dim Count1 As Integer
       Dim Count2 As Integer
       For Each TempElement In strArray1
           Count1 += 1
           If Count1 = 1 Then strArray2(0) = TempElement
           If Array.IndexOf(strArray1, TempElement, Count1) = -1 Then
               ReDim Preserve strArray2(Count2)
               strArray2(Count2) = TempElement
               Count2 += 1
           End If
       Next
       If Sorted = True Then Array.Sort(strArray2)
       Return strArray2
   End Function



Lo que hace es comprobar uno por uno los elementos del strArray1 y si no está repetido lo pasa al strArray2, hasta completar una lista sin repeticiones. Una vez el strArray2 está completo lo pasa a la función DeleteArrayRepetitions que también es un Array. Es decir, la función devuelve una lista sin repeticiones.



En un intento de reducirlo más, resulta que obtengo un código más o menos igual solo que esta vez usando Array.LastIndexOf en lugar de Array.IndexOf



Código (vbnet) [Seleccionar]
   Public Function DeleteArrayRepetitions(ByVal strArray1() As String, ByVal Sorted As Boolean) As Array
       Dim strArray2(0) As String
       Dim Count As Integer = 0
       Dim Count2 As Integer = 0
       For Each Element In strArray1
           Dim Last As Integer = Array.LastIndexOf(strArray1, Element)
           If Count = Last Then
               ReDim Preserve strArray2(Count2)
               strArray2(Count2) = Element
               Count2 += 1
           End If
           Count += 1
       Next
       If Sorted = True Then Array.Sort(strArray2)
       Return strArray2
   End Function





Para usarlo se hace los siguiente:

Código (vbnet) [Seleccionar]
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim Numbers() As String = {"1", "5", "5", "5", "4", "1", "12", "4", "55"}

'Quita los elementos repetidos
       Numbers = DeleteArrayRepetitions(Numbers, True)

'Lista los elementos del Array en un ListBox
       For Each Element In Numbers
           ListBox1.Items.Add(Element)
       Next
   End Sub


El ListBox mostrará:

1
12
4
5
55


A pesar que las funciones funcionan bien, debe haber alguna forma más sencilla, alguna función en VBNET que permita hacerlo. He probado con Array y ArrayList, pero no he visto nada.

Sl2
#84
Hola

Me gustaría saber como puedo, con VB.NET, obtener los megabytes de datos de bajada y subida a través de mi conexión de Internet.

Gracias




He encontrado este código en la ayuda de vb.net. Si se mete en un timer al entrar en una nueva web los valores aumentan, porque me da unos números que representan paquetes recibidos creo. Pero no se es esto lo que busco, ni qué representan estos valores.

Código (vbnet) [Seleccionar]
   Dim properties As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
       Dim ipstat As IPGlobalStatistics = properties.GetIPv4GlobalStatistics()
       Label1.text= "Inbound Packet Data: "  & ipstat.ReceivedPackets
       Label2.text= "Forwarded: " & ipstat.ReceivedPacketsForwarded
       Label3.text= "Delivered: " &  ipstat.ReceivedPacketsDelivered
       Label4.text= "Discarded: " &  ipstat.ReceivedPacketsDiscarded

 


https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ipglobalstatistics.receivedpackets%28v=vs.110%29.aspx




Finalmente parece que encontré la respueta:

Código (vbnet) [Seleccionar]
    Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics
       ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(0).GetIPv4Statistics
       Label6.Text = ipv4Stats.BytesReceived.ToString
       Label7.Text = ipv4Stats.BytesSent.ToString


fuente:
http://www.sevenforums.com/network-sharing/193986-question-about-packets-bytes-sent-received-n-work-connection.html

Se obtiene la misma información que aquí:



Sl2
#85
buenas
Me gustaría poder usar WebBrowser sin alojar nada en el caché. Sólo para obtener información de una página como links o código, pero sin alojar, cookies,  imágenes, scripts, etc en el disco. Es decir, que no se descargue nada en disco.

Es posible usar Webbrowser sin crear el control Webbrowser:

Código (vbnet) [Seleccionar]
Dim WB as new WebBrowser

No se si al utilizar este sistema ser alojan archivos en el disco o no.

Sl2
#86
Hola buenas,

Necesito obtener estos datos y de forma ordenada, en el mismo orden de la tabla.

Por ejemplo tengo esta tabla (que he simplificado):
Código (html4strict) [Seleccionar]
<html>
<div id="contenedor-portadilla">
<table class="TablaPaises" id="calsificacion_completa">
<thead>
<tr class="Estadistica">
<th colspan="2" class="sinfondo">&nbsp;</th>
<th colspan="1">Totales</th>
</tr>
</thead>
<tbody><tr>
<td class="Num">1</td>
<td class="Pais">España</td>
</tr>
<tr>
<td class="Num">2</td>
<td class="Pais">Portugal</td>
</tr>
</tbody></table></html>


Quedaría así:

   Totales
1 España
2 Portugal


Lo he intentado cargando la página en  webbrowser y usando webbrowser.document ... y sus propiedades, el tagname, y eso pero solo he conseguido un listado del <td> sin ningún orden y todo mezclado.

yo quiero poder conseguir los datos a voluntad para mostrarlo en un ListView


Agradezco cualquier ayuda.

Sl2



#87
Redes / Hacer que un SO use la red TOR
9 Junio 2015, 12:28 PM
*****HOLA*****
Me gustaría saber como puedo hacer que un SO use la red TOR como lo hace TAILS. Con un SO instalable, ya que TAILS se ejecuta desde USB o DVD.

La idea es que cualquier programa que se conecte a Internet use la red TOR.

Gracias
#88
[Desde Windows]
Itento hacer que VirtualBox utilice el socket 127.0.0.1:9150 de TOR pero no lo usa.

Desde Configuración he entrado en Configuración y luego en Proxy he activado "[V] Habilitar Proxy" y he puesto:
Máquina: 127.0.0.1
Puerto: 9150 (Mi Tor usa este puerto y no 9050)

Una vez hecho esto he iniciado TOR para que inicie la conexión de red de TOR. Con el TOR abierto inicio VirtualBox, entro en páginas bloqueadas (bloqueo DNS) y no puedo entrar, luego no está usando la conexión de TOR. Tanto con Linux como con XP.

No se si  se debería cambiar algo en "Detalles del red". Hay dos pestañas "Adaptador" y Servidor DHCP".

No entiendo porqué sólo se puede usar en firefox y no con otros navegadores (IE) y otros programas.

thanks
#89
GNU/Linux / Kali Linux se cuelga
29 Mayo 2015, 18:45 PM
Hola

He instalado Kali Linux y se me cuelga. Sin apenas haberlo usado y sin configurar nada. Poco después de instalarlo y al entrar como "superusuario" (root), entré en configuración del sistema y cuando le di a "cuentas de usuario" la pantalla se quedó en blanco y con rayas oblicuas compuestas por puntos.

Después cuando reinicié la cuenta estaba creada y puede entrar con la nueva pero de vez en cuando al pulsar algo, de nuevo de cuelga.

En cambio no ocurre en modo "superusuario".

Saludos y gracias.
#90
Tengo varias cuentas para almacenar en una nube (Cloud computing) pero me pregunto si serán permanentes y pasará como con Megaupload o algo parecido, y un día me encuentre que el servidor de dicha nube ha cerrado.