Как заставить приложение VB6 работать в Windows 7, если не получается перекомпилировать

У меня есть приложение VB6, которое все еще ссылается на некоторые старые библиотеки VB5 (dll, vbr, tlb и ocx). У нас возникают некоторые странные проблемы, например, он не может прочитать реестр с помощью advapi32.dll. Я пробовал запустить приложение с разрешениями UAC, но все равно ничего не вышло. Мы не можем перекомпилировать приложение, потому что в нем есть несколько элементов управления и компонентов, которые нельзя найти для загрузки и которые больше не поддерживаются. Любые идеи (кроме переписывания, поскольку мы уже работаем над этим) приветствуются.

К тому же, мы уже пробовали это приложение в режиме Windows XP. Однако вот мои "претензии" к этому:

  • Windows, загруженные как vbFormCenter и vbModal, центрируются между двумя мониторами. Даже после перетаскивания на один из мониторов он не запоминает, где должно быть модальное окно.
  • При попытке печати произвольно распечатывается задание до 5 минут. Это потому, что (или, по крайней мере, я думаю, что это причина) машина XP Mode также загружает принтеры с хоста.
  • Некоторая связь DCOM кажется вялой случайным образом
  • Принтер, подключенный через USB, может быть только на хосте или виртуальной машине, но не на обоих, потому что он использует сквозную передачу. Даже в этом случае вы не можете «заставить» приложение разрешить подключенный принтер.
  • Старые приложения (VB5 и VB6) не всегда закрываются при вызове Application.Exit. Не уверен, почему это так, но вы можете открыть форму и вызвать подпрограмму «Выход» при нажатии кнопки и из 25 раз, в 10-20% случаев она не закрывается. Таким образом, нет способа показать приложение как подпроцесс на хост-машине, чтобы его можно было убить.

Уф. Это всего несколько.


person Jason N. Gaylord    schedule 11.12.2009    source источник
comment
Вам будет намного лучше, если вы действительно сможете перекомпилировать программу. Это также похоже на то, что для этого нужен файл манифеста. Я бы посоветовал найти названия конкретных элементов управления и компонентов, которые не могут быть найдены, а также конкретные сообщения об ошибках при попытке чтения реестра. Спросите в groups.google.ca/group/… Вы, вероятно, получите много полезных ответов в этой группе новостей.   -  person Tony Toews    schedule 14.12.2009
comment
groups.google.ca/group/ microsoft.public.vb.general.discussion /   -  person Tony Toews    schedule 14.12.2009


Ответы (4)


VB 5.0 не поддерживается в Windows 7, хотя VB 6.0 поддерживается, так что я предполагаю, что это ваша проблема.

Решение этой проблемы - запустить виртуальную машину Windows XP, а в Windows 7 есть довольно безболезненный процесс для этого в режиме XP.

Проверить,

http://www.microsoft.com/windows/virtual-pc/download.aspx

person mattdlong    schedule 11.12.2009
comment
Пробовал, и это не работает должным образом. Все окна загружаются в середине экрана, и он зависает до 5 минут при попытке печати (поскольку загружает принтеры с хоста и т. Д.). Кроме того, если у вас есть локальный принтер, вы не можете принудительно подключить его, и даже если бы вы могли, тогда хост-машина не могла его использовать. - person Jason N. Gaylord; 11.12.2009
comment
Поэтому я думаю, что, учитывая, что VB5 не поддерживается в window7, у вас действительно есть только два варианта: найти способ заставить виртуальную машину работать так, как вам нужно, или вернуться к Windows XP, пока ваша перезапись не будет завершена. . Извините за то, что несете плохие новости, удачи! - person mattdlong; 11.12.2009

Это может быть глупый вопрос, но пробовали ли вы запустить его в режиме совместимости?

person Powerlord    schedule 11.12.2009

Вы можете попробовать использовать виртуальную машину Windows XP ... при условии, что ей не нужно запускать непосредственно на хосте.

person drakaan    schedule 11.12.2009
comment
Не виртуальный ПК ... попробуйте виртуальный бокс ... После создания виртуальной машины (с выключенной виртуальной машиной) перейдите на вкладку Details в консоли VirtualBox. Щелкните ссылку USB-контроллер. Во всплывающем окне установите флажок USB-устройства и щелкните правой кнопкой мыши значок USB plus. Выберите принтер. Если принтер не отображается, возможно, у вас не было подключенного и включенного принтера, когда вы включали гостевую систему. После этого вы сможете использовать принтер через виртуальный бокс. - person drakaan; 11.12.2009

Альтернативой виртуальной машине XP, имеющей некоторые преимущества, является Parallels. Это дешево, надежно и предлагает аккуратный режим прозрачности, так что программа, запущенная на виртуальной машине, кажется, работает как родная на рабочем столе. Я использую Parallels на своем компьютере под управлением Windows 7 с тех пор, как на нем было запущено несколько рабочих столов XP для разработки устаревшего клиентского программного обеспечения, и это работает.

person Cruachan    schedule 11.12.2009
comment
Хорошее предложение, но я бы предпочел не покупать ничего. - person Jason N. Gaylord; 11.12.2009