Современные решения

для защиты Windows приложений

и восстановления исходного кода

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)