IEFrame, buscando clase

Iniciado por elmaro, 18 Agosto 2006, 00:49 AM

0 Miembros y 1 Visitante están viendo este tema.

elmaro

buenas
tengo este codigo para conseguir las calses, el tema es que me pide el nombre de la ventana(el  code lo sake del API-Guide) y yo necesito saber si esta activa la clase IEFrame que es la del internet explorer, como mela lo ago??

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Const SW_SHOWNORMAL = 1
Const WM_CLOSE = &H10
Const gcClassnameMSWord = "OpusApp"
Const gcClassnameMSExcel = "XLMAIN"
Const gcClassnameMSIExplorer = "IEFrame"
Const gcClassnameMSVBasic = "wndclass_desked_gsk"
Const gcClassnameNotePad = "Notepad"
Const gcClassnameMyVBApp = "ThunderForm"
Private Sub Form_Load()
    Dim WinWnd As Long, Ret As String, RetVal As Long, lpClassName As String
    'Ask for a Window title
    Ret = InputBox("Enter the exact window title:" + Chr$(13) + Chr$(10) + "Note: must be an exact match")
    'Search the window
    WinWnd = FindWindow(vbNullString, Ret)
    If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
    'Show the window
    ShowWindow WinWnd, SW_SHOWNORMAL
    'Create a buffer
    lpClassName = Space(256)
    'retrieve the class name
    RetVal = GetClassName(WinWnd, lpClassName, 256)
    'Show the classname
    MsgBox "Classname: " + Left$(lpClassName, RetVal)
    'Post a message to the window to close itself
    PostMessage WinWnd, WM_CLOSE, 0&, 0&
End Sub



estaria bien buscar todas las ventanas y a cada nombre de ventana verivicar si usa ese calse??
gracias




El MaRo!

elmaro

nadie me va a contestar? :( ¬¬

whiskises

modifica un poco el codigo, te lo da  hecho practicamente

Private Sub Form_Load()
    Dim WinWnd As Long
    'Como solo queremos  la del IExolorer...
    'se la ponemos directamente
    WinWnd = FindWindow(gcClassnameMSIExplorer,vbnullstring) 'vbnullstring el segundo valor para que valga para cualquier ventana del IE
    If WinWnd = 0 Then Exit Sub  ' si no esta salimos sin hacer nada
    ' el show de window lo quite , me imagino que no quieres mostrarla si la encuentra
   ' el nombre de la clase tambien lo quito , ya lo tenemos
    'Post a message to the window to close itself
    PostMessage WinWnd, WM_CLOSE, 0&, 0&  ' cerramos el IE y hasta otra
End Sub


salu2

elmaro

muchas gracias,. la verdad no ize eso xq no entiendo mucho de esas apis, recien ahora me estoy familiarizando
en fin
encuentra todos los IEFrame y los cierra....ahora yo digo.,.,. si go un explorador con vb usando el webbrowser...usa el IEFrame??? xq ese si que no me lo cierra

lo que estoy ciendo es un programa que blokee IE
tengo que actualizar la version pa darle mas seguridad
y creo que lo mejor es acer un proxy entre mi programa y el port 80 o no?

whiskises

#4
Si haces un explorador en VB utilizando webBrowser tendras que cerrar la ventana de tu aplicacion , creo que la clase es ThunderRT6FormDC pero compruebalo tu de la siguiente forma si tienes el visual studio:
Vas a Inicio/microsoft visual studio/Herramientas.. blablabla/Spy++
ahi te carga las clases de las ventanas ,etc que estas ejecutando
Vas al menu Spy/find window... y te aparece un formulario con una diana, pinchas y arrastras sobre tu aplicacion y te dara todos los datos de la misma incluido su clase.
Luego en el programa anterior , en vez de ponerlo en el load lo pones en un timer que compruebe cada cierto tiempo y ya tienes bloqueado tanto el IE como tu aplicacion, puedes añadirle algun boton para desactivar el timer y permitir/Impedir el acceso a internet segun te interese, o añadir una clave en el registro que la compruebe en el load para saber si el programa esta registrado o no, y segun eso permitir el acceso a internet  o no, en fin tu sabras lo que quieres conseguir.
Lo del proxy no entendi para que lo quieres, pero creo que con lo anterior para impedir que cargue el navegador  seria suficiente
Salu2

nota. No me di cuenta que en el primer programa tienes definida la constante para tus VB
CitarConst gcClassnameMyVBApp = "ThunderForm"
Prueba con esa, la que yo te di y lo que encuentres tu , con alguna de ellas ira bien .

elmaro

si,. lo de la clase de mi ventana lo sabia,. pero lo que kiro yo es....
yo ya blokeaba IE abriendo el exe en forma binaria y verificando los proceso... pero.. si cambian el nombre del IE falla, y si  se utiliza otro navegador falla,. si se utiliza un navegador echo en cualkeir otro lenguaje y usa las bibliotecas de IE falla...
tonces algo mas abarkativo seria...detectar cuando se valla a utilizar el puerto 80 para ahi si..blokear la aplicacion que lo utiliza
espero que se aya entendido

whiskises

en tu PC no vas a utilizar el puerto 80 a no ser que tengas instalado un servidor http:Apache, IIS,..

elmaro

ok, tonces?
como puedo hacer para evitar ver ls paginas web?
ya sea usando IE, o un explorador echo en vb o en cualkier lenguague o lo que sea
gracias x tus respuestas whiskises

saludos

whiskises

La única idea que se me ocurre es que si quieres bloquear conexiones salientes destinadas a un puerto en concreto(80,8080..etc) creo que tendrias que pensar en añadirle funcionalidad como firewall, ese tema no lo toqué aun, puedes buscar codigos de firewall hechos en VB en http://www.planet-source-code.com  por ejemplo.
Si encuentras alguna solucion mejor o diferente, posteala para ver como salimos de esta,..puede ser un tema interesante.
Salu2

elmaro

bueno... buske en la web que me dijiste y encontre algunos firewalls echos en vb,. lo que pasa es que solo controlan las peticiones de conexión,. lo que entra,. yo n3cesito lo que sale,. pero bue...
cambie la metodologia de mi programa,. voy x la version 2.0 que blokea mas programas y x lo pronto voy a usar las class,. y no los nombre de procesos,. ya que si le cambian el nombre...sassss me cagan
asi que bue,.. gracias x todo man y suerte en lo tuyo



El MaRo!