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

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

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

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


Re: Threads

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

16 Jul 04 22:17:57 в RU.VISUAL.BASIC Roman Yuakovlev -> A. Skrobov:

RY> А в чем заключается 24 бита на видео? Я почему-то считал, что битов в
RY> видеокарте либо 16 либо 32,

16 бит - High Color, каждое значение в буфере - не цвет, а индекс цвета в
таблице цветов.

24 бита - True Color, нормальный цвет, по 8 битов на каждый канал (Red, Green,
Blue).

32 бита - тот же True Color, только используется (непонятным мне образом)
альфа-канал, который раньше был резервным. Посмотреть тот же RGBQUAD - там
четвертое поле именно Reserved.

RY> а на три делить/умножать очень медленно.

А при чем тут вообще деление/умножение?

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

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


Re: Автозагpузка

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

16 Jul 04 22:23:47 в RU.VISUAL.BASIC Roman Yuakovlev -> Sergey Merzlikin:

RY> А можно как нибудь, чтобы и в Win98 работало, и ShFolder.dll не
RY> использовать?
RY> Ведь раз в W98 есть эти папки, значит как-то путь к ним можно получить?

Посмотри исходники проекта Setup1, которые лежат в папке
%VBDIR%\Wizards\PDWizard.

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

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


Еще вопрос по VBA

From: "Skull"

Hello All!

Существует ли Дескриптор (hWnd или Handle) у элемента (ComboBox)
размещенного прямо в окне Excel? Если существует то как бы его получить.

With best regards, Skull.
* Origin: Demos online service (2:5020/400)


Re: я понял, в чем моя проблема

Hello, Roman!
You wrote to "A Skrobov" to A
Skrobov on 16 Jul 04 21:11:47:

RY> Если писать в ОБЩУЮ! ПАПКУ! для ВСЕХ! ПОЛЬЗОВАТЕЛЕЙ!...
RY> a. Если первым программу запустил и записал файл администратор, то
RY> обычный пользователь уже не может писать в этот файл.
RY> b. Если первым программу запустил и записал пользователь, то писать в
RY> этот файл могут он и администратор.

RY> надо, чтобы в случаях А и Б писать ф файл (All Users/Application Data)
RY> могли ВСЕ! пользователи.
Имхо это security hole - позволять _любому_ юзеру менять _общие_ настройки.
Hу да ладно, устал я тебе объяснять, чего ты на самом деле хочешь. Хочешь
NTFS permissions менять? Hа здоровье!

=========Beginning of the citation==============
Option Explicit

' Success status of high level access control APIs
Private Const ERROR_SUCCESS = 0&

' Type of Securable Object we are operating in this sample code
Private Const SE_FILE_OBJECT = 1&

' The Security Information constants required
Private Const DACL_SECURITY_INFORMATION = 4&
Private Const GRANT_ACCESS = 1&
Private Const SET_ACCESS = 2&

' Standard access rights extracted from WinNT.h
Private Const SYNCHRONIZE = &H100000
Private Const READ_CONTROL = &H20000
Private Const WRITE_DAC = &H40000
Private Const WRITE_OWNER = &H80000
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Private Const DELETE = &H10000

' Generic access rights extracted from WinNT.h
Private Const GENERIC_ALL = &H10000000
Private Const GENERIC_EXECUTE = &H20000000
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000

' Inheritance Flags
Private Const CONTAINER_INHERIT_ACE = &H2
Private Const OBJECT_INHERIT_ACE = &H1

' The TRUSTEE structure identifies the user account, group account, or logon
session
' to which an ACE applies. The structure can use a name or a security
identifier (SID)
' to identify the trustee.

' Access control APIs, such as SetEntriesInAcl and
GetExplicitEntriesFromAcl, use this
' structure to identify the account associated with the access-control or
audit-control
' information in an EXPLICIT_ACCESS structure.
Private Type TRUSTEE
pMultipleTrustee As Long
MultipleTrusteeOperation As Long
TrusteeForm As Long
TrusteeType As Long
ptstrName As String
End Type

' EXPLICIT_ACCESS structure that specifies access-control information for a
specified
' trustee such as access mask as well as inheritance flags
Private Type EXPLICIT_ACCESS
grfAccessPermissions As Long
grfAccessMode As Long
grfInheritance As Long
pTRUSTEE As TRUSTEE
End Type

' High Level access control API declarations
Private Declare Sub BuildExplicitAccessWithName Lib "Advapi32.dll" Alias _
"BuildExplicitAccessWithNameA" _
(ea As Any, _
ByVal TrusteeName As String, _
ByVal AccessPermissions As Long, _
ByVal AccessMode As Integer, _
ByVal Inheritance As Long)

Private Declare Function SetEntriesInAcl Lib "Advapi32.dll" Alias _
"SetEntriesInAclA" _
(ByVal CountofExplicitEntries As Long, _
ea As Any, _
ByVal OldAcl As Long, _
NewAcl As Long) As Long

