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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13
11  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 13 Febrero 2015, 21:47 pm
Hola, lo probé y aún así persiste el problema, lo curioso es que cuando al proyecto.exe le doy a compatibilidad - configuracion - ejecutar con 256 colores, ahí sí , se soluciona el problema.

Otra cosa que me di cuenta es que sólo pasa con mi PC y mi laptop que tienen Windows 7 'registrado', cuando lo probé en otra PC que tiene W7 pero no lo tiene registrado, entonces lo abre normal.

En mi PC y mi Laptop, el borde del navegador Chrome, es color negro
En la otra PC, el borde del navegador es Azul,

Estoy seguro que en el virtualbox que tienes, cuando abres Chrome, el borde es de color azul (como en la PC que lo probe que no tiene W7 registrado), en cambio en mi PC y mi laptop el borde es de color negro.

Quería consultarte algo que mencionaste al final, lo de sustituir "http://www.elhacker.net" por vbNullString, lo hice y efectivamente me abre chrome en una nueva ventana, pero ¿Cómo hago para que en esa nueva ventana abra http://elhacker.net?


Bueno compañero, aquí estoy de nuevo. He ejecutado el programa bajo las siguientes condiciones:

- Máquina:    VirtualBox
- SO:       Windows 7 Enterprise SP1 64 bits
- Chrome:    Google Chrome Versión 40.0.2214.111 m (última)

Y estamos donde estábamos, porque a mi me sigue funcionando perfectamente salvo un excepción: Chrome se incrusta mostrando una pestaña de color negro. Para solucionarlo he añadido ShowWindow en el código para  refrescar la ventanan de Chrome con SW_RESTORE.También ocurre que tarda un poco en mostrarse, pero también es verdad que W7 me va algo lento en el VirtualBox. Supongo que será por eso.

Esperaba que me pasara lo mismo que a ti y luego intentar solucionar el problema pero no ha sido así.


Para corregir el problema de visualización, como he dicho antes  he añadido "ShowWindow HWNDParent, SW_RESTORE"(línea 18))

Código
  1. Const SW_RESTORE = 9



Código
  1. Private Sub Command1_Click()
  2. HWNDParent = 0
  3.   ShellExecute Me.hwnd, "", "chrome.exe", _
  4.    "http://www.elhacker.net", Environ("programfiles") & "\Google\Chrome\Application\", SW_SHOWMINIMIZED
  5.   Espera (1) 'Espera un segundo a que se cargue Chrome
  6.   Do While HWNDParent = 0
  7.   HWNDParent = FindWindow("Chrome_WidgetWin_1", vbNullString) 'Obtiene el handle padre
  8.   DoEvents
  9.   Loop
  10.  
  11. Do While N& = 0
  12. N& = SetParent(HWNDParent, Picture1.hwnd) 'Meter la apcliación en el picture
  13. DoEvents
  14. Loop
  15.  
  16.  
  17. 'Refresca Chrome por si no se visualiza correctamente
  18. ShowWindow HWNDParent, SW_RESTORE
  19.  
  20. 'Ajusta la ventana de Chrome al Picture
  21. Call SetWindowPos(HWNDParent, HWND_TOP, 0, 0, _
  22. Picture1.ScaleWidth, _
  23. Picture1.ScaleHeight, _
  24. SWP_NOZORDER)
  25.  
  26. End Sub
  27.  


A ver si lo averiguas o alguien sabe algo y te contesta de porqué este fallo. Incluso que haya otra forma de hacerlo. ¿Por qué no pruebas con Firefox? Yo ya no puedo aportar nada más.

Por cierto, si no quieres que se cree una pestaña nueva sustituye "http://www.elhacker.net" por vbNullString en ShellExecute. Yo lo puse como demostración, pero si no quieres ponerlo pues no hace falta.

12  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 12 Febrero 2015, 17:53 pm
VB6 ya que da un poco viejo para Windows7. Además tu Windows es de 64 bits y VB6 es de 32. Tu Chrome también debe ser una versión de 64bits.

