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

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

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

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Подсказка

Здpавствyй, Alexander!

AA> Как сделать мностpочнyю подсказкy?

Лови!

_/Это в фоpме:/_

на фоpме TextBox "Text1" и CommandButton "Command1"


Private Sub Form_Load()
InitComctl32 ICC_BAR_CLASSES
CreateTTWindow hwnd, True
SetToolTip Text1, "Multiline and Ballon" & vbCrLf & "Tooltip style example", vbBlue, vbWhite, 100
CreateTTWindow hwnd, False
SetToolTip Command1, "Multiline and Centered" & vbCrLf & "Tooltip style example", , , 100, , , True
End Sub

Private Sub Form_Unload(Cancel As Integer)
DestroyTT
End Sub


_/Это в модyле:/_


Option Explicit
Public Const ICC_BAR_CLASSES = &H4
Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As tagINITCOMMONCONTROLSEX) As Boolean

Type tagINITCOMMONCONTROLSEX
dwSize As Long ' size of this structure
dwICC As Long ' flags indicating which classes to be initialized.
End Type

Public Const TTS_ALWAYSTIP = &H1
Public Const TTS_NOPREFIX = &H2
Public Const TTS_BALLOON = &H40

Public Const CW_USEDEFAULT = &H80000000

Public Const WS_POPUP = &H80000000

Public Const WM_USER = &H400

' ToolTip Messages
Public Const TTM_SETDELAYTIME = (WM_USER + 3)
Public Const TTM_ADDTOOL = (WM_USER + 4)
Public Const TTM_SETTIPBKCOLOR = (WM_USER + 19)
Public Const TTM_SETTIPTEXTCOLOR = (WM_USER + 20)
Public Const TTM_SETMAXTIPWIDTH = (WM_USER + 24)

Public Const TTDT_AUTOPOP = 2
Public Const TTDT_INITIAL = 3

Public Const TTF_IDISHWND = &H1
Public Const TTF_CENTERTIP = &H2
Public Const TTF_SUBCLASS = &H10

Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Public Type TOOLINFO
cbSize As Long
uFlags As Long
hwnd As Long
uId As Long
cRect As RECT
hinst As Long
lpszText As String
End Type

Public Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal
nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Public Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Public bCreated As Boolean, hTT As Long
Public hCreated() As Long

Public Sub CreateTTWindow(hParent As Long, Optional bBalloon As Boolean = False)
Dim h As Long, lStyle As Long
lStyle = TTS_NOPREFIX Or TTS_ALWAYSTIP
If bBalloon Then lStyle = lStyle Or TTS_BALLOON
hTT = CreateWindowEx(0, "tooltips_class32", 0, lStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, hParent, 0, App.hInstance, 0)
If Not bCreated Then
ReDim hCreated(0)
bCreated = True
Else
ReDim Preserve hCreated(UBound(hCreated) + 1)
End If
hCreated(UBound(hCreated)) = hTT
End Sub

Public Sub SetToolTip(objTT As Object, sTipText As String, _
Optional BkColor As Long = &HEEFFFF, _
Optional TxtColor As Long = vbBlack, _
Optional MaxWidth As Long = 300, _
Optional DelayTime As Long = 500, _
Optional VisibleTime As Long = 2000, _
Optional bCenter As Boolean = False)
Dim TI As TOOLINFO
With TI
GetClientRect objTT.hwnd, .cRect
.hwnd = objTT.hwnd
.uFlags = TTF_IDISHWND Or TTF_SUBCLASS
If bCenter Then
.uFlags = .uFlags Or TTF_CENTERTIP
End If
.uId = objTT.hwnd
.lpszText = sTipText
.cbSize = Len(TI)
End With
SendMessageLong hTT, TTM_SETMAXTIPWIDTH, 0, MaxWidth
SendMessageLong hTT, TTM_SETDELAYTIME, TTDT_INITIAL, DelayTime
SendMessageLong hTT, TTM_SETDELAYTIME, TTDT_AUTOPOP, VisibleTime
SendMessageLong hTT, TTM_SETTIPTEXTCOLOR, TxtColor, 0&
SendMessageLong hTT, TTM_SETTIPBKCOLOR, BkColor, 0&
SendMessage hTT, TTM_ADDTOOL, 0, TI
End Sub

