GetOpenFileName в Windows 7

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

GetOpenFileName в Windows 7

Сообщение bvg_666 » 21.05.2010 (Пт) 12:22

Здравствуйте!
Работаю на VB6. Вопрос следующий: как из приложения на VB6, установленного на Windows7, выбрать файл. Стандартный контрол Common Dialog ругается при выполнении метода ShowOpen, а API-функция GetOpenFileName тоже не работает (приложение просто закрывается).

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

Re: GetOpenFileName в Windows 7

Сообщение Antonariy » 21.05.2010 (Пт) 13:58

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

NeverGone
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 107
Зарегистрирован: 11.11.2007 (Вс) 21:05
Откуда: Москва

Re: GetOpenFileName в Windows 7

Сообщение NeverGone » 21.05.2010 (Пт) 14:27

Antonariy писал(а):Работает.
+1, проверено на х86 и х64

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

Re: GetOpenFileName в Windows 7

Сообщение Денис » 21.05.2010 (Пт) 15:17

bvg_666 писал(а):Стандартный контрол Common Dialog ругается при выполнении метода ShowOpen, а API-функция GetOpenFileName тоже не работает (приложение просто закрывается).

Проверьте версии рантайма (msvbvm6.dll) в семерке. Как правило, бывает, что какая-нибудь "кулхацкерская тулза" пихает в system32 свою версию библиотеки, несовместимую с остальными, нормальными программами (я на таком подкалывался).
Ну и сервиспак шестой на студию поставьте, если еще не установлен.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

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

Re: GetOpenFileName в Windows 7

Сообщение alibek » 21.05.2010 (Пт) 15:18

Переношу.

tag_warning
Lasciate ogni speranza, voi ch'entrate.

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

Re: GetOpenFileName в Windows 7

Сообщение Antonariy » 21.05.2010 (Пт) 16:36

Тут скорее нужно проверять радиус кривизны рук автора путем предоставления им неработающего кода.
Лучший способ понять что-то самому — объяснить это другому.

bvg_666
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.05.2010 (Пт) 12:09

Re: GetOpenFileName в Windows 7

Сообщение bvg_666 » 24.05.2010 (Пн) 9:09

sp6 на VS стоит, тестирование проходит на виртуалке с Windows7, где больше ничего не установлено
фрагмент кода:
1. Common Dialog
cdOpenFile.FileName = ""
cdOpenFile.ShowOpen - зависание
2. GetOpenFileName
Dim OpenFile As OpenFileName
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = hWnd
OpenFile.hInstance = App.hInstance
sFilter = ""
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(1000, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = String(257, 0)
OpenFile.nMaxFileTitle = Len(OpenFile.lpstrFileTitle) - 1
OpenFile.lpstrInitialDir = CurDir
OpenFile.lpstrTitle = Title
OpenFile.Flags = flag Or OFN_EXPLORER
lReturn = GetOpenFileName(OpenFile) - приложение вылетает

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

Re: GetOpenFileName в Windows 7

Сообщение Хакер » 24.05.2010 (Пн) 9:41

Хочешь оказаться наказанным?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

bvg_666
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.05.2010 (Пт) 12:09

Re: GetOpenFileName в Windows 7

Сообщение bvg_666 » 24.05.2010 (Пн) 11:05

Денис писал(а):
bvg_666 писал(а):Проверьте версии рантайма (msvbvm6.dll) в семерке. Как правило, бывает, что какая-нибудь "кулхацкерская тулза" пихает в system32 свою версию библиотеки, несовместимую с остальными, нормальными программами (я на таком подкалывался).
Ну и сервиспак шестой на студию поставьте, если еще не установлен.


sp6 на VS стоит, тестирование проходит на виртуалке с Windows7, где больше ничего не установлено
фрагмент кода:
Common Dialog
Код: Выделить всё
cdOpenFile.FileName = ""
cdOpenFile.ShowOpen
- зависание

ф-ция GetOpenFileName
Код: Выделить всё
Dim OpenFile As OpenFileName
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = hWnd
OpenFile.hInstance = App.hInstance
sFilter = ""
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(1000, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = String(257, 0)
OpenFile.nMaxFileTitle = Len(OpenFile.lpstrFileTitle) - 1
OpenFile.lpstrInitialDir = CurDir
OpenFile.lpstrTitle = Title
OpenFile.Flags = flag Or OFN_EXPLORER
lReturn = GetOpenFileName(OpenFile)
- приложение вылетает

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

Re: GetOpenFileName в Windows 7

Сообщение Antonariy » 24.05.2010 (Пн) 14:22

Видимо глюк виртуалки. Нет ни одной разумной причины для того, чтобы GetOpenFileName (или CommonDialog, использующий ее же) не работало под семеркой.
Лучший способ понять что-то самому — объяснить это другому.

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

Re: GetOpenFileName в Windows 7

Сообщение alibek » 24.05.2010 (Пн) 15:02

hInstance в данном случае задавать не нужно.
И попробуй использовать W-функцию.
Lasciate ogni speranza, voi ch'entrate.

bvg_666
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.05.2010 (Пт) 12:09

Re: GetOpenFileName в Windows 7

Сообщение bvg_666 » 24.05.2010 (Пн) 17:50

Antonariy писал(а):Видимо глюк виртуалки. Нет ни одной разумной причины для того, чтобы GetOpenFileName (или CommonDialog, использующий ее же) не работало под семеркой.


У всех наших пользователей под W7 ошибка при открытии файла.
Доп.информация(может это важно): программа собирается на компьютере-сборщике с W2003ServerSP2(все необходимые сервис-паки для Windows и VB установлены). Исходный код тест-программы во вложении (несколько строк). Что не так?
FileSystem.rar
(2.98 Кб) Скачиваний: 76

bvg_666
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.05.2010 (Пт) 12:09

Re: GetOpenFileName в Windows 7

Сообщение bvg_666 » 27.05.2010 (Чт) 13:13

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

bvg_666
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 21.05.2010 (Пт) 12:09

Re: GetOpenFileName в Windows 7

Сообщение bvg_666 » 31.05.2010 (Пн) 9:44

После того как я выложил проект мне никто не отвечает. Что произошло? :)
Как мне решить эту проблему с Win 7?

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

Re: GetOpenFileName в Windows 7

Сообщение Antonariy » 31.05.2010 (Пн) 10:33

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


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

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 28

    TopList