Creo que cosas así te van a ocurrir constantemente si mezclas ambas cosas VB6 y W7 64bits.

Lo que voy ha hacer, por mera curiosidad, es instalarme en VirtualBox el Windows7 64bits y probar el programa, a ver que pasa.

Mientras, se me ocurre que ejecutes el programa con "Compatibilidad con win 98 o XP" y a ver que pasa. No se me ocurre otra cosa. 

Pudiera ser que cuando se ejecuta VB6 se activa algún servicio de compatibilidad y cuando se cierra  VB6 se desactiva. Pero solo son suposiciones mías.

No se si tienes VB.NET, pero si no lo usas y  vas a crear programas para W7 64bits ya pudieras ir pensando en cambiar a VB.Net. Yo he usado VB6 durante más de 10 años, como aficionado, pero ahora he empezado con VB.Net2010. Al principio cuesta un poco, por que ha cambiado mucho, pero poco a poco vas aprendiendo. De echo el programa para incrustar el curso de ingles que te comenté lo hice con VB.Net2010.

Probaré el programa en las dos versiones, a ver que pasa...


Gracias por tu respuesta, probé con conpatibilidad de win98 y Win XP, pero aún así, sigue surgiendo el mismo problema y no tengo instalado VB.NET sólo Vb6.

Espero puedas decirme qué tal te fue cuando instalaste el W7 64 bits.

Saludos!
13  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 11 Febrero 2015, 20:20 pm
Hola, creo que ya di con el error, pero no estoy seguro. De todas formas hice lo que me dijiste y esto es lo que me mostró:



El programa en sí creo que sí obtiene el HWNDParent, ya que cuando lo pruebo directamente desde el Iniciar (F5), me funciona a la perfección.

Di con algo interesante:

Cuando ejecuto el proyecto.exe(compilado) y lo abro, sucede el problema; pero,

Si ejecuto el proyecto.exe(compilado) (pero tengo el Vb6 abierto, sin necesidad de que tenga código alguno) me funciona a la perfección



Lo he probado más de 10 veces y efectivamente cuando vb6 está abierto, me funciona a la perfección.

Aquí te dejo un video de lo que me sucede, y no sólo sucede en mi PC y mi laptop, también en todas las PC que lo probé



Otra cosa del cuál me he dado cuenta es que cuando el VB6 está abierto, la barra de tareas se cambia de color y me aparece el mensaje de:



Y cuando no tengo el VB6 abierto, la barra de tareas cambia a su normalidad.



Aunque no creo que esto tenga nada que ver.


14  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 11 Febrero 2015, 00:08 am
Hola, acabo de probarlo y aún así. Te explico lo que sucede.

Tengo Chrome abierto, está en pantalla completa pero minimizado, y al iniciar el proyecto.exe y por primera vez le doy click al "command_button", sólo abre la página en una nueva pestaña de Chrome y me muestra Chrome pero no lo incrusta al picture.

Cuando le doy nuevamente click al "Command_button", abre la página en otra nueva pestaña , me muestra chrome y recién la incrusta al picture.

Y después ya normal, cada vez que le doy click, abre Chrome y lo incrusta al picture y así sucesivamente.

(incluso probé el parameto de Chrome para que lo abra en una nueva ventana --new-window, pero nada, ese no era el problema)

Aquí te dejo el video de lo que te explico.



Lo que creo es que quizá en el FormLoad el código no carga bien ya que solamente al comienzo es que no lo incrusta al picture, pero después sí.

---------------------------------------------------------------------

Que curioso...
A mi me pasaba lo mismo pero con el otro programa de  inglés que te comenté, el que he incrustado en un form porque se muestra a pantalla completa y me oculta la barra de tareas. Es antiguo y de 16bits. Cuando se inicia sale un video y hay que hacer clic para iniciar el programa. El problema resultó ser porque incrustaba desde Form_Load. Parace ser que todo se tiene que hacer en un orden: Cargar form, cargar el otro programa, incrustar. Cuando se intenta hacer todo de golpe o no se le da el tiempo suficiente que se necesite para cualquiera de los tres pasos, se produce un fallo. He solucionado el problema haciendo que espere un segundo antes de ejecutar el código, a que le de tiempo a cargarse el form, antes de ejecutar el otro programa. Pero yo creo que el caso es distinto por que a ti el Chrome se te carga y no produce error. Siemplemente no se introduce en el Picture.

