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

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [77] 78 79 80
761  Programación / Programación Visual Basic / Re: [VB6][SRC] Memory Regions en: 13 Febrero 2015, 18:44 pm
Hola,
Esto...disculpa mi ignorancia, pero, no me ha quedado muy claro para que sirve esto.... :¬¬
762  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 13 Febrero 2015, 18:35 pm
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.
763  Programación / Programación Visual Basic / Re: Evitar redondeo de decimales en textbox en: 12 Febrero 2015, 17:32 pm
solo para aportar algo... se puede simplificar el código de okik para ahorrarnos la comparación

Código
  1. Dim A As Variant
  2. A = 76.5
  3. A = Int(A+0.5)
  4. Label1.Caption = A

Te había rectificado, pero  tu ejemplo es mucho mejor. Está genial  ;-). No me di cuenta que pusistes int() y te dije que si A =78 entonces el label daría 78.5. Esto es lo que pasa cuando un va de listo y resulta que soy medio listo  :P.

764  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 12 Febrero 2015, 17:25 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...
765  Programación / Programación Visual Basic / Re: Evitar redondeo de decimales en textbox en: 11 Febrero 2015, 19:57 pm
¿Estimados y para aproximar un decimal, por ejemplo si tengo "76,5" me muestre 77?


No he encontrado ninguna función para eso, no se si habrá. Puedes usar este sencillo código:

Código
  1. Dim A As Variant, B As Variant
  2. A = 76.5
  3. B = A - Int(A)
  4. If B = 0.5 Then
  5. A = A - 0.5 + 1
  6. End If
  7.  
  8. Label1.Caption = A

Lo que hace es lo siguiente:

A= 76.5  '//mete el valor en A
B = A - Int(A) '//B= 76.5 - 76 = 0.5
if B= 0.5 then  '//Si B es igual a 0.5 entonces....
A= A- 0.5+1  '// A= 76.5 - 0.5+1
End If

Label1.Caption = A '//Muestra el valor de A = 77




766  Programación / Programación Visual Basic / Re: Evitar redondeo de decimales en textbox en: 11 Febrero 2015, 17:15 pm
Código
  1. Dim A As Variant, B As Variant
  2. A = Text1.Text
  3. B = FormatNumber(A / 2, 2) 'No redondea y muestra dos decimales
  4. Text2.Text = B
  5. Text3.Text = CInt(A / 2) 'Redondea
  6. Text4.Text = CVar(A / 2) 'No redondea
  7.  


Usa 'Variant' para evitar el redondeo e 'Integer' para redondear. Para evitar demasiados decimales: 1.6666666667, usa FormatNumber (numero, decimales).

Si no quieres usar variables. Como en el ejemplo anterior, pones:

CVar(valor) <----No redondea
CInt(valor) <---Redondea


767  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 11 Febrero 2015, 16:43 pm
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í.

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





---------------------------------------------------------------------
Pues te juro que a mi no me pasa eso. He abierto Chrome, he ejecutado el programa ya compilado, fuera del entorno de programación. Le he dado al botón y se a incrustado con una nueva pestaña.


Cuando tengo problemas, lo que hago es crear puntos de interrupción. Lo único que has de hacer es Clic en la barrita vertical que hay en el lado izquierdo del código de vb6. Se pondrá un punto rojo. Luego le das a F5 (Iniciar). Entonces el programa se inicia y para el proceso en ese punto. Luego colocas el puntero sobre una variable del código y aparece una etiqueta que te indica el valor.




Puedes hacer un punto de interrupción debajo de:

Código
  1.   Do While HWNDParent = 0
  2.   HWNDParent = FindWindow("Chrome_WidgetWin_1", vbNullString) 'Obtiene el handle padre
  3.   DoEvents
  4.   Loop

No se pueden hacer puntos de interrupción en líneas vacias así que lo haces en la siguiente línea. Luego pones el puntero sobre HWNDParent, la primera vez que ejecutes la aplicación, y si pone 0 es que no ha obtenido el HWNDParent.  

Si no haces estas cosas vas un poco a ciegas. Porque no sabes lo que está ocurriendo en cada momento. Creo que es la única manera de encontrar una solución al problema.

No se si el tener el Windows7 pudiera tener algo que ver. Pero quien sabe.