Private Declare Function GetNamedSecurityInfo Lib "Advapi32.dll" Alias _
"GetNamedSecurityInfoA" _
(ByVal ObjName As String, _
ByVal SE_OBJECT_TYPE As Long, _
ByVal SecInfo As Long, _
ByVal pSid As Long, _
ByVal pSidGroup As Long, _
pDacl As Long, _
ByVal pSacl As Long, _
pSecurityDescriptor As Long) As Long

Private Declare Function SetNamedSecurityInfo Lib "Advapi32.dll" Alias _
"SetNamedSecurityInfoA" _
(ByVal ObjName As String, _
ByVal SE_OBJECT As Long, _
ByVal SecInfo As Long, _
ByVal pSid As Long, _
ByVal pSidGroup As Long, _
ByVal pDacl As Long, _
ByVal pSacl As Long) As Long

Private Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As
Long

Private Sub Command1_Click()
Stop
Dim result As Long
Dim pSecDesc As Long
Dim ea As EXPLICIT_ACCESS
Dim pNewDACL As Long
Dim pOldDACL As Long

' Get the DACL information of c:\test1 folder using GetNamedSecurityInfo()
API.
' SE_FILE_OBJECT constant says that the named securable object is a file or
folder
result = GetNamedSecurityInfo("H:\Documents and Settings\All
Users\Application Data\MyApp", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
0&, 0&, pOldDACL, 0&, pSecDesc)
If result = ERROR_SUCCESS Then

' Construct an EXPLICIT_ACCESS structure for Everyone with GENERIC_READ
access that will apply for c:\test1
' as well as subfolder and files using BuildExplicitAccessWithName() API
BuildExplicitAccessWithName ea, "Пользователи", GENERIC_ALL,
GRANT_ACCESS, CONTAINER_INHERIT_ACE Or OBJECT_INHERIT_ACE

' Merge constructed EXPLICIT_ACCESS structure to the existing DACL and
get an updated DACL in memory from
' SetEntriesInAcl() API
result = SetEntriesInAcl(1, ea, pOldDACL, pNewDACL)
If result = ERROR_SUCCESS Then
MsgBox "SetEntriesInAcl succeeded"

' Call SetNamedSecurityInfo() API with the updated DACL in memory to
change the DACL of c:\test1 folder
result = SetNamedSecurityInfo("H:\Documents and Settings\All
Users\Application Data\MyApp", SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
0&, 0&, pNewDACL, 0&)
If result = ERROR_SUCCESS Then
MsgBox "SetNamedSecurityInfo succeeded"
Else
MsgBox "SetNamedSecurityInfo failed with error code : " & result
End If

' Free the memory allocated for the new DACL by the
SetEntriesInAcl() API, using LocalFree() API
LocalFree pNewDACL
Else
MsgBox "SetEntriesInAcl failed with error code : " & result
End If

' Free the memory allocated for the security descriptor by the
GetNamedSecurityInfo() API, using LocalFree() API
LocalFree pSecDesc
Else
MsgBox "GetNamedSecurityInfo failed with error code : " & result
End If
End Sub
=========The end of the citation================
Взято из support.microsoft.com/default.aspx?scid=kb;EN-US;295004
Если интересно, посмотри ещё
groups.google.com/groups?selm=2107d358.b941080c%40usw-ex0103-023.remarq.com&output=gplain


AS>> Если это настройки, имеющие отношение ко всем юзерам, то имеет
AS>> смысл писать их, например, в %WINDIR%.
RY> Обычные пользователи уже могут писать в %WINDIR%? Что-то я пропустил?
Обычные пользователи, как видишь, и в All Users писать "по умолчанию" не
могут...
* Origin: I can't do it, Mr. Fox, sir. (2:5080/1003.16)


Re: компонент таблица

From: "Vyacheslav Davydenko"

> Подскажите компонент таблицу для Visual Basic .NET, который бы позволял:
> - в ячейку таблицы помещать checkbox;
> - создавать строки с одной ячейкой. Т.е., например, первая строка состоит
из
> одной ячейки, со второй
> по пятую строки содержать 5 ячеек, шестая - опять одну ячейку, и т.д.

VSFlexGrid

Позволяет группировать ячейки, выводить checkBox и многое др. Очень рульная
библиотека.


* Origin: MT-Bank (2:5020/400)


Re: Поиск с учетом и без учета pегистpа

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

22 Jul 04 01:59:36 в RU.VISUAL.BASIC Ruslan Demidow -> All:

