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

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

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

Visual Basic 6.0 - Доступ к файлам


Re: Доступ к файлам

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


Привет, Michael.

Вы, было дело, писали 16 ноября 2003 г., 2:41:

MZ> Товаpищи! Подскажите, как из VB получить доступ к файлам в винде?

MZ> (с помощью опеpации click пpи помощи кнопки).


С помощью операции KeyDown при помощи клавиши F1 на слове Open :))


--
С уважением, Alexander
2:00:33 AM
* Origin: Talk.Mail.Ru (2:5020/400)

Подключение к инетy

Есть такая задача.
Пpога всё вpемя pаботает, но если кто-то подключился в инет,
сpазy же выкидывает какое-то сообщение.
У кого есть мож какие идеи, как это сделать лyчше всего ?

* Origin: www.Hz-Saratov.narod.ru (2:5053/39.9)

имя процедуры как аргумент....

* Hi, Andrew!

* писАл Andrew Matrosov к All
* про "имя процедуры как аргумент...."

AM> Есть ActiveX dll, есть прога которая ее юзает.

AM> кусок проги:

AM> ..........

AM> myActiveXobject.test (progaSub)

AM> ..........

AM> public sub progaSub()

AM> msgbox "ura"

AM> end sub

AM> --------------------------------------------

AM> кусок Дллки:

AM> ............

AM> private sub test (tmpprogaSub as ???)

AM> call tmpprogaSub

AM> end sub

AM> ............

AM> --------------------------------------------


AM> т.е. нужно из дллки вызвать процедуру проги имя которой передано в

AM> качестве аргумента... может кто то понял что я хотел спросить? :)


Hету каллбеков в VB6. F1 на AddressOf.

========================================================================
Passing Function Pointers to DLL Procedures and Type Libraries

[...]

"Basic to Basic" function pointers are not supported. Pointers to Visual Basic functions cannot be passed within Visual Basic itself. Currently, only pointers from Visual Basic to a DLL function are supported.
========================================================================


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

Re: ListView с иконками

DC>> Трабла. При заполнении ListView(report) большим количеством

DC>> записей с иконками, например все файлы на диске, VB

DC>> вылетает/вешаетс/out of memory.


SB> А как ты иконки берешь, где хранишь, и как освобождаешь ресурсы?


Вот так. Лист очищаю простым Clear. Может быть надо каждую иконку как-то убивать хитро,
но прога вешается еще при заполнении листа (>1000 записей)


Public Function AddIco&(nm$)
Dim fi As Long
Dim sfi As SHFILEINFO
fi = SHGetFileInfo(nm, SHGFI_USEFILEATTRIBUTES, sfi, LenB(sfi), SHGFI_ICON Or SHGFI_SMALLICON)

If fi = 0 Then Exit Function
If InStr(1, ILSet, "|" & sfi.iIcon & "|") = 0 Then
AddIco = FMain.IL.ListImages.add(, "f" & sfi.iIcon, IconToPicture(sfi.hIcon)).Index
ILSet = ILSet & IIf(ILSet = "", "|", "") & sfi.iIcon & "|"
Else
AddIco = FMain.IL.ListImages("f" & sfi.iIcon).Index
End If
End Function

Public Function IconToPicture(ByVal hIcon As Long) As IPictureDisp
If hIcon = hNull Then Exit Function ' тут все итак понятно:
Dim ipic As IPicture, picdes As PICTDESC, iidIPicture As IID
picdes.cbSizeofstruct = Len(picdes) ' длина передаваемой структуры
picdes.picType = vbPicTypeIcon ' тип заголовка, передаваемый в функцию
picdes.hgdiobj = hIcon ' Handle иконки
iidIPicture.Data1 = &H7BF80980
iidIPicture.Data2 = &HBF32
iidIPicture.Data3 = &H101A
iidIPicture.Data4(0) = &H8B
iidIPicture.Data4(1) = &HBB
iidIPicture.Data4(2) = &H0
iidIPicture.Data4(3) = &HAA
iidIPicture.Data4(4) = &H0
iidIPicture.Data4(5) = &H30
iidIPicture.Data4(6) = &HC
iidIPicture.Data4(7) = &HAB
' создаем картинку из icon handle
OleCreatePictureIndirect picdes, iidIPicture, True, ipic
Set IconToPicture = ipic
End Function

--
Всего наилучшего,
Dmitriy Chernishenko

* Origin: Hа том свое письмо заканчиваю... (2:5090/67.12)

Подскажите как найти что за форма зависает в памяти?

From: Андрей Y <andreyz [@] matchem.kth.se>



Такая проблема. При закрывании программы что-то остается в памяти компа
и видно в списке Applications при открытии Windows Task Manager. Если
программа запущена из-под VB6, то сам VB продолжает показывать что
программа работает, но нажатие на кнопку "пауза" никакого конкретного
оператора в программе желтым не выделяет. Думаю что где-то какая-то
форма была спрятана методом .Hide и к ней не было применено Unload.
Обнаружить что за форма с помощью систематического подхода: пройти
через всю систему взаимоотношений форм я физически не в состоянии - их
немеряно и написана прога была 10 лет назад, а потом дописывалась
(росла как кусты вобщем) - не помню ничего уже. Может есть способ
посмотреть что за форма висит?



--
Объяснение принципов помогает думать. Примеры учат обезьянничать.
Если надумаете е-мылить - лучше andreyz2000#hotmail com

* Origin: Talk.ru (2:5020/400)

Re: Подскажите как найти что за форма зависает в памяти?

From: "Dmitry Novikov" <dim [@] rnivc.kis.ru>


Всем привет!

"Андрей Y" <andreyz [@] matchem.kth.se> сообщил/сообщила в новостях следующее: news:bpcf9a$dt0$1 [@] host.talk.ru...


> Такая проблема. При закрывании программы что-то остается в памяти компа

> и видно в списке Applications при открытии Windows Task Manager. Если

> программа запущена из-под VB6, то сам VB продолжает показывать что

> программа работает, но нажатие на кнопку "пауза" никакого конкретного

> оператора в программе желтым не выделяет. Думаю что где-то какая-то

> форма была спрятана методом .Hide и к ней не было применено Unload.


В составе Visual Studio 6.0 есть тулса Spy++ Она всё покажет. Hайдешь
свой процесс и все его окна.

С наилучшими пожеланиями, Дмитрий
dim_nУБРАТЬrnivcРУССКИЕkisБУКВЫru
* Origin: Demos online service (2:5020/400)

размер массива

>\/


AZ> как узнать сабж?

Ubound(массив)

ну и LBound(массив)


>/\

* Origin: Attackie Interactive (2:5045/44.13)

Re: имя процедуры как аргумент....

From: "Andrew Matrosov" <chel [@] million.dp.ua>


Спасибо всем!

CallByName подошел как нельзя лучше,
перед этим правда подолбался с AddressOf,
но оказалось (читать сначало надо было доки,
а не эксперементировать:) что адрес то получить можно,
но вызвать по нему процедуру из своей проги - нельзя :(
(а может можно?)


* Origin: Alkar Teleport News Server (2:5020/400)

Re: Подскажите как найти что за форма зависает в памяти?

Мы где-то виделись, Андрей?

18 Nov 03 09:47:34 в RU.VISUAL.BASIC Андрей Y -> All:


АY> немеряно и написана прога была 10 лет назад, а потом дописывалась

АY> (росла как кусты вобщем) - не помню ничего уже. Может есть способ

АY> посмотреть что за форма висит?


См. коллекцию Forms.

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

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

Re: имя процедуры как аргумент....

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

18 Nov 03 16:54:31 в RU.VISUAL.BASIC Andrew Matrosov -> Andrew Matrosov:


AM> перед этим правда подолбался с AddressOf,

AM> но оказалось (читать сначало надо было доки,

AM> а не эксперементировать:) что адрес то получить можно,

AM> но вызвать по нему процедуру из своей проги - нельзя :(

AM> (а может можно?)


Увы, стандартных средств нет. Обычно в качестве нестандартных средств
используют либо CallWindowProc (она вызывает указанный адрес, подразумевая,
что у процедуры, чей адрес ей передается, ровно четыре DWORD-аргумента), либо
что-то самописное. Последнее есть и у меня. :) Оформлено в виде ActiveX Dll.
Кому надо - пишите.

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

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