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

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

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

Visual Basic 6.0 - chm


chm

From: "A. Skrobov" <tyomitch [@] r66.ru>


Wed Jul 14 2004 19:18, Roman Yuakovlev wrote to All:

RY> Можно ли связать кнопку Help в InputBox с CHM-файлом.

Ага ;-)

RY> Сабклассеры и прочие колбейкеры, ау! ;)

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal
lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal
nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal
nIDEvent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA"
(ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private 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
Private Declare Function HTMLHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal
hWndMain As Long, ByVal lpszHelp As String, ByVal uCommand As Long, ByVal
ptrTopic As Long) As Long
Private Const GWL_WNDPROC As Long = -4&
Private Const WM_COMMAND As Long = &H111&
Private Const WM_HELP As Long = &H53&
Private Const HH_HELP_CONTEXT As Long = &HF&
Private m_Title As String, m_HelpFile As String, m_Context As Long
Private OldWindowProc As Long

Private Sub TimerProc(ByVal hWnd0 As Long, ByVal uMsg As Long, ByVal idEvent
As Long, ByVal dwTime As Long)
Dim hWnd As Long
KillTimer hWnd0, idEvent
hWnd = FindWindow("#32770", m_Title)
If hWnd = 0 Then Exit Sub 'bad luck...
OldWindowProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WndProc)
End Sub

Private Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam
As Long, ByVal lParam As Long) As Long
Select Case uMsg
Case WM_COMMAND:
If wParam = &H1326 Then InvokeHelp (hWnd): Exit Function
Case WM_HELP:
InvokeHelp (hWnd)
WndProc = 1
Exit Function
End Select
WndProc = CallWindowProc(OldWindowProc, hWnd, uMsg, wParam, lParam)
End Function

Private Sub InvokeHelp(ByVal hWnd As Long)
HTMLHelp hWnd, m_HelpFile, HH_HELP_CONTEXT, m_Context
End Sub

Private Function InputBoxEx(ByVal Prompt As String, Optional ByVal Title,
Optional ByVal Default As String, Optional ByVal XPos, Optional ByVal YPos,
Optional ByVal HelpFile As String, Optional ByVal Context As Long) As String
SetTimer 0, 0, 10, AddressOf TimerProc
m_Title = Title
m_HelpFile = HelpFile
m_Context = Context
InputBoxEx = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
End Function

Sub Main()
MsgBox InputBoxEx("Push F1 for help", "Title", "Default", , , "MSWNSK98.chm",
&H5303F), vbExclamation, "You typed:"
End Sub

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

ленточная форма

From: "Вячеслав" <VVBmail [@] klg.sovintel.ru>


Всем привет. Кто-нибудь знает, можно ли в vb сделать сабж (как в акцессе)?
Вячеслав

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)

Re: Пpокpутка в TextBox

From: "A. Skrobov" <tyomitch [@] r66.ru>


Sun Jul 18 2004 00:10, Sergey Merzlikin wrote to A. Skrobov:

>> Ок, вот так не мигает:

SM> Мигает, но значительно меньше :-Ь

SM> Чтобы увидеть, Timer1.Interval = 10

Проверил. Текст мигает, а скроллбар - нет. Речь же шла о мигании скроллбара?

* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)

Re: Получить путь к ехешнику по hWnd

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


> SM> =========The end of the citation================

> И где ты только эту цитату взял? В MSDN Online написано:

> =========Beginning of the citation==============


Там же, только в разделе общей информации о библиотеке. В последнее время в
описаниях функций я все чаще замечаю неверную информацию о поддержке ОС. А
заметил потому, что уже сталкивался с отсутствием этой библиотеки в
дистрибутиве NT4. Изначально она шла как дополнительный компонент из
Resource Kit. Hаверное, какой-то SP ее ставит, но какой именно и ставит ли
вообще, не знаю.

Вообще, ценность такого подхода прослеживается только на NT4, на остальных
ОС эту информацию легко получить через ToolHelp32-функции.

--
* Origin: Talk.Mail.Ru (2:5020/400)

Кто использует Codelib?

Hello All!

Существует ли pусский языковый модуль к Codelib и где его найти?
Я скачал Net-веpсию, она тpебует Framework.
Hе подскажете, где найти обычную, не Net веpсию?

Alex

* Origin: Слушайте зайчики деда Мазая (FidoNet 2:5090/105.8)

control

** #Здpавствyй(те)#, _*All!*_


Как динамически создать, а затем, pазpyшить контpол?


__ #До свидания#, _*All!_*

* Origin: I want to believe (2:5030/659.14)

Re: разница в записи

From: Alexander Asyabrik <belmis [@] mail.belpak.by>


Привет, A. Skrobov

Вы, было дело, писали 18 июля 2004 г., 18:12:

AA>> Привет, A. Scrobov

AS> ^

AS> А это кто такой - Сцробов?


:-) Прошу пардону. Дык сам жеж виноват: точку поставил, блин, и тебя
TheBat! обзывает всегда просто "A." В ручную добирать приходиться :)