Prueba a hacer lo siguiente. Del mismo modo que nos hemos asegurado que obtenemos el handle de Chrome con el Do/Loop, hacemos otro Do/Loop para asegurarnos que Chrome se ha introducido en el Picture:

Código
  1. Do While N& = 0
  2. N& = SetParent(HWNDParent, Picture1.hwnd) 'Meter la apcliación en el picture
  3. DoEvents
  4. Loop

Si Chrome no se ha introducido en el Picture, N& tiene valor 0. Entonces vuelve a reintentar el proceso hasta que N& sea distinto de 0, es decir, que se haya introducido Chrome en el form.


Y dado que hay un bucle Loop y DoEvents es recomendable añadir en al Form_Unload el evento END.
Código
  1. Private Sub Form_Unload(Cancel As Integer)
  2.   Call Cerrar_Chrome(HWNDParent) 'Cierra Chrome
  3.   End
  4. End Sub

Esto es porque si el valor de N& fuera siempre 0 por no poder cargar Chrome, luego no podrías cerrar el form.

Dado que Do/Loop es un bucle que no termina nunca yo pondría, en cualqueira de los bucles un contador para que cuando por ejemplo llegase a X intentos, se parara el proceso y mostrara un mensaje informando de lo sucedido y saliera del bucle. En este caso ya no necesitarías poner END en Form_Unload.

Por cierto, si esto último no sirviera y a pesar de ello solucionas el problema, cuentame como lo has hecho o porqué te pasaba eso. No me dejes en ascuas.


Saludos


15  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 9 Febrero 2015, 20:16 pm
Lo he probado, pero aún así no logro abrir el ejecutable en mi laptop, lo probé en otra PC, y en la PC sí lo abre.

Lo curioso es que en mi laptop el 50% abre chrome y lo incrusta al picture, y el otro 50% sólo abre chrome pero no lo incrusta y efectivamente también el nombre de la clase es "Chrome_WidgetWin_1", lo cual no creo que sea el error

De todas maneras gracias.

16  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 8 Febrero 2015, 16:24 pm
@okik, quería consultarte algo.

Por qué es que en mi PC funciona normal cuando genero el .exe, pero cuando intento abrir el ejecutable en otra PC, sólo se abre Chrome mas no lo incrusta en el picture del form.

Supuse que quizá el problema esté en esta parte

Código
  1. HWNDParent = FindWindow("Chrome_WidgetWin_1", vbNullString) 'Obtiene el handle padre
  2. Call SetParent(HWNDParent, Picture1.hwnd) 'Meter la apcliación en el picture

Quizá el problema esté en no poder obtener el handle padre o no poder meter la aplicación al picture.

Reitero que en mi PC funciona perfecto, pero cuando pruebo el .exe generado en otra PC no logra incrustar Chrome al picture.

Cómo podría solucionarlo?...

Gracias.
17  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 7 Febrero 2015, 21:56 pm
Nuevamente, muchas gracias!, me anda a la perfección!

Hola,

Esta idea de meter una aplicación dentro de un form, me ha venido genial para un viejo programa de inglés que tengo que requiere ejecutarse a pantalla completa y una resolución de  640x480, tapándome la barra de tareas de windows. El programa se veía en un cuadrito en el centro de la pantalla y el resto en negro, a no ser que redujese la resolución.  Así que gracias.

En cuanto al código que puse he visto fallos. Por ejemplo al cerrar la aplicación también se cerraban todas las ventanas de Chrome, la de dentro del form y las que estaban fuera si era el caso. Se debe a que valor del handle no es público. También ocurre que al utilizar ShowWindow se genera un error de visualización si la última vez que se cerró Chrome estaba en modo Normal. Lo he sustituido por SetWindowPos.