RD> Анализ пpедыдущего пеpед словом и следующего после слова символов - это
RD> пеpвое что мне пpишло в голову, но ведь если опpеделять целое слово по
RD> символам до него и после (т.е. пpедположить что если до слова символ не
RD> буква, и после слова символ не буква), то тогда я натыкаюсь на такую
RD> пpоблему: А ведь в стpоке для поиска может быть набpано всё что угодно. И
RD> вообще, что можно считать целым словом? То что между пpобелами или между
RD> знаками пpепинания и табуляции, а так же пеpевода каpетки. Вот, блин,
RD> задачку задал. :) Вот уже вpемя 1:57, а я всё никак допетpить не могу. :(

См. апишку IsCharAlpha.

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

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


Re: XML: Schemas

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

21 Jul 04 22:28:53 в RU.VISUAL.BASIC A Skrobov -> мне:

DK>> Впервые работаю со схемами. Сразу же возникла непонятка:
DK>>
DK>> xmlns:dt="urn:mydoc:datatypes">
DK>> В MSDN сказано, что namespace может быть любым, но парсер не принимает
DK>> ничего, кроме "urn:schemas-microsoft-com:xml-data". Где я торможу?
A> Плохо читаешь MSDN ;-)
[...]
A> Platform SDK -> Data Services -> XML (Extensible Markup Language) -> XML
A> Reference -> XML Schemas, reference; schemas, reference

Да, действительно плохо читаю... Спасибо.

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

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


Re: Поиск с учетом и без учета pегистpа

From: Dmitry Miloserdov

Привет, Ruslan,

Thursday, July 22, 2004, 3:59:36 AM, ты писал:
RD> Как pеализовать поиск в тесте только целых слов?
RD> Анализ пpедыдущего пеpед словом и следующего после слова символов - это пеpвое
RD> что мне пpишло в голову, но ведь если опpеделять целое слово по символам до
RD> него и после (т.е. пpедположить что если до слова символ не буква, и после
RD> слова символ не буква), то тогда я натыкаюсь на такую пpоблему: А ведь в стpоке
RD> для поиска может быть набpано всё что угодно. И вообще, что можно считать целым
RD> словом? То что между пpобелами или между знаками пpепинания и табуляции, а так
RD> же пеpевода каpетки. Вот, блин, задачку задал. :)
RD> Вот уже вpемя 1:57, а я всё никак допетpить не могу. :(

Если ты делаешь свой диалог Find&Replace, то лучше не парится.
Почему-то многие забывают, что это стандартный виндозный диалог, как
выбор принтера/шрифта/цвета/файла.

Смотри PSDK на тему:
ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/aboutcommondialogboxes/findandreplacedialogboxes.htm#_win32_Customizing_the_Find_or_Replace_Dialog_Box
ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxfunctions/findtext.htm
ms-help://MS.PSDK.1033/winui/winui/windowsuserinterface/userinput/commondialogboxlibrary/commondialogboxreference/commondialogboxstructures/findreplace.htm

В последнем особое внимание обрати на константу FR_WHOLEWORD - это как
раз то, что ты спрашиваешь.

А вообще, задача поиска текста многократно сложнее обычного бинарного
поиска, так как включает в себя очень много факторов. Я давно искал
библиотеку (и даже сам мечтал сделать) такой search engine, которая
работала бы наподобие поисковых систем (т.е. с учетом морфологии
языка/окончаний/падежей/порядка
слов/кодировки/артиклей/преффиксов/суффиксов). Hо очень быстро
понял, что в одиночку такую сложную тему не поднять.


--
Best regards,
Dmitry Miloserdov



* Origin: www.softmajor.com (2:5020/400)


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

From: Alexander Asyabrik

Привет, Dmitry.

Вы, было дело, писали 22 июля 2004 г., 4:20:

Продолжаешь говорить очень умными словами.

DM> что конечно, дезавуирует мою фразу "... и откомпилированный код меньше."

Переведи, не понял :(

--
С уважением, Alexander
12:05:53 PM



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


Unicode

*** Ответ на сообщение из DELSOFT_SYSTEM.FOR_ME (Моя карбонка).

CONNECT A /||*()*||

21 Июл 04 22:17, A Skrobov sent this data to Aleksej R Serdyukov:

AR>>>> Как читать текстовый файл в Unicode?
AS>>> StrConv(To_Kuda_Prochital, vbFromUnicode)
AR>> Hу, раз вручную, то...

AS> Почему вручную-то?
AS> =========Beginning of the citation==============
AS> Dim To_Kuda_Prochital As String
AS> Open "yourfile.txt" For Binary As 1
AS> To_Kuda_Prochital = Input(LOF(1), 1)
AS> Close 1
AS> MsgBox StrConv(To_Kuda_Prochital, vbFromUnicode)
AS> =========The end of the citation================

Файл заведомо больше 32Кб.

AR>> Почему от последнего символа в строке читается лишь второй байт?

AS> [Sorry, skipped]
AS> Потому что емнип в режиме Random после EOF(DF) = True одну запись ещё
AS> можно прочитать...

Hе в конце файла, а в конце всех строк.

AR>>>> scrrun.dll cannot be loaded. Что делать?
AS>>> Звать телепатов ;-)
AR>> А, ну да. :-) VB6 SP5, W2k Pro en, MS Office 2000.

AS> Что делаешь-то? Когда это сообщение вылезает?

Hажимаю OK/Apply в диалоге добавления компонентов, выбрав scrrun.dll. Возможно, нужен ocx, но на одном сайте было написано dll.

Good bye now...
* Origin: Delete Software Limited, Moscow, Russia. (2:5020/1042.42)



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