El código lo voy a poner otra vez tal y como a mí me ha quedado al final. Porque entre tanta correción y tal pues es un poco lío.

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. HWNDParent = 0
  57.   ShellExecute Me.hwnd, "", "chrome.exe", _
  58.    "www.elhacker.net", Environ("programfiles") & "\Google\Chrome\Application\", SW_SHOWMINIMIZED
  59.   Espera (1)  'Espera 1 segundo a que se cargue
  60.   Do While HWNDParent = 0
  61.   HWNDParent = FindWindow("Chrome_WidgetWin_1", vbNullString) 'Obtiene el handle padre
  62.   DoEvents
  63.   Loop
  64.  
  65. Do While N& = 0
  66. N& = SetParent(HWNDParent, Picture1.hwnd) 'Meter la apcliación en el picture
  67. DoEvents
  68. Loop
  69.  
  70. 'Ajusta la ventana de Chrome al Picture
  71. Call SetWindowPos(HWNDParent, HWND_TOP, 0, 0, _
  72. Picture1.ScaleWidth, _
  73. Picture1.ScaleHeight, _
  74. SWP_NOZORDER)
  75. End Sub
  76. Private Sub Espera(Segundos As Single)
  77. Dim ComienzoSeg As Single
  78. Dim FinSeg As Single
  79. ComienzoSeg = Timer
  80. FinSeg = ComienzoSeg + Segundos
  81. Do While FinSeg > Timer
  82.     DoEvents
  83.     If ComienzoSeg > Timer Then
  84.         FinSeg = FinSeg - 24 * 60 * 60
  85.     End If
  86. Loop
  87. End Sub
  88.  
  89. Private Sub Cerrar_Chrome(hwnd As Long)
  90. If HWNDParent <> 0 Then
  91.    Call SetParent(HWNDParent, 0)  ' Libera el programa
  92.    Call SendMessage(HWNDParent, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&) 'Cierra el programa
  93.    HWNDParent = 0
  94. End If
  95.   End Sub
  96. Private Sub Form_Load()
  97.    Picture1.ScaleMode = 3 'pixels <-importante para mover _
  98.     y establecer correctamente las dimensiones de la ventana _
  99.     de chrome dentro del picture
  100. End Sub
  101.  
  102. Private Sub Form_Unload(Cancel As Integer)
  103.   Call Cerrar_Chrome(HWNDParent) 'Cierra Chrome
  104.   End
  105. End Sub






768  Programación / .NET (C#, VB.NET, ASP) / ¿Es posible cambiar el ClassName de un Form en VB6 o VB.NET2010? en: 10 Febrero 2015, 20:09 pm
Hola

LLevo infinidad de tiempo intentando encontrar la manera de cambiar el nombre de clase un formulario creado en VB6 o VB.NET. Pero no he encontrado la forma.

ClassName en VB6:
ThunderRT6FormDC fuera del entorno de programación
ThunderFormDC dentro del entorno de programación

ClassName en VB.NET
WindowsForms10.Window.8.app...

Sé que es posible establecer tu propio ClassName si creas el form desde cero mediante CreateWindowEx. Pero los usuarios de VB estamos mal acostumbrados y eso de tener que crear las cosas de forma "imaginaria" y que solo sean visibles cuando se ejecuten.... es un rollo. No hay ganas.

Lo curioso es que jamás me he encontrado ninguna aplicación, ni grande, ni pequeña, que tubiese el nombre de clase (ClassName) como ThunderRT6FormDC. Luego, ¿Nadie que se dedique profesionalmente  ha utilizado VB para crear sus apliaciones? o bien, ¿sí que es posible cambiarlo.?

A ver si algún gurú de la programación me lo sabe explicar.

769  Programación / Programación Visual Basic / Re: Abrir ejecutable en un form - ¿Es posible abrir Chrome? en: 10 Febrero 2015, 16:08 pm
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

770  Programación / Programación Visual Basic / ¿Es posible crear un paquete de instalación en VB.Net2010 sin archivo msi? en: 9 Febrero 2015, 18:39 pm
Hola,

Apenas acabo de empenzar a programar en VB.net2010 y me encuentro que al crear un paquete de instalación se crea una dependéncia con un archivo *.msi donde está contenido los archivos del programa. Esto no es del todo un problema. El problema está en que, una vez realizada la instalación, al ejecutar el programa windows busca el archivo msi de la isntalación, lo cual es un palo enorme ya que me obliga a tener el archivo msi siempre disponible para ejecutar el programa.
Páginas: 1 ... 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [77] 78 79 80
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines