Как поймать чужое сообщение ?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Vlad_Ginz
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 17.04.2004 (Сб) 0:19

Как поймать чужое сообщение ?

Сообщение Vlad_Ginz » 06.07.2004 (Вт) 0:39

При работе с чужой программой выдается ненужное сообщение,
например "Правильной дорогой идете, товарищи !"
При нажатии Ok программа далее работает как надо.
Есть ли возможность как-то убрать такое сообщение ?

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 06.07.2004 (Вт) 1:35

С чужой!? Причем здесь VB?
Это смахивает на взлом.

Если я правильно понял: Теоритически это можно решить с помощью SoftICE (это отладчик) - если это Message Box-окно, ставишь брикпоинт на MessageBoxA (или MessageBoxExA). Далее знаниями Ассемблера отследи, что привело к появлению мессаги и измени это условие на нужное, либо замени на "no operation" ("nop"). ;)) ;)) ;))


А если ты имеешь ввиду, то, что у тебя чужой проект для VB, то найди в коде что-то вроде:
MsgBox "Правильной дорогой идете, товарищи !" и удали...
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 06.07.2004 (Вт) 21:00

В принципе (не пробовал), наверное, можно форму спрятать и в таймере отлавливать соответствующее окно (я про MsgBox), и если найдено - PostMessage WM_CLOSE.

Vlad_Ginz
Новичок
Новичок
 
Сообщения: 41
Зарегистрирован: 17.04.2004 (Сб) 0:19

Сообщение Vlad_Ginz » 07.07.2004 (Ср) 0:13

Программа чужая неизвестно на каком языке и кодов ее не имею.
Известно только сообщение в виде MsgBox.

Спасибо за ответы, но для меня API темный лес.
Если возможно, покажите в виде кодов.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 07.07.2004 (Ср) 0:28

Ну, примерно так (на форму поставь таймер с интервалом 1 и вместо BBB поставь Title MsgBox'а):
Код: Выделить всё
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
Const WM_CLOSE = &H10

Private Sub Timer1_Timer()
If FindWindow(vbNullString, "BBB") > 0 Then PostMessage FindWindow(vbNullString, "BBB"), WM_CLOSE, 0, ByVal 0&: End
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: The trick и гости: 10

    TopList