Помогите с зависанием при открытии файла

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

Помогите с зависанием при открытии файла

Сообщение Sur » 27.03.2008 (Чт) 11:01

На некоторых системах WinXP работа с прикрепленной программой приводит к ее зависанию насмерть. А на некоторых все норм. У кого повиснет, помогите побороть пожалуйста.
Вложения
vbOpenFile.zip
пример приводящий к зависанию
(5.3 Кб) Скачиваний: 64
Пить или не пить? - да не вопрос!

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

Сообщение Хакер » 27.03.2008 (Чт) 12:44

1) Шаг с интернетом нафиг не нужен.
2) Класс cCommonDialog писали дятлы (или ламеры).

Строка 115:
Код: Выделить всё
    ' InitDir can take initial directory string
    .lpstrInitialDir = InitDir & vbNullChar & vbNullChar

Кто за них (или за тебя) должен проверять, существует ли путь InitDir в системе?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 27.03.2008 (Чт) 13:05

У тебя виснет без шага с инетом?
Проверку доступности пути делать обязательно? Просто когда путь недоступен, система предлагает мой компьютер и ладненько (что она и делает без шага с инетом!)
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 04.04.2008 (Пт) 11:53

Очень прошу, не откажите в решении проблемы. Неужели ни у кого не виснет...
Пить или не пить? - да не вопрос!

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

Сообщение Хакер » 04.04.2008 (Пт) 12:51

Sur
Я уже указал. Читай внимательно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 04.04.2008 (Пт) 15:29

Тут ещё один вариант есть. Если открывается папка с *.url ярлыками, винда лезет в тырнет. Видимо, хочет извлечь иконку сайта. Хотя, могу и ошибиться.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 07.04.2008 (Пн) 10:02

Хакер писал(а):1) Шаг с интернетом нафиг не нужен.
2) Класс cCommonDialog писали дятлы (или ламеры).

Класс брался с vbaccelerator.com. Я им доверял, а они дятлы?
Хакер писал(а):Кто за них (или за тебя) должен проверять, существует ли путь InitDir в системе?

Система сама пытается открыть папку, где я был прошлый раз.
Если пользователь просто забыл вставить диск, почему бы системе не попросить его сделать это, а я, проверив что пути нет, отрежу эту возможность?
И почему пример на разных системах работает по-разному?
Почему без шага с инетом ничего не виснет, есть InitDir или нет?
Просто не хотелось выкручиваться, если это и так должно работать.

По твоему совету нужно:
- запомнить путь InitDir с последнего удачного открытия файла (до этого момента я не знаю как его узнать)
- в следующий раз проверять его, и если нет, то выводить пользователю свой попап "Вставьте диск"
- при отказе устанавливать InitDir на что-то доступное ("мой компьютер")

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

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 07.04.2008 (Пн) 10:48

Код: Выделить всё
'InitDir can take initial directory string
InitDir = "C:\"
.lpstrInitialDir = InitDir & vbNullChar & vbNullChar

Смертельное зависание примера.

На одной машине стоят две системы, одна свежая, другая "рабочая". На чистой нет проблем :(
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 14.04.2008 (Пн) 17:07

Кто-нибудь еще может прокомментировать происходящее?
Есть те, у кого виснет пример?
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 14.04.2008 (Пн) 17:08

Кто-нибудь еще может прокомментировать происходящее?
Есть те, у кого виснет пример?
Пить или не пить? - да не вопрос!

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

Сообщение Хакер » 14.04.2008 (Пн) 17:13

Кто за них (или за тебя) должен проверять, существует ли путь InitDir в системе?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 16.04.2008 (Ср) 17:54

Хакер, ты издеваешся? ) Видиш же, что я не понимаю твоих намеков.
Я присваиваю InitDir существующий путь "C:\", что еще мне надо проверить?
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 24.04.2008 (Чт) 15:03

Может кто другой растолкует мне, на что намекал Хакер, раз сам он не может?
Да и основной вопрос в силе.
Пить или не пить? - да не вопрос!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 24.04.2008 (Чт) 15:09

В очередной раз посоветую не тупить и изпользоваться стандартными средствами. Зачем вам какой то левый класс, если есть стандартный диалог Open для файла?
I don't understand. Sorry.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 24.04.2008 (Чт) 18:02

>Зачем вам какой то левый класс, если есть стандартный диалог ...
Почему класс левый? Без лишних ocx-ов хотелось обойтись и понять как это возможно на апи. Я попробую, но не уводите от темы. Подозреваю, вы тоже не знаете ответ.

ps.
-Доктор, почему люди не обращают на меня внимание?
-Следующий!
Пить или не пить? - да не вопрос!

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

Сообщение alibek » 24.04.2008 (Чт) 20:43

80% примеров с того сайта являются отстоем. Так что не надо их использовать, глюк наверняка в реализации.
Лучше напиши сам.
Если не можешь, попробуй этот пример использовать, я его из одного своего проекта выдрал. Правда там лишнее есть, но немного и оно мешать не будет.
Используй функции OpenFile/SaveFile, аргументы очевидны по названиям.
Вложения
modWinAPI.zip
API-функции для открытия/сохранения файлов и выбора каталога.
(4.24 Кб) Скачиваний: 48
Lasciate ogni speranza, voi ch'entrate.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 24.04.2008 (Чт) 21:15

80% примеров с того сайта являются отстоем. Так что не надо их использовать, глюк наверняка в реализации.

Я перекачал несколько реализаций с разных мест. И Ваша реализация при беглом осмотре ничем не отличается (проверю точнее утром, заранее извиняюсь если ошибся.)

Вы хоть в задачу вникните пожалуйста. У меня прекрасно работают любые реализации опенфайла на любой реализации винXP.
Не работает в связке с шагом Инета в примере! Ну не верю я, что виновата реализация опенфайла.
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 24.04.2008 (Чт) 21:21

И кстати alibek,
Кто за них (или за тебя) должен проверять, существует ли путь InitDir в системе? (С) Хакер
Пить или не пить? - да не вопрос!

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

Сообщение alibek » 24.04.2008 (Чт) 21:58

У меня не виснет.
Проверять существование InitDir необязательно, в худшем случае просто не сработает API-функция.
Думаю, что в зависании виноват не VB.
Lasciate ogni speranza, voi ch'entrate.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 25.04.2008 (Пт) 9:55

Спасибо Большой Человек за понимание, жаль что не виснет, ты бы наверняка нашел почему.
Тоже думаю, что vb не виноват, просто мне не к кому больше обратиться за советом.

Со стандартным comdlg32.ocx тоже виснет.
Значит это скорее вопрос к "системщикам". Я даже просто копировал system32 с чистой системы в старую в сейфмоде, удалив бекапы. В новой работает, в старой нет.

Я больше не буду апать тему, кто ответит - хорошо. Еще раз спасибо.
Пить или не пить? - да не вопрос!

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

Сообщение alibek » 25.04.2008 (Пт) 10:23

Я думаю, дело в CD-приводе.
Попробуй установить виртуальный привод (Daemon Tools или Nero ImageDrive) и повторить открытие файлов с него. Скорее всего с ним зависания не будет.
Lasciate ogni speranza, voi ch'entrate.

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 29.04.2008 (Вт) 10:00

Попробовал Алкоголь120, зависание. Эксперименты провожу на двух системах на _одной_ машине. Буду ставить программы, которыми пользуюсь на чистую систему, пока не возникнет зависание примера.
Пить или не пить? - да не вопрос!

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 29.04.2008 (Вт) 11:06

Виноват @Касперский, хотя мне от этого не легче, так как этот антивирус достаточно популярен. Еще раз всем спасибо.
Пить или не пить? - да не вопрос!


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 20

    TopList