Windows 7 + vb6 - зависание окон

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

Windows 7 + vb6 - зависание окон

Сообщение lbvf-spx » 14.07.2011 (Чт) 16:44

Приложение MDI написано на VB6.
Устанавливается на Windows 7.
После закрытия одного из дочерних окон программа передает фокус на уже открытое окно и зависает.
Процессор грузится на 100% грузит его само приложение.

Вопрос: из-за чего это может быть и как решить проблему?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Windows 7 + vb6 - зависание окон

Сообщение Хакер » 14.07.2011 (Чт) 16:49

lbvf-spx писал(а):Вопрос: из-за чего это может быть

Дурная логика работы.

lbvf-spx писал(а):как решить проблему?

Найти «спин-лок» и устанить.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Windows 7 + vb6 - зависание окон

Сообщение ger_kar » 14.07.2011 (Чт) 20:43

Хакер писал(а):Найти «спин-лок» и устанить.
Ты думаешь в логике (алгоритме) работы приложения на VB реализован "спин-лок" :shock: ?
Бороться и искать, найти и перепрятать

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Windows 7 + vb6 - зависание окон

Сообщение Денис » 15.07.2011 (Пт) 11:02

Возможность спин-лока может порождаться неправильным программированием объектов и/или функций, которые выполняют действия для которых не предназначены.
Например, навскидку, DoEvents в методе Resize. Ну или еще как нибудь поизвращаться.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Windows 7 + vb6 - зависание окон

Сообщение ger_kar » 15.07.2011 (Пт) 11:30

В смысле непроизвольный (т.е. не заложенный специально, как часть работы алгоритма приложения), а возникший как побочный эффект? Но тогда по идее ему должно быть до фонаря, на какой системе запущено приложение. Я подумал про другое, после того, как Хакер, на примере показал, как можно средствами VB cделать отладчик, а уже ничему не удивляюсь.
Бороться и искать, найти и перепрятать

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Windows 7 + vb6 - зависание окон

Сообщение Денис » 15.07.2011 (Пт) 16:36

ger_kar писал(а):как можно средствами VB cделать отладчик

То средства WinAPI вообще-то были... Я бы не заносил это в заслугу самого языка, потому что код на бейсике с активным использованием WinAPI c минимальными изменениями можно портировать в тот же паскаль.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Windows 7 + vb6 - зависание окон

Сообщение ger_kar » 15.07.2011 (Пт) 16:55

Кстати паскаль/делфи интуитивно понятный язык, в отличии от Си и его производных, я например никогда его не учил, но когда нет примеров использования WinAPI на VB, пользуюсь примерами для делфи и мне все понятно. А начинашь смотреть Си шные примеры - ну нихрена не понятно!
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Windows 7 + vb6 - зависание окон

Сообщение ger_kar » 15.07.2011 (Пт) 18:36

Денис писал(а):
ger_kar писал(а):как можно средствами VB cделать отладчик

То средства WinAPI вообще-то были... Я бы не заносил это в заслугу самого языка, потому что код на бейсике с активным использованием WinAPI c минимальными изменениями можно портировать в тот же паскаль.
Я подумал, что вообще язык - каким бы он не был, по сути не причем, ибо это всего лишь инструмент, а заслуга всегда того, кто владеет этим инструментом владеет надлежащим образом. Т.е. если программист виртуоз типа Хакера, то он напишет все что угодно, на чем угодно, и расширит возможности самого языка. А плохому танцору программисту язык мешает...
Бороться и искать, найти и перепрятать

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: Windows 7 + vb6 - зависание окон

Сообщение retivykh » 26.07.2011 (Вт) 18:15

Хакер писал(а):Найти «спин-лок» и устанить.

Как искать «спин-лок»? Или где почитать как его искать?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Windows 7 + vb6 - зависание окон

Сообщение Хакер » 26.07.2011 (Вт) 18:19

Что-нибудь вроде
Do

Loop While x + 2 <> x - 2
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: Windows 7 + vb6 - зависание окон

Сообщение retivykh » 26.07.2011 (Вт) 18:30

Хакер писал(а):Что-нибудь вроде
Do

Loop While x + 2 <> x - 2

Это вряд ли. Под WinXP все работало несколько лет и до сих пор работает.
Куда копать то?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Windows 7 + vb6 - зависание окон

Сообщение Хакер » 26.07.2011 (Вт) 18:38

Блин, нажмите Ctrl+Break при отладке в среде, и посмотрите, где оно крутится.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Windows 7 + vb6 - зависание окон

Сообщение ger_kar » 26.07.2011 (Вт) 18:41

Ну наверное надо начинать с отладки в Windows 7. Сначала выяснить примерное место, потом сужать груг поисков. Ты методами отладки хорошо владеешь? Если да, то я думаю, что с локализацией проблем особо не возникнет, а если не владеешь, то тогда надо сначала про эти методы почитать. Сабклассинг в проге используется?
Бороться и искать, найти и перепрятать

retivykh
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 14.03.2010 (Вс) 23:17

Re: Windows 7 + vb6 - зависание окон

Сообщение retivykh » 26.07.2011 (Вт) 19:01

Хакер писал(а):Блин, нажмите Ctrl+Break при отладке в среде, и посмотрите, где оно крутится.

Первое с чего начал. Виснет вместе с вб. На ктрл+брейк не реагирует. Снимаю через диспетчер задач

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Windows 7 + vb6 - зависание окон

Сообщение Хакер » 26.07.2011 (Вт) 19:03

retivykh писал(а):Первое с чего начал. Виснет вместе с вб.

Там один поток.

retivykh писал(а):На ктрл+брейк не реагирует

С трудом верится. Хотя, всё возможно.
Ну тогда поставить на паузу в OllyDbg, и посмотреть там, где оно крутится.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

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

    TopList  
cron