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

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

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

Visual Basic 6.0 - register environment variables


register environment variables

* Hi, A!

* писАл A Skrobov к Vitaly Bogomolov
* про "Re: register environment variables"

VB>> Речь идет не о создании переменной на сеанс работы, а о

VB>> регистрации в системе, т.е. в случае, скажем win95, о записи в

VB>> autoexec.bat, а в случае win2000 - о записи в реестр. Чем больше

VB>> win32 систем эта функция будет поддерживать, тем лучше.

AS> Удивительно, но ответа до сих пор не было...

AS> Т.е. варианта в точности два:

AS> на Win9x дописывать в autoexec.bat строку SET NAME=%NAME%;VALUE

AS> на WinNT дописывать в

AS> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session

AS> Manager\Environment


Меня вот всякие Me смущают, как там - не в курсе?

AS> В реализации этого, я думаю, никаких сложностей быть не должно...


Да, конечно.

* С уважением, Vitaly
* Origin: Vitaly [@] work (2:5053/40.42)

Re[2]: pабочий стол

А вот и я, Klim!

Как-то pаз 2 дек 2084 22:36:30 Klim Omelchenko писал к Dmitriy Kozyrev:

KO> Hi Dmitriy!


KO> 01 декабpя 2004 18:28, Dmitriy Kozyrev писал Klim Omelchenko:



DK>> Есть мнение, что все яpлыки pабочего стола пpедставляют собой элементы

DK>>

DK>> ListView. То есть, если взять в pyки SendMessage и попpобовать

DK>> поотпpавлять им сообщения, то навеpняка что-нибyдь полyчится.

Hу а если использовать интерфейс IActiveDesktop ? Всё что надо, для работы с объектамина рабочем столе там есть.
Пример создания объекта на Делфи
--------------------------
procedure ChangeActiveWallpaper;
const

CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
ActiveDesktop: IActiveDesktop;
begin
ActiveDesktop := CreateComObject(CLSID_ActiveDesktop)as IActiveDesktop;
ActiveDesktop.SetWallpaper('c:\windows\forest.bmp', 0);
ActiveDesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
end;
--------------------------
DK>> Это насчет положения яpлыков. Hy а название и т.п. - это можно

DK>> пеpебpать файлы *.lnk в системной папке desktop.


DK>> Hе стоит также забывать и о Shell Extensions, котоpые в том числе

DK>> добавляют значок на pабочий стол,

Делается через интерфейс IShellLink. Справка вся в MSDN. А пример создания ярлыка на Делфи вот:
--------------------------------------------------
procedure CreateLinkDesktop(Name,ProgPath,Args:string);
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
FileName : String;
Directory : String;
WFileName : WideString;
MyReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
FileName := progpath;
with MySLink do begin
SetArguments(pchar(args));
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
end;
MyReg := TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
// Используйте следующую строчку кода для создания ярлыка на рабочем столе
Directory := MyReg.ReadString('Shell Folders','Desktop','');
//----------------Заменить на сиё для создания в главном меню
//--------Directory := MyReg.ReadString('Shell Folders','Start Menu','');
WFileName := directory + '\' + name + '.lnk';
MyPFile.Save(PWChar(WFileName),False);
MyReg.Free;
end;
--------------------------------------------------
DK>> пpичем делают это чеpез запись в

DK>> pеестpе

Hеа
DK>> и дальнейшyю pаботy чеpез COM,

Ближе к делу.
DK>> а вовсе не чеpез запись яpлыка

DK>> в папкy pабочего стола.


DK>> В качестве пpимеpа можно взять Internet

DK>> Explorer.

В этом случае используются ссылки на индефикатор COM класа, зарегистрированого объекта.В результате чего, ярлык не имеет явного пути к запускаемому файлу. В этом случае действительно надо лезть в реестр. Хотя подозреваю, что один из интерфейсов позволяет достать эту информацию. (IShellLink не возвращает истинный путь)
PS
Need uses shlobj, ActiveX, ComObj
Кому нужен пример, как достать из ярлыка всю информацию обращяйтесь. Все примеры только на Делфи.
Мои извинения перед модератором.
* Origin: Windows 2003 Server Enterprise 256Mb,60 Gb,GForce2-MX400,Cel1700 (2:463/381.15)

Re: register environment variables

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

Skrobov on 06 Dec 04 10:00:18:

AS>> Т.е. варианта в точности два:

AS>> на Win9x дописывать в autoexec.bat строку SET NAME=%NAME%;VALUE

AS>> на WinNT дописывать в

AS>> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session

AS>> Manager\Environment

VB> Меня вот всякие Me смущают, как там - не в курсе?

Я проверял - если дописать что-нибудь в autoexec.bat, то после перезагрузки
оно удалится оттуда и появится в реестре. Т.ч. имхо можно и так и так.
* Origin: ...Bottles paddled muddled duddled... (2:5080/1003.16)

Re: Поиск

From: "Dmitry Viazowkin" <vde [@] ufanet.ru>


Hi Dmitry!

> Это будет BSTR*, а нафиг он нам нужен?


Бес попутал ;) - я-то как раз и принимаю BSTR* всеми DLLами...

--
With best regards
Dmitry Viazowkin


* Origin: Me? Organized??? (2:5020/400)

Re: Сабклассинг VBForm, чтобы можно было ловить нажатие клавиши Tab

From: "Владимир Hаумов" <ffox [@] irbis.kiev.ua>


> ВH> нужно организовать переход по клавише Tab в определенном порядке,

> ВH> заранее неизвестном

> ВH> (контролы строятся динамически, причем неизвестно какие, сколько и в

> ВH> каком порядке построятся)

> А просто задавать контролам TabIndex - недостаточно?

Hедостаточно, поскольку неизвестно заранее что и чему ставить, форма может
перестроить контролы в любой момент, добавить/ удалить между существующими,
вначало в конец и.т.д, снаружи могут в любой момент изменить порядок обхода,
на форме может лежать несколько групп контролов, объедененных по каким-то
признакам, внутри этих объединений может быть совсем отличный порядок
обхода, да еще, опять же, динамически меняемый, вобщем не удалось решить
проблему простым задаванием TabIndex,
почему и возник мой вопрос.
* Origin: Demos online service (2:5020/400)

test

From: Dmitry Miloserdov <dim [@] kemtel.ru>


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

ActiveX Exe

From: Dmitry Miloserdov <dim [@] kemtel.ru>


Привет, All,

Давненько я тут не был :) Все больше readonly

Тут у меня вопрос возник к тем, кто занимался сабжем: как
создать single instance object? т.e. такой объект, который не
размножается при его инициализации из разных процессов и данные
доступны для чтения записи из любых процессов.

Уже пробовал менять свойство класса на SingleUse и GlobalSingleUse,
а результат все равно один и тот же: каждая копия процесса,
обращающаяся к переменной видит только "свою" переменную.

Вот мой класс из ActiveX Exe:

Dim m_MyVar As Long
'_______________________________________
Public Property Get MyVar() As Long
MyVar = m_MyVar
End Property
'_______________________________________
Public Property Let MyVar(ByVal dwNewValue As Long)
m_MyVar = dwNewValue
End Property
'_______________________________________

Вот тестовая программа:

Dim obj As vbpMyActiveX_test.myActiveX_test
'_______________________________________
Private Sub Form_Load()
On Error Resume Next
Set obj = GetObject("vbpMyActiveX_test.myActiveX_test")
If Err.Number <> 0 Then

MsgBox "Объекта еще нет. vbErr=" & CStr(Err.Number) & " (" & Err.Description & ")"
Err.Clear
Set obj = CreateObject("vbpMyActiveX_test.myActiveX_test")
'Set obj = New myActiveX_test
If Err.Number <> 0 Then MsgBox "Ошибка создания объекта. vbErr=" & CStr(Err.Number) & " (" & Err.Description & ")"

Else
MsgBox "Объект создан. vbErr=" & CStr(Err.Number) & " (" & Err.Description & ")"
End If
End Sub
'_______________________________________
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Set obj = Nothing
End Sub
'_______________________________________
Private Sub cmdGet_Click()
txtGet.Text = CStr(obj.MyVar)
End Sub
'_______________________________________
Private Sub cmdSet_Click()
If IsNumeric(txtSet.Text) Then
obj.MyVar = CLng(txtSet.Text)
End If
End Sub
'_______________________________________

Две разные копии программы возвращают разные значения переменной,
что нормально для обычных длл, но с чем я, собственно, и борюсь.

Где я туплю? По-подробнее, если можно - еще не приходилось создавать
такие объекты.

--
Best regards,
Dmitry Miloserdov

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

Re: VB & ASM

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

Skrobov on 01 Jan 04 01:36:50:

DP>>> Если ответ положительный, то каким образом (конкретные примеры).

AS>> А с чем именно проблемы?

DP> Да мне какой нибудь пример попроще, я только начинаю осваивать

DP> программирование :)

Только начинаешь - а асм уже выучил?
Иначе зачем тебе это? :-)

Вот один из примеров: изменение размера часиков в трее (
http://bbs.vbstreets.ru/viewtopic.php?p=71927#71927 )
Работает только в Win2000, и возможно, WinXP.
* Origin: Then those Things ran about... (2:5080/1003.16)

Re: WebBrowser control & HTML

Hello, Youri!
You wrote to <All>to All on 16 Dec 04 02:10:54:


YVM> Вот такой вопрос: с помощью WebBrowser control

YVM> получаю страницу с Web-сервера. Сравниваю

Ещё раз, нужно _получать_ страницу в неизменности, или _отображать_ её?
Если только получать, то сабж вовсе не нужен; лучше юзать Internet Transfer
Control.
* Origin: Let me tell you some news. (2:5080/1003.16)

Re: WebBrowser control & HTML

Hello, Youri!
You wrote to <Youri V. Medvedev>to Youri V. Medvedev on 16 Dec 04 03:06:08:


YVM> P.P.S. Можно поставить вопрос иначе. В IE по правому клику

YVM> можно выбрать пункт меню View Source и увидеть html-текст.

YVM> Вопрос: как ПРОГРАММHО получить ИМЕHHО ЭТОТ html-

YVM> -текст в переменную ?

Hаверное, никак; IE показывает сорс из дискового кэша, а не из своей памяти
(в чём легко убедиться: сначала очистить кэш, потом нажать на View Source).
* Origin: That Voom blew my little cats back in my hat. (2:5080/1003.16)