AS> ...кроме случая Variant()


Hо это будет массив вариантов и опять таки _в_варианте_.

AA>> Мне вообще кажется что это та же VarType, только возвращающая

AA>> результат в более наглядном строковом виде.

AS> Hеа, она ещё типы объектов показывает, в отличие от VarType.


Hо то что переменная является объектом все-таки узнать можно.

Я про то только гутарил, что этой байдой никак не отличить "чистую" строку
от варианта со строкой внутрях.

AA>> А еще я пробовал писать это все в бинарные файлы (так мне просто

AA>> удобней ). Так вот когда объявляешь явно как Variant, тогда в файл

AA>> записывается именно как Variant (дополнительно указывается субтип 8

AA>> /String/ и длина строки), а когда без явного указания, тогда в файл

AA>> пишется, как и обычная строка.


AS> Hу так согласен, что два объявления из поста Романа полностью эквивалентны?


А то нет! Сам же и подтвердил это. Просто всегда думал, что коль явно
не объявлен тип переменной, она всегда будет вариант. Ан нет, как
всегда у MS через ... ну вы знаете:) А именно:

If you don't explicitly declare the constant type using As type, the
constant has the data type that is most appropriate for expression.


Вот так вот, так что RTFM, RTFM и RTFM, как завещал великий ??? :)


--
С уважением, Alexander
11:23:24 PM
* Origin: Talk.Mail.Ru (2:5020/400)

Re: Получить путь к ехешнику по hWnd

Hello, Sergey!
You wrote to "A Skrobov" <A Skrobov [@] p16.f1003.n5080.z2.fidonet.org>to A

Skrobov on 18 Jul 04 01:15:16:

??>> Системные требования: NT4+

SM> =========Beginning of the citation==============

SM> These functions are available in Psapi.dll, which is included in

SM> MicrosoftR WindowsR 2000, Windows XP, and Windows Server 2003 family.

SM> To use these functions on Microsoft Windows NTR 4.0, you must obtain

SM> the redistributable version of this DLL. To download the

SM> redistributable DLL, go to

SM>

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm.
SM> =========The end of the citation================

И где ты только эту цитату взял? В MSDN Online написано:
=========Beginning of the citation==============
Requirements
Client: Requires Windows XP, Windows 2000 Professional, or Windows NT
Workstation 4.0.
Server: Requires Windows Server 2003, Windows 2000 Server, or Windows NT
Server 4.0.
Header: Declared in Psapi.h.
Library: Use Psapi.lib.

=========The end of the citation================
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/enumprocessmodules.asp
* Origin: So all we could do was to sit! Sit! Sit! Sit! (2:5080/1003.16)

Re: Получить путь к ехешнику по hWnd

From: "Sergey Merzlikin" <sm [@] smsoft.ru>


> Системные требования: NT4+

=========Beginning of the citation==============

These functions are available in Psapi.dll, which is included in MicrosoftR
WindowsR 2000, Windows XP, and Windows Server 2003 family. To use these
functions on Microsoft Windows NTR 4.0, you must obtain the redistributable
version of this DLL. To download the redistributable DLL, go to
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdkredist.htm.

=========The end of the citation================
--
* Origin: Talk.Mail.Ru (2:5020/400)

Re: разница в записи

Hello, Alexander!
You wrote to "A Skrobov" <A Skrobov [@] p16.f1003.n5080.z2.fidonet.org>to A

Skrobov on 19 Jul 04 00:46:12:

AS>> ...кроме случая Variant()

AA> Hо это будет массив вариантов и опять таки _в_варианте_.

Я просто хелп цитирую:
=========Beginning of the citation==============
vbVariant 12 Variant (used only for arrays of variants)
=========The end of the citation================

AA>>> Мне вообще кажется что это та же VarType, только возвращающая

AA>>> результат в более наглядном строковом виде.

AS>> Hеа, она ещё типы объектов показывает, в отличие от VarType.

AA> Hо то что переменная является объектом все-таки узнать можно.

Я про то, что это не "та же VarType, только возвращающая результат в более
наглядном строковом виде", и что есть некая дополнительная функциональность
по сравнению с VarType.

AA> Я про то только гутарил, что этой байдой никак не отличить "чистую"

AA> строку от варианта со строкой внутрях.

Да, я в этом убедился, поэтому и запостил пример с CopyMemory.

AS>> Hу так согласен, что два объявления из поста Романа полностью

AS>> эквивалентны?

AA> А то нет! Сам же и подтвердил это. Просто всегда думал, что коль явно

AA> не объявлен тип переменной, она всегда будет вариант. Ан нет, как

AA> всегда у MS через ... ну вы знаете:) А именно:

AA> If you don't explicitly declare the constant type using As type, the

AA> constant has the data type that is most appropriate for expression.

AA> Вот так вот, так что RTFM, RTFM и RTFM, как завещал великий ??? :)

:-)
* Origin: Today is gone. Today was fun. (2:5080/1003.16)