Удаление чужого окна

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

Удаление чужого окна

Сообщение Zoomie » 10.11.2005 (Чт) 17:28

Привет пиплы!

Вопрос у меня такой немножко ламерский, но не сердитесь :)

У меня окошко, а ля мсж (но не мсж!), окошко чужой программы.

Как мне его удалить.

Помогите пожалуйста кодиком.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 10.11.2005 (Чт) 17:35

SendMessage hwnd, WM_CLOSE, 0&, 0&
SendMessage hwnd, WM_DESTROY, 0&, 0&
Лучший способ понять что-то самому — объяснить это другому.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 10.11.2005 (Чт) 17:38

Только WM_CLOSE лучше постить, чтобы свою программу не подвешивать.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.11.2005 (Чт) 17:41

WM_DESTROY слать как раз не надо.
Но если хочется хардкора, можно просто вызвать DestroyWindow.
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 10.11.2005 (Чт) 18:04

У меня такое дело: не фига не удаляется окно.

На это может ли влиять, то что она дочерняя и вызвана с Show 1?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.11.2005 (Чт) 18:06

Щас будет вопрос, как программно кликнуть ОК...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.11.2005 (Чт) 18:09

Zoomie, шли лучше своему окну WM_SYSCOMMAND(SC_CLOSE)
Изображение

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 10.11.2005 (Чт) 18:41

То же самое :(

Может кто знает противное окошко об ошибке в "Соло на клавиатуре"?

Мне его и надо закрывать сразу, а не по истечении времени.

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 10.11.2005 (Чт) 19:50

Да и вот еще:

Объекты на форме выгружаются, а с формой не получается, в других программах окна закрываются, а тут нет.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 10.11.2005 (Чт) 20:48

Кстати, может окна лучше таки закрывать с помощью DestroyWindow? Все-таки более логически...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.11.2005 (Чт) 21:04

ANDLL, недостаточно логически (вруг им перед закрытием надо чего-нибудь поудалять?)
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 10.11.2005 (Чт) 21:22

Тогда CloseWindow.
В любом случае кажеться более разумным исупользование соответствующих API а не SendMessage, когда таковые сущесутвуют.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.11.2005 (Чт) 21:34

CloseWindow сворачивает, а не закрывает.
Здесь как раз разумно послать сообщение, и пусть окно само решает, что ему нужно сделать.
Изображение

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 10.11.2005 (Чт) 23:14

Ну да, в АПИ sendMsgEx() . Узнать Hwnd окна и послать .. По крайней мере у меня срабатывало- окно исчезало (а просто SendMsg - почему то не всегда, хотя в примерах ее чаще встречаешь)
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.11.2005 (Чт) 23:21

Не знаю ни одной, ни второй.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 11.11.2005 (Пт) 11:12

Постите (опустив голову, как нашкодивший ребенок), что ввел ВАС в заблуждение!
Конечно:
SendMessage lngHandle, WM_CLOSED, 0, 0
или
ret = PostMessage(wnd, WM_CLOSED, ByVal 0&, ByVal 0&)
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.11.2005 (Пт) 11:40

WM_CLOSED тоже нету в природе.
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.11.2005 (Пт) 12:30

Для top-level окон - WM_NCDESTROY, проверено на проводнике WinXP. В Win2k работала и пара WM_CLOSE + WM_DESTROY, просто WM_CLOSE вызывало ошибку.
Для дочерних (включая mdi) достаточно WM_CLOSE.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.11.2005 (Пт) 12:37

Кстати, пару лет назад для аналогичных целей написал прогу. Ставит хук на клаву, садится в трей и по нажатии F9 киляет окно, находящееся под курсором мыши.
Вложения
wdestroyer.rar
(9.17 Кб) Скачиваний: 31
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.11.2005 (Пт) 15:53

Antonariy, а WM_SYSCOMMAND(SC_CLOSE) не проверял?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.11.2005 (Пт) 16:52

tyomitch
Нет
Лучший способ понять что-то самому — объяснить это другому.

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 11.11.2005 (Пт) 16:58

Antonariy, класная прога! Новот только все равно окно сообщения не удаляет, а оно удаляется спокойно только по истечению времени какого-нибудь таймера на 5 секунд.

Но есть другая идея: показывать кнопку закрытия заранее, но как можно Visible устанавливать через API?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.11.2005 (Пт) 17:43

Получить hwnd твоего окна, сделать ему EnumChildWindows, найти среди них невидимые, показать.
Лучший способ понять что-то самому — объяснить это другому.

Zoomie
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 181
Зарегистрирован: 10.05.2004 (Пн) 10:07
Откуда: СПб

Сообщение Zoomie » 11.11.2005 (Пт) 17:49

Что-то не понял как пользоваться EnumChildWindows :(

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 11.11.2005 (Пт) 17:51

Лезем в Api-Guide и смотрим пример по EnumChildWindows. Всё просто.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 11.11.2005 (Пт) 17:54

Лучший способ понять что-то самому — объяснить это другому.

SergT
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 237
Зарегистрирован: 22.06.2005 (Ср) 21:50
Откуда: Москва

Сообщение SergT » 11.11.2005 (Пт) 23:13

tyomitch писал(а):WM_CLOSED тоже нету в природе.

Sorry! Без D! Имею склонность к переименованию переменных и проч... Не держите зла , я просто устал (немного). На копмпе, с которого выхожу в Инет , работают только дети (со своими дурацкими играми :evil: ) Вирусы, трояны.. Все, что печатаю на форуме - по памяти. НО в любом поиске можно найти (ЕСЛИ ОЧЕНЬ ХОЧЕТСЯ) ссылку без ошибки... Главное идея.. Но я могу ошибаться... ИМХО :shock:
Л. Толстой, «зачем обдумывать обдуманное, бери готовое и иди дальше, в этом сила человечества»
"Всё в наших руках, поэтому их нельзя опускать" (Коко Шанель)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 141

    TopList