Visual Basic 6.0 - Создание дистрибутива
Создание дистрибутива
Я приветствую тебя Alexander!
Sat Feb 14 2004 12:56, Alexander Shherbakov (2:5020/794.77) wrote to Kapaev Alex:
AS> Есть такой сетапер, бесплатный, InnoSetup. С директориями умеет.
AS> Зарегистрирует что покажешь. Размер - порядка мегабайта.
Да, неплохой сетапер. Только он почему то под ХР при установке не всё регистрирует :( или неправельно регистрирует - может я что то не то делаю?
С глубочайшим уважением Sergey
* Origin: Latona (FidoNet 2:4651/18.50)
Re[3]: Райт-клик на текстовом поле
Добpый день\утpо\вечеp\ночь, достопочтимый Sergey !
19 февpаля 04 Sergey Merzlikin (2:5020/400) => Максим Кнышов
>> SM> В общем случае задача pешается сабклассингом текстбокса с ловлей
>> SM> WM_CONTEXTMENU и "глотанием" его, т.е. для этого сообщения следует
SM> сpазу
>> SM> завеpшать обpаботчик, не вызывая CallWindowProc.
[... малость поскипано ...]
SM> Это пpостейший вид сабклассинга, множественные экземпляpы фоpмы не
SM> поддеpживаются.
я вот пpоще от стандаpтного меню избавился, когда своё надо было вывести:
Private Sub Пpимечания_MouseDown(Button As Integer, Shift As Integer, x As
Single, y As Single)
If Button And vbRightButton Then
Пpимечания.Enabled = False 'избавляемся от стандаpтного меню
Пpимечания.Enabled = True
PopupMenu mnuPopupMyMenu
End If
End Sub
ЗЫ хз почему TextBox так pаботает,
но пеpедёpгивание .Enabled = False/True
помогает ...
С бестами и pегаpдами
Dmitry ds [@] u-kon.ru
* Origin: Hичто не слишком! (2:5015/23.70)
Райт-клик на текстовом поле
From: Максим Кнышов <knyshow [@] mail.dsip.net>
Привет Dmitry!
DS> ЗЫ хз почему TextBox так pаботает, но пеpедёpгивание .Enabled = False/True помогает ...
Тоже хорошая идея...
--
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•
Максим Кнышов [ knyshow#mail.dsip.net ] [ http://gbu.dvostok.com ]
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•
Последняя версия программы Golden BackUp ( http://gbu.dvostok.com ) - 0.0.188 Beta 9
•>ўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўўў<•
* Origin: КПКП "Транс Агентство" (2:5020/400)
Упал... в унитаз упал
From: Mike <mikeNOS [@] skeptik.net>
Hа компьютере (Windows 2000 SP4 и Visual Basic 6.0 SP5) имеется несколько
приложений на Бэйсике, еще месяц назад отлаженных, откомпилированных и
благополучно забытых.
И вот пару дней назад понадобилось их открыть и чего-то там поменять. Hо с
одним из них творится странное: открываем проект, запускаем его прямо из
VB, и сразу же выдается:
VB6.EXE - Application Error
The instruction at "0x********" referenced memory at "0x********". The
memory could not be "written".
Click on OK to terminate the program
Click on CANCEL to debug the program
и Бэйсик вылетает к чертовой бабушке. Один коллега сказал, что иногда
такое бывает, если при запуске не открыта ни одна форма. Открыл форму,
запустил - то же самое. Открыл две формы, три - не помогло. Запуск Trace
Into, Step Over или Start with full compile дает тот же эффект. Hо если
сделать File->Make и запустить полученный экзешничек, то все проходит
нормально.
Все это только в одном VB-приложении - запуск из VB любого другого проекта
происходит нормально. В то же время на другой машине (Win 2000 SP3 и VB
6.0 SP5) и этот проект запускается без проблем. Подскажите, пожалуйста,
как бороться - не хочется из-за этого винды переставлять.
--
Best regards
(M)ike
При ответе на e-mail убрать из адреса NOS
* Origin: Best antimagic/antiUFO cure: http://skeptik.net (2:5020/400)
.NET Х Win32
оПХБЕРЯРБСЧ!
я ОКЮРТHПЛHИ .NET ДЕК МЕ ХЛЕК. мH ОЮПС ВЕКHБЕЙ СРБЕПФДЮКХ, ВРH Б VS7 ЛHФМH
ОHКСВХРЭ МHПЛЮКЭМШИ exeЬМХЙ ОHД Win32. бВЕПЮ ОHЯРЮБХК VS7, МH ОHКСВХРЭ
exeЬМХЙ ОHД Win32 ОHКСВХКHЯЭ РHКЭЙH МЮ C++. бЮЯХЙ Х C# ОПЕДКЮЦЮЧР РHКЭЙH ОHД
.NET. цДЕ ЯHАЮЙЮ ГЮПШРЮ?
юМДПЕИ.
* Origin: Zenon N.S.P. news server (2:5020/52.0)
Еще раз .NET Х Win32 (Пардон за кодировку)
Приветствую!
С платформой .NET дел не имел. Hо пару человек утверждали, что в VS7 можно
получить нормальный exeшник под Win32. Вчера поставил VS7, но получить
exeшник под Win32 получилось только на C++. Васик и C# предлагают только под
.NET. Где собака зарыта?
Андрей.
* Origin: Zenon N.S.P. news server (2:5020/52.0)
Re[3]: Райт-клик на текстовом поле
From: "Sergey Merzlikin" <sm [@] smsoft.ru>
>
> SM> В общем случае задача решается сабклассингом текстбокса с ловлей
> SM> WM_CONTEXTMENU и "глотанием" его, т.е. для этого сообщения следует
сразу
> SM> завершать обработчик, не вызывая CallWindowProc.
>
> Вот сабклассинг - мое слабоеместо. семпл есть?
В простейшем виде это выглядит так: создаем проект Standard EXE, на Form1
добавляем текстбокс Text1. Создаем меню mnu1, снимаем ему галку Visible,
добавляем ему произвольное подменю.
Код формы:
Option Explicit
Private Sub Form_Load()
' Включение сабклассинга
pWndProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf TxtProc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Выключение сабклассинга
SetWindowLong Text1.hWnd, GWL_WNDPROC, pWndProc
End Sub
Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Text1.SetFocus
PopupMenu mnu1
End Sub
Добавляем стандартный модуль.
Код модуля:
Option Explicit
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA"
_
(ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As
Long
Public Const GWL_WNDPROC = -4&
Private Const WM_CONTEXTMENU = &H7B&
Public pWndProc As Long 'Сохраненный адрес прежней оконной процедуры
Public Function TxtProc(ByVal hWnd As Long, ByVal uMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
' Hовая оконная процедура - она ловит все сообщения окна
Select Case uMsg
Case WM_CONTEXTMENU
' Система вызвала контекстное меню - ничего делать не надо,
' просто вернуть 0
Case Else
' Для остальных сообщений нужно вызвать прежнюю
' оконную процедуру и вернуть ее результат
TxtProc = CallWindowProc(pWndProc, hWnd, uMsg, wParam, lParam)
End Select
End Function
Это простейший вид сабклассинга, множественные экземпляры формы не
поддерживаются.
--
Сергей Мерзликин
http://www.smsoft.ru/ru/
* Origin: Sovintel (2:5020/400)
Threading...
From: "A. Skrobov" <tyomitch [@] r66.ru>
Tue Feb 24 2004 23:53, Savelov Anton wrote to All:
SA> Есть вопрос .... написал я прогу в ней создаю отдельный процесс
SA> для функции с помощью: CreateEvent и CreateThread,
Процессы и нити, кстати, - разные вещи.
SA> но столкнулся с проблемой, а как этот процесс выгрузить?
SA> Пробывал ExitThread и TerminateThread, но в итоге выгружается
SA> вся прога :( (или зависает)
SA> Может кто подскажет как тут быть? (можно с примером, plzzz)
Вообще же, посмотри здесь:
http://www.jasonbock.net/vbthread.html
http://www.freevbcode.com/ShowCode.asp?ID=1287
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)
Re: Многоязыковая поддержка...
From: Alexander Asyabrik <belmis [@] mail.belpak.by>
Привет, Artem.
Вы, было дело, писали, 2:28 25.02.04:
AP> Обpащаясь с вопоpосом ко всем:
AP> Уже не один pаз встpечаю коммеpческие многоязыковые пpогpаммы, в котоpых
AP> есть диpектоpия Languages, а в ней файлы типа russian.lng, english.lng и
AP> так далее.
AP> Откpыв этот файл видим пpостой список типа:
AP> &Файл
AP> &Hовый
AP> &Откpыть
AP> и т.д.
AP> Пеpвое, что пpиходит на yм, откpыть файл как текст, pазбить по стpокам,
AP> split и в массив их.
AP> Hо это означает, что все меню и вообще все текстовые сообщения в пpогpамме
AP> пpидется yказывать как:
AP> myLable1.Caption = lngArray(123) ' и томy подобное.
AP> А это же гемоppой жyткий. И пpямой пyть к ошибкам, пеpепyтанным стpокам...
А попробуй-ка теперь вот перепутать:
Public Enum Mesages
msg_myLable1Caption = 1
msg_myLable1ToolTipText = 2
........................
msg_CantOpenFile = 666
' etc...
End Enum
Public Function GetMesage(index As Mesages) As String
GetMesage = lngArray(index)
End Function
Public Sub SetLanguage(LangFile As String)
'Bla-Bla, сам напишешь код
myLable1.Caption = GetMesage(msg_myLable1Caption)
myLable1.ToolTipText = GetMesage(msg_myLable1ToolTipText)
'etc...
End Sub
Private Sub Command1_Click()
If GetFile(FileToOpen) = False Then
MsgBox GetMesage(msg_CantOpenFile) & FileToOpen, vbCritical
End If
End Sub
--
Alexander
* Origin: Talk.Mail.Ru (2:5020/400)
Создание дистрибутива
Я приветствую тебя Alexander!
Sat Feb 14 2004 12:56, Alexander Shherbakov (2:5020/794.77) wrote to Kapaev Alex:
AS> Есть такой сетапер, бесплатный, InnoSetup. С директориями умеет.
AS> Зарегистрирует что покажешь. Размер - порядка мегабайта.
Да, неплохой сетапер. Только он почему то под ХР при установке не всё регистрирует :( или неправельно регистрирует - может я что то не то делаю?
С глубочайшим уважением Sergey
* Origin: Latona (FidoNet 2:4651/18.50)