Aquí dejo el código algo mejorado:
Código
  1. 'Nombres de clase (ClassName) de Chrome
  2. 'Chrome_WidgetWin_1           <---Padre
  3. 'Chrome_RenderWidgetHostHWND  <---hijo
  4.  
  5. '//Funciones API para incrustar la aplicación en el picture
  6. Private Declare Function SetParent Lib "user32" _
  7. (ByVal hWndChild As Long, _
  8. ByVal HWNDParent As Long) As Long
  9. Private Declare Function ShowWindow Lib "user32" _
  10. (ByVal hwnd As Long, _
  11. ByVal nCmdShow As Long) As Long
  12. Private Declare Function SetWindowPos Lib "user32" _
  13. (ByVal hwnd As Long, _
  14. ByVal hWndInsertAfter As Long, ByVal x As Long, _
  15. ByVal y As Long, ByVal cx As Long, _
  16. ByVal cy As Long, _
  17. ByVal wFlags As Long) As Long
  18.  
  19. '//Funcion API para obtener el handle de la aplicación que se quiere menter en el Picture
  20. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
  21. (ByVal lpClassName As String, _
  22. ByVal lpWindowName As String) As Long
  23.  
  24. '//Ejecuta el programa
  25. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  26. (ByVal hwnd As Long, _
  27. ByVal lpOperation As String, _
  28. ByVal lpFile As String, _
  29. ByVal lpParameters As String, _
  30. ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  31.  
  32. '//Función para cerrar la aplicación incrustada
  33. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  34. (ByVal hwnd As Long, _
  35. ByVal wMsg As Long, _
  36. ByVal wParam As Long, _
  37. lParam As Any) As Long
  38.  
  39. Const SHOW_FULLSCREEN = 3
  40. Const SW_SHOWMINIMIZED = 2
  41. Const SW_SHOWMAXIMIZED = 3
  42. Const SWP_NOZORDER = &H4
  43. Const WM_SYSCOMMAND = &H112
  44. Const SC_CLOSE = &HF060&
  45.  
  46. '//////////////////////////////////////////////
  47. '//'Variable para el handle padre de Chrome  //
  48. '//Debe ser variable pública para que al     //
  49. '//cerrar el form únicamente se cierre el    //
  50. '//chrome incrustado en el picture y no      //
  51. '//otra ventana externa de chrome         /////
  52.        Dim HWNDParent As Long
  53. '//////////////////////////////////////////////
  54.  
  55. Private Sub Command1_Click()
  56.   ShellExecute Me.hwnd, "", "chrome.exe", _
  57.    "www.elhacker.net", Environ("programfiles") & "\Google\Chrome\Application\", SW_SHOWMINIMIZED
  58.   Espera (5)  'Espera cinco segundos a que se cargue
  59.   HWNDParent = FindWindow("Chrome_WidgetWin_1", vbNullString) 'Obtiene el handle padre
  60. Call SetParent(HWNDParent, Picture1.hwnd) 'Meter la apcliación en el picture
  61. 'Ajusta la ventana de Chrome al Picture
  62. Call SetWindowPos(HWNDParent, HWND_TOP, 0, 0, _
  63. Picture1.ScaleWidth, _
  64. Picture1.ScaleHeight, _
  65. SWP_NOZORDER)
  66. End Sub
  67. Private Sub Espera(Segundos As Single)
  68. Dim ComienzoSeg As Single
  69. Dim FinSeg As Single
  70. ComienzoSeg = Timer
  71. FinSeg = ComienzoSeg + Segundos
  72. Do While FinSeg > Timer
  73.     DoEvents
  74.     If ComienzoSeg > Timer Then
  75.         FinSeg = FinSeg - 24 * 60 * 60
  76.     End If
  77. Loop
  78. End Sub
  79.  
  80. Private Sub Cerrar_Chrome(hwnd As Long)
  81. If HWNDParent <> 0 Then
  82.    Call SetParent(HWNDParent, 0)  ' Libera el programa
  83.    Call SendMessage(HWNDParent, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&) 'Cierra el programa
  84.    HWNDParent = 0
  85. End If
  86.   End Sub
  87. Private Sub Form_Load()
  88.    Picture1.ScaleMode = 3 'pixels <-importante para mover _
  89.     y establecer correctamente las dimensiones de la ventana _
  90.     de chrome dentro del picture
  91. End Sub
  92.  
  93. Private Sub Form_Unload(Cancel As Integer)
  94.   Call Cerrar_Chrome(HWNDParent) 'Cierra Chrome
  95. End Sub
  96.  
  97.  

El handle (hwnd) o 'asa' es un número aleatorio que Windows asigna a cada ventana que se abre en el escritorio. Se pueden cambiar características o enviar mensajes a  dichas ventanas usando ese número. Como se ha podido ver con SetWindowPos, SetParent, SendMessage y ShowWindow.

 

18  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 4 Febrero 2015, 17:44 pm
Si claro que se puede. Se me ocurren varias maneras.

Pero antes de nada permíteme corregir unas líneas del código que te he dado antes. Hice un copia y pega de mi propio código en Form_Unload y se han colado un par de líneas que no tienen utilidad ahí, se trata de la variable hWndChild   que fue un intento de introducir sólamente la Web en el Picture, funcionaba con el Notepad por ejemplo, pero no con Google Chrome. Lo borré en otras partes del código, pero no en el Form_Load, se me pasó. También está lo de Espera(5) que si que es necesario más arriba, porque hay que esperar a que se cargue Google Chrome antes de introducirlo en el Picture, pero para cerrar no hace falta.

Código
  1. Private Sub Form_Unload(Cancel As Integer)
  2.    Dim hwnd As Long
  3.    Dim hWndChild As Long  '<---- BORRAR ESTA LÍNEA
  4.    'Espera (5) '<---- BORRAR ESTA LÍNEA
  5.    hwnd = FindWindow("Chrome_WidgetWin_1", vbNullString)
  6.    Call Cerrar_Google(hwnd) 'cierra Google
  7. End Sub

Debería ser así:

Código
  1. Private Sub Form_Unload(Cancel As Integer)
  2.    Dim hwnd As Long
  3.    hwnd = FindWindow("Chrome_WidgetWin_1", vbNullString)
  4.    Call Cerrar_Google(hwnd) 'cierra Google
  5. End Sub

En cuanto a lo de
- Primera opción: Crear un código de busqueda de Chrome.exe y obtener su directorio (ideal para programas que al actualizarse van cambiando la ubicación) por ejemplo si fuera "\Google\Chrome\Application\V0014\Chrome.exe" y al actualizarse cambiara a  "\Google\Chrome\Application\V00321\Chrome.exe". Que no es el caso. Te lo digo por si alguna vez te encuentras alguna cosa así.

- Segunda opción: Obtener mediante la función Environ el directorio de \program files\ del sistema:
Código
  1. Private Sub Command1_Click()
  2. Print Environ("programfiles")
  3. End Sub
  4.  
y luego añades el resto  "\Google\Chrome\Application\chrome.exe"
Código
  1. Print Environ("programfiles") & "\Google\Chrome\Application\chrome.exe"

- Tercera opción: accediendo al registro de windows





Al final entonces quedaría así

Código
  1. ShellExecute Me.hwnd, "Open", Environ("programfiles") & "\Google\Chrome\Application\chrome.exe", _
  2. "www.elhacker.net", "", 1

Gracias, eres un genio!.
19  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 3 Febrero 2015, 21:54 pm
Hola @okik , probé tu código y funciona perfecto. Tengo una duda, ¿Es posible detectar automáticamente la Ruta de Chrome, sin necesidad de que el usuario busque la ruta, en mi caso es "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"?, me preguntaba si hay alguna forma de detectar la ruta de chrome.exe automáticamente.

Muchas gracias nuevamente.
20  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 2 Febrero 2015, 18:59 pm
Alguien podría ayudarme, por favor. Aún no puedo dar con la solución :(
Páginas: 1 [2] 3 4 5 6 7 8 9 10 11 12 13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines