Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    trovare hwnd della toolbar di Iexplorer

    Salve a tutti, spero che col vostro aiuto riesca a risolvere il mio prob.

    Allora premetto che sto utilizzando VB 6.0 e il sistema operativo è windows xp SP2.

    Allora il prob. è questo:

    Devo riuscire a identificare l' hwnd della toolbar dei menu di Intenet explorer 6.0 per eliminare o disattivare i menu "Visualizza" e "Strumenti".
    Ma nn so quali API usare precisamente.
    Io ho iniziato cercando l'hwnd della finestra di IExplorer e fin qui tutto ok, ma poi non riesco a trovare l'hwnd giusto, cioè quello che si riferisce alla toolbar.

    Grazie e spero che qualcuno riesca a darmi una mano.

    P.s. xgallo pensaci tu.

  2. #2

    Re: trovare hwnd della toolbar di Iexplorer

    Originariamente inviato da ropedancer


    P.s. xgallo pensaci tu.
    per ora xegallo ci pensa ad editarti il titolo ma è l'ultima volta, il regolamento dovresti conoscerlo
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  3. #3
    Scusa ma sto andando come il vento, è prob che dovrei risolvere entro pm., purtoppo

  4. #4
    con findwindows o enumwindows ti devi trovare l'hwnd della finestra principale
    poi con getmenu e derivate dovresti poterlo fare
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Già fatto, ma niente.

    FindWindows ed EnumerateWindows ci siamo prendo l'hwnd della finestra
    ma i menu di Iexplorer nn sono istanze della classe menu ma di toolbar ho controllato con spy++.


    Cmq. forse una mezza soluzione la sto trovando getclassname restituisce il nome della classe e con questo forse riesco a trovare la tollbar, ma una volta trovata come disattivo i menu? ( omeglio visto che è una toolbar i tasti?)

  6. #6
    Allora raga, ci sono riuscito, la soluzione nn è una delle + eleganti ma funziona cmq. posto il codice così se qualcuno ha qualche idea per migliorarlo me lo faccia sapere.

    codice:
    'Nella FORM
    Private Sub Timer1_Timer()
    EnumWindows AddressOf EnumWindowsProc, ByVal 0&
        For Index2 = 0 To List1.ListCount - 1
            EnumChildWindows List1.List(Index2), AddressOf EnumChildProc, ByVal 0&
        Next Index2
    End Sub
    
    'NEL MODULO
    
    Const TB_DELETEBUTTON = 1046
    Const TB_BUTTONCOUNT = 1048
    Const TB_GETBUTTONTEXT = 1069
    
    Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" _
    (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    
    Declare Function GetWindowTextLength Lib "user32"_
    Alias "GetWindowTextLengthA" (ByVal hWnd As Long) As Long
    
    Declare Function EnumChildWindows Lib "user32" _
    (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    
    Declare Function EnumWindows Lib "user32"_
    (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Boolean
    
    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 SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    
    Public Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Long) As Boolean
        Dim sSave As String, ret As Long
        ret = GetWindowTextLength(hWnd)
        sSave = Space(ret)
        GetWindowText hWnd, sSave, ret + 1
        pippo = InStr(1, sSave, "pippo", vbTextCompare) 'Nel titolo di ogni finestra di explorer compare pippo,
                                                        'in caso contrario bisognerebbe cercare le 
                                                        'finestre di classe IEFrame se nn ricordo male
        If pippo <> 0 Then Form1.List1.AddItem Str$(hWnd)
    
        EnumWindowsProc = True
    End Function
    
    Public Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
        Dim sSave As String
        Dim ret As Byte
        Dim NumButton As Byte
            
        sSave = Space$(256)
        ret = GetClassName(hWnd, sSave, 256)
        sSave = Left$(sSave, ret)
        If InStr(1, sSave, "ToolbarWindow32", vbTextCompare) <> 0 Then
        NumButton = SendMessage(hWnd, TB_BUTTONCOUNT, 0, 0)
            If NumButton <= 6 And NumButton >= 5 Then
                SendMessage hWnd, TB_DELETEBUTTON, 2, 2
                SendMessage hWnd, TB_DELETEBUTTON, 3, 3
            End If
        End If
        EnumChildProc = 1
    End Function

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.