Public Sub DestroyTT()
If Not bCreated Then Exit Sub
Dim i As Integer
For i = 0 To UBound(hCreated)
DestroyWindow hCreated(i)
Next
End Sub

Public Function InitComctl32(dwFlags As Long) As Boolean
Dim icc As tagINITCOMMONCONTROLSEX
On Error GoTo Err_OldVersion
icc.dwSize = Len(icc)
icc.dwICC = dwFlags
InitComctl32 = InitCommonControlsEx(icc)
On Error GoTo 0
Exit Function
Err_OldVersion:
InitCommonControls
End Function






Всего тебе самого светлого, Alexander!

* Origin: Mailto: RMBakeev [@] Yandex.Ru, tel: 998(79) 572-36-89 (2:5085/533.7)


смена обоев посpедством эхотага

Здpавствyй, Vadim!

VL> в pеестpе есть pаздел HKEY_CURRENT_USER\Control Panel\Desktop
VL> в котоpом пpописываются паpаметpы pабочего стола и Wallpaper

VL> подскажите, как с ним pаботать что бы осyществить сабж.

VL> ссылки пpиветствyются.

Лови

Private Declare Function SystemParameters Lib "User32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long

Private Const SPIF_UPDATEINIFILE = &H1, SPIF_SENDWININICHANGE = &H2

Public Sub SetDeskWallPaper(func As Byte, Optional sBitmapFile As String)
Dim lRetVal As Long
Select Case func
Case 1
lRetVal = SystemParameters(ByVal 20, 0&, ByVal sBitmapFile, _
SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
Case 0
lRetVal = SystemParameters(20, 0&, "(None)", _
SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
End Select
End Sub


Всего тебе самого светлого, Vadim!

* Origin: Mailto: RMBakeev [@] Yandex.Ru, tel: 998(79) 572-36-89 (2:5085/533.7)


Re: получить список файлов

Hello Anton.

01 Апр 04 21:00, you wrote to All:
AD> Требуется некоторым образом обработать файлы,
AD> содержащиеся в выбранной папке. Причем в этой
AD> есть как файлы, так и другие папки.

AD> Как пройти по _ВСЕМ_ файлам (по всему дереву) ?

Воспользоваться функцией DIR, воспользоваться объектом FileSystemObject, или обpатиться за помощью к Win32 API.


Ivan

* Origin: Hехристь (2:5023/19.9)


Re: обработка метода post

From: "A. Skrobov"

Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
to A. Skrobov on Fri, 02 Apr 2004
09:47:10 +0400:

RY>>>> ps. А если как-то для этих целей activex ocx приспособить?
DK>>> Я бы не стал.
AS>> Я бы стал. Действительно:
AS>> =========Beginning of the citation==============
AS>> Главное - это выводить результат в браузер, и взаимодействовать с
AS>> программой тоже посредством браузера.
AS>> =========The end of the citation================
AS>> Зачем в этих условиях городить огород с CGI?
DK> Почему ты думаешь, что через CGI будет сложнее? В моем примере Console
DK> все потоки уже перехвачены; Small HTTP Server даже инсталляции не
DK> требует; что сложного-то?
А что сложного с осх? Изменить тип проекта, сбацать контрол и прописать в
html-коде.
Да нет, я верю, что через CGI несложно; просто _чем_ обоснован выбор CGI
вместо осх, кроме того факта, что "все потоки уже перехвачены"?


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



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


Re: обработка метода post

From: "A. Skrobov"

Hello, Roman!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
to A. Skrobov on Fri, 02 Apr 2004
21:47:42 +0400:

RY>>> Что отличает http сервер от telnet сервера в рамках моей задачи?
RY>>> Серьезно, мне просто сразу сложно вникнуть, чего я хочу. ;)
AS>> Единственно наличие обработчика команд. Т.е. единственное исправление
AS>> - шелл запускать не сразу, а после получения команды post, и не
AS>> cmd.exe, а указанный в команде. Вроде всё.
RY> В идеальном варианте - .exe как в CGI, т.е. захотел - индекс запустил
RY> как myindex.exe, и принимать данные через get (уж с post можно и
RY> обойтись ;)
Hатурально говорю, только парсер команд прикрутить. Формат тебе Дмитрий
прислал. Т.е. видишь POST - запускаешь ехе и передаёшь ответ, (если надо)
видишь GET - запускаешь ехе с параметрами по умолчанию и опять передаёшь
ответ. Ты внутрь того примера смотрел?

AS>> Можно создать ActiveX DLL и из VBS создавать объект и обращаться к
AS>> нему.
RY> Опять же альтернативные браузеры. Хотя это была моя самая вторая идея
RY> после того, как тупо action='file://file.exe' не прошел. ;) И в
RY> предыдущем сообщении Дима сказал, что он так бы делать не стал - тоже
RY> веский аргумент против. ;)
Да ну альтернативные браузеры, говорят, у 95% пользователей IE. А в опере
VBS есть, сам видел :-) Ставится, кажется, отдельно.

AS>> Или просто уже начал перехватывать потоки, и жалко бросать?
RY> Я не вижу другого метода взаимодействия.
А чем COM плох?


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



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


Re: обработка метода post

Мы где-то виделись, A.?

02 Apr 04 23:16:20 в RU.VISUAL.BASIC A. Skrobov -> мне:

AS> Да нет, я верю, что через CGI несложно; просто _чем_ обоснован выбор CGI
AS> вместо осх, кроме того факта, что "все потоки уже перехвачены"?

Выбор между cgi и ocx определяется спецификой задачи. Если это прибамбас
наподобие калькулятора, то однозначно ocx. Если это централизованный опросник,
т.е. клиент != сервер, то однозначно cgi. В прочих случаях (вот как сейчас) -
дело вкуса.

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)


Re: обработка метода post

Мы где-то виделись, Roman?

03 Apr 04 02:40:12 в RU.VISUAL.BASIC Roman Yuakovlev -> мне:

RY> Hеужели ни у кого нет фотошопа? ;) Там же как-то делается.

Я думаю, там делается также, как и в ОЕ - через внедрение объекта WebBrowser
на форму.

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)


если кто не знает вышел 6й сервиспак на MS VS

Приветствую в нашем подземелье, All ?

Service Pack 6 for Visual Basic 6.0, Visual C++ 6.0 with Visual Source Safe 6.0d provides the latest updates to these products. It is recommended for all users of Visual Basic 6.0, Visual C++ 6.0 and Visual Source Safe 6.0.

Download Size:
62305 KB - 62768 KB

Date Published:
3/29/2004

Version:
6
Overview
Service Pack 6 for Visual Basic 6.0, Visual C++ 6.0 with Visual Source Safe 6.0d provides the latest updates to these products. It is recommended for all users of Visual Basic 6.0, Visual C++ 6.0 and Visual Source Safe 6.0.

адрес для скачивания английской версии
download.microsoft.com/download/1/9/f/19fe4660-5792-4683-99e0-8d48c22eed74/Vs6sp 6.exe


Я взял бы частями, но мне нужно сразу. Genrih Rudenok.
* Origin: Genrih Cool! (2:452/25.115)


запись звука каждый канал в отдельный файл

Приветствую в нашем подземелье, All ?

кто нибудь сталкивался с такой проблемой: надо писать в файл звук с линейного входа причем с левого канала в один файл а с правого в другой, мало того начало записи одного канала может несовпадать с временем начала записи с другого - независимые как бы должны быть? где кто что видел - слышал?
в DirectX только про воспроизведение и т.п. написано
в инете тоже нефига нет про это

Я взял бы частями, но мне нужно сразу. Genrih Rudenok.
* Origin: Genrih Cool! (2:452/25.115)


визуальное отображение меню

1. Как сделать подсказку к пункту Меню a-la акселлератор (т.е. имя пункта тянется слева, описание справа), но не ограничиваясь теми вариантами (F1-F2 и т.д.), которые там представлены. Представление кнопки как акселлератора не особо нужно, скорее даже наоборот. ;)

2. Как поменять цвет фона горизонтального меню своей программы?


¦ Послано в RU.VISUAL.BASIC
¦ Также послано в RU.VISUAL.BASIC.CHAINIK

* Origin: 1134 (2:5045/44.13)



Назад Содержание Вперед