Вопрос по определению класса браузера Opera.

Тема в разделе "WASM.BEGINNERS", создана пользователем asmic, 3 мар 2007.

  1. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    У меня такая проблема. Я не могу определить. Является ли браузер Opera активным окном ( в данный момент активным, то есть с которым я в данный момент работаю) или нет. У меня возникла проблема с классом его окна. WinSpy говорит что класс ( OpWindow ). Я и см определял класс, с помощью функций ( GetForegroundWindow и GetClassName ). Да всё верно. Но что то не так.

    вот код:
    invoke FindWindow,addr IEClass,NULL ; класс IEFrame
    mov hIE,eax
    invoke FindWindow,addr MFClass,NULL ; кдасс MozillaUIWindowClass
    mov hMF,eax
    invoke FindWindow,addr OPClass,NULL ; класс OpWindow
    mov hOP,eax
    invoke GetForegroundWindow
    .IF EAX==hIE
    invoke MessageBox,NULL,addr IEBrowser,NULL,MB_OK
    .ELSEIF EAX==hMF
    invoke MessageBox,NULL,addr MFBrowser,NULL,MB_OK
    .ELSEIF EAX==hOP
    invoke MessageBox,NULL,addr OPBrowser,NULL,MB_OK
    .ENDIF

    Люди что не так. Помогите найти верное решение. Если возможно определить какой браузер запущен в данный момент и является ли он активным. напишите способ. Возможно ли получить имя активного приложения ( типа - opera.exe ) какой нибудь функцией?
    Заранее спасибо.
     
  2. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    Вот код внимательно посмотри, а то ты какую-то белеберду написал:

    Код (Text):
    1. .data
    2. IEClass db"IEFrame",0
    3. MFClass db"MozillaUIWindowClass",0
    4. OPClass db"OpWindow",0
    5. IE db "InternetExplorer loaded",0
    6. OP db "Opera loaded",0
    7. MA db "Mozila loaded",0
    8. error db "Áðàóçåð íå çàãðóæåí",0
    9. .code
    10.  
    11.  
    12.  
    13. start:
    14.  
    15.           invoke FindWindow,addr IEClass,NULL  ; êëàññ IEFrame
    16.           lea ebx,dword ptr IE
    17.           .if eax==0
    18.           invoke FindWindow,addr MFClass,NULL  ; êäàññ MozillaUIWindowClass
    19.           lea ebx,dword ptr OP
    20.           .if  eax==0  
    21.           invoke FindWindow,addr OPClass,NULL  ; êëàññ OpWindow
    22.           lea ebx,dword ptr MA
    23.           .if  eax==0  
    24.           invoke MessageBox,NULL,addr error,NULL,MB_OK
    25.            invoke  ExitProcess,0
    26.            
    27.             .endif
    28.            .endif        
    29.          .endif
    30.        
    31.          invoke MessageBox,NULL,ebx,NULL,MB_OK                          
    32.          invoke  ExitProcess,0
    33. end start
     
  3. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Слушай Denis__ ты меня не понял. Мой вопрос в том почему мой код ( как и твой не может определить что Opera - активна ). Твой код тоже этого не делает! Дак почему же?????
     
  4. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    Код рабочий просто ты неправильно определил Class окна, а я взял твой определения.
    1.Operа у меня нету ).
    2.У меня браузер Mozilla Firefox.
    Методика определения класса окна: открываем прогу в отладчике, ставим брекпоинт на CreateWindowExA, смотрим в соответствующем поле название класса окна, Все. У меня для Mozilla Firefox класс окна "FirefoxMessageWindow"
    Код, в предыдущем маленькая ошибка была:

    Код (Text):
    1. .data
    2. IEClass db"IEFrame",0
    3. MFClass db"FirefoxMessageWindow",0
    4. OPClass db"OpWindow",0
    5. IE db "InternetExplorer loaded",0
    6. OP db "Opera loaded",0
    7. MA db "Mozila loaded",0
    8. error db "Áðàóçåð íå çàãðóæåí",0
    9. .code
    10.  
    11. start:
    12.  
    13.           invoke FindWindow,addr IEClass,NULL  ; êëàññ IEFrame
    14.           lea ebx,dword ptr IE
    15.           .if eax!=0
    16.           call Message
    17.           .endif
    18.               invoke FindWindow,addr MFClass,NULL  ; êëàññ FirefoxMessageWindow
    19.               lea ebx,dword ptr MA
    20.               .if eax!=0
    21.               call Message
    22.               .endif  
    23.                invoke FindWindow,addr OPClass,NULL  ; êëàññ OpWindow
    24.                lea ebx,dword ptr OP
    25.                .if  eax!=0  
    26.                call Message
    27.                invoke ExitProcess,0
    28.                ret
    29.                .endif
    30.                invoke  ExitProcess,0
    31.                ret
    32.  
    33.           Message proc    
    34.           invoke MessageBox,NULL,ebx,NULL,MB_OK                                
    35.           ret
    36.           Message  Endp
    37. end start
    А код у тебя все таки кривой )