Hola , tengo una consulta, estoy intentando enviar un click a un ShockWaveFlash control que contiene un boton mediante su Hwnd y SendMessageA, la cuestion es que le envio el click pero no "presiona" este boton que contiene.
les dejo aca el code :
Form1 :
CommandButton : a
TextBox : Text1 (Multiline)
ShockwaveFlash : ShockwaveFlash1
Código vb:
Ver originalOption Explicit
'click
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Sub a_Click()
Call SendMessage(GetBrowserHandle(Me.hwnd), &H201, &H0&, Make_lParam(50, 50))
Call SendMessage(GetBrowserHandle(Me.hwnd), &H202, &H0&, Make_lParam(50, 50))
End Sub
Private Sub Form_Load()
'WebBrowser1.Navigate ("C:\Users\user\Desktop\prueba.html")
ShockwaveFlash1.Movie = "C:\Users\user\Desktop\a.swf"
End Sub
Function Make_lParam(ByVal X As Integer, ByVal Y As Integer) As Long
Make_lParam = X Or (Y * &H10000)
End Function
Modulo :
Código vb:
Ver original'Public HwWeb As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
ByVal hwnd As Long, _
ByVal lpClassName As String, _
ByVal nMaxCount As Long _
) As Long
Private Declare Function EnumChildWindows Lib "user32.dll" ( _
ByVal hWndParent As Long, _
ByVal lpEnumFunc As Long, _
ByVal lParam As Long _
) As Long
Private hWndIE As Long
Private Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim sClassName As String
sClassName = String(255, vbNullChar)
Call GetClassName(hwnd, sClassName, 255)
Form1.Text1.Text = Form1.Text1.Text & vbCrLf & sClassName
sClassName = Left$(sClassName, InStr(sClassName, vbNullChar) - 1)
If sClassName <> "MacromediaFlashPlayerActiveX" Then
EnumChildProc = 1
Else
hWndIE = hwnd
End If
End Function
Public Function GetBrowserHandle(ByVal hWndParent) As Long
Form1.Text1.Text = " -------- " & vbCrLf
hWndIE = 0
Call EnumChildWindows(hWndParent, AddressOf EnumChildProc, 1)
GetBrowserHandle = hWndIE
End Function
Lo que pienso que sucede es como si lo intentase hacer con un form, si envio el click mediante su Hwnd y en la posicion 50,50 hay un boton, este no es "presionado", de manera que necesito enviar el SendMessage desde el Hwnd del CommandButton. la cuestion es que no tengo acceso a los controles del ShockWaveFlash control mediante el EnumChildWindows, entonces ...
-Es esta la razon por la cual el botton del ShockWaveFlash1 no es "presionado"?
-Hay manera de acceder a controles de este control ShockWaveFlash desde VB siendo que yo no soy el creador de este ultimo?
-Asi como al anidar un Form dentro de otro , es posible acceder a sus controles , es posible acceder a los controles de un Swf mediante la anidacion dentro de otro donde si soy yo el creador? es decir, asi como VB interactua con otros form desarrollados en VB , un Swf con Action Script puede interactuar de esta manera con otro Swf? para que ... con "mi" VB y "mi" Swf pueda interactuar para que al final "mi" Swf le envie parametros o eventos a los controles del otro Swf ?
El ejemplo lo estoy desarrollando con este boton que lo tengo descargado en mi Disco:
http://fc07.deviantart.net/fs71/f/20...ga-d36ds6k.swf