Обсуждение программирования на Visual Basic в конференции ru.visual.basic
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" 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" Hi Dmitry! > Это будет BSTR*, а нафиг он нам нужен? Бес попутал ;) - я-то как раз и принимаю BSTR* всеми DLLами... -- With best regards Dmitry Viazowkin * Origin: Me? Organized??? (2:5020/400) |
Re: Сабклассинг VBForm, чтобы можно было ловить нажатие клавиши Tab |
From: "Владимир Hаумов" > ВH> нужно организовать переход по клавише Tab в определенном порядке, > ВH> заранее неизвестном > ВH> (контролы строятся динамически, причем неизвестно какие, сколько и в > ВH> каком порядке построятся) > А просто задавать контролам TabIndex - недостаточно? Hедостаточно, поскольку неизвестно заранее что и чему ставить, форма может перестроить контролы в любой момент, добавить/ удалить между существующими, вначало в конец и.т.д, снаружи могут в любой момент изменить порядок обхода, на форме может лежать несколько групп контролов, объедененных по каким-то признакам, внутри этих объединений может быть совсем отличный порядок обхода, да еще, опять же, динамически меняемый, вобщем не удалось решить проблему простым задаванием TabIndex, почему и возник мой вопрос. * Origin: Demos online service (2:5020/400) |
test |
From: Dmitry Miloserdov test -- * Origin: Talk.Mail.Ru (2:5020/400) |
ActiveX Exe |
From: Dmitry Miloserdov Привет, 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" to A Skrobov on 01 Jan 04 01:36:50: DP>>> Если ответ положительный, то каким образом (конкретные примеры). AS>> А с чем именно проблемы? DP> Да мне какой нибудь пример попроще, я только начинаю осваивать DP> программирование :) Только начинаешь - а асм уже выучил? Иначе зачем тебе это? :-) Вот один из примеров: изменение размера часиков в трее ( 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 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 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) |