Техническая поддержка :

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

для защиты Windows программ

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

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


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

From: Alexander Asyabrik

Привет, 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


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



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

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


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

From: "Dmitry Novikov"

Всем привет!

"Андрей Y" сообщил/сообщила в новостях следующее: 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"

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

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)



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




Главная     Программы     Статьи     Разное     Форум     Контакты