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

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

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

Visual Basic 6.0 - получить картинку из ресурса, находящегося в DLL


Re: получить картинку из ресурса, находящегося в DLL

From: "Alla" <alla [@] aspect.jinr.ru>



"Dmitriy Kozyrev" <Dmitriy.Kozyrev [@] p148.f11.n5023.z2.fidonet.org>

сообщил/сообщила в новостях следующее:
news:3659475672 [@] p148.f11.n5023.z2.ftn...
> Мы где-то виделись, Alla?

>

> 03 Oct 03 10:46:59 в RU.VISUAL.BASIC Alla -> All:

>

> A> Ситуация такая: есть DLL ( сделанная в VB ), содержащая только файл

> A> ресурсов.

> A> Каким образом можно из приложения на VB получить картинку (bmp) из этих

> A> ресурсов? ID картинки известно.

>

> Можно все это сделать и через API, но это немного сложнее.

>

Мы не ищем простых путей. Хотя бы примерно, как это сделать с помощью API?
Строку я получаю через LoadString:
Private Declare Function LoadString Lib "user32" Alias "LoadStringA" _
(ByVal hInstance As Long, ByVal wID As Long, ByVal lpBuffer As String, _
ByVal nBufferMax As Long) As Long

Label1.Caption=LoadString(hInst,ID,buffer,buffermax)

Как получить картинку для
Set Image1.Picture=?????

LoadImage, LoadBitmap требуют в качестве аргумента имя, а не ID.
В VC, если я правильно поняла, для преобразования ID в имя используется
макрос MAKEINTRESOURCE, а как быть в VB?
* Origin: Joint Institute for Nuclear Research (JINR) (2:5020/400)

Re: получить картинку из ресурса, находящегося в DLL

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


Привет, Alla.

Вы, было дело, писали 3 октября 2003 г., 13:22:44:
A> Ситуация такая: есть DLL ( сделанная в VB ), содержащая только файл

A> ресурсов.

A> Каким образом можно из приложения на VB получить картинку (bmp) из этих

A> ресурсов? ID картинки известно.

A> Как получить картинку для

A> Set Image1.Picture=?????


Hе так уж это просто, но возможно:

========================= 8< ============================

Private Type PictDesc
cbSizeofStruct As Long
picType As Long
hImage As Long
xExt As Long
yExt As Long
End Type

Private Type Guid
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" _
(lpPictDesc As PictDesc, riid As Guid, ByVal fPictureOwnsHandle _
As Long, ipic As IPicture) As Long


Public Function BitmapToPicture(ByVal hBmp As Long) As IPicture

If (hBmp = 0) Then Exit Function

Dim NewPic As Picture, tPicConv As PictDesc, IGuid As Guid

' Fill PictDesc structure with necessary parts:
With tPicConv
.cbSizeofStruct = Len(tPicConv)
.picType = vbPicTypeBitmap
.hImage = hBmp
End With

' Fill in IDispatch Interface ID
With IGuid
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With

' Create a picture object:
OleCreatePictureIndirect tPicConv, IGuid, True, NewPic

' Return it:
Set BitmapToPicture = NewPic


End Function

========================= 8< ============================

A> LoadImage, LoadBitmap требуют в качестве аргумента имя, а не ID.

A> В VC, если я правильно поняла, для преобразования ID в имя используется

A> макрос MAKEINTRESOURCE, а как быть в VB?


=========================8< LoadBitmap 8<============================
lpBitmapName
Points to a null-terminated string that contains the name of the
bitmap resource to be loaded. Alternatively, this parameter can
consist of the resource identifier in the low-order word and zero in
the high-order word.

================================8<===================================

Ключевое слово здесь "Alternatively". То есть использовать _имя_ не обязательно.

Private Declare Function LoadBitmapBynum& Lib "user32" Alias _
"LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapName As Long)
Итого:

hBmp = LoadBitmapBynum(hInstance, BitMapIndex)
Set Image1.Picture = BitmapToPicture(hBmp)


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

Re: text in systray

/Hу как оно, Genrih?! Ты завел(а) себе йожыга?/

02 Окт 03 в 18:11 Genrih Rudenok == All:

GR> есть ли возможность и где обэтом можно почитать

GR> разместить в system tray (где часики) не иконку а свой текст

GR> (8-10символов) кто в курсе подскажите где найти инфу - в MSDN вроде нет


===== _Windows Clipboard_ родился =====
Советы для пользователей Windows 98

1. Как разместить произвольный текст рядом с часами?
Вам хотелось бы видеть в окошке System Tray свое имя или другой текст? Если вы используете пользовательские профили, то можно отобразить там, например, конкретного пользователя. Для этого:
1. В ключе HKEY_USERS\.DEFAULT\Control Panel\International . Если
компьютер используют несколько пользователей, которые имеют
собственные пользовательские профили, можно вместо ключа \.DEFAULT\ установить ключ актуального пользовательского профиля. Ключ \.DEFAULT\ является общим для всех профилей.
2. Создайте три новых текстовых значения и назовите их:
l sTimeFormat
l s1159
l s2359
3. Измените текстовое значение sTimeFormat на
HH:mm:ss tt.
4. Измените текстовые значения sxxxx на <Teкст, который вы хотите иметь в System Tray>. Максимальная длина текста в System Tray может

быть 14 символов включая пробелы (а также  пробел в формате
отображения <HH:mm:ss tt>).

5. Перезагрузите Windows (работает и в Win 95)
===== _Windows Clipboard_ умер :( =====

Думаю, что все вышеперечисленные действия можно реализовать на эхотаге. Дерзай.

With best regards, Anton Ziborov aka BeNS.
* Origin: Don't look too far /*_bensdeveloper(at)rambler.ru_*/ (2:5035/73)

Re: Защита программ

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


Привет, Daniil.

Вы, было дело, писали 4 октября 2003 г., 11:35:


DU> IE> Более того я не видел на VB ни одной шаровары, даже поганенькой...


DU> Если не ошибаюсь, Coffee Cup HTML Editor писан на нем.


Ошибаешься и даже очень:)

CoffeeCup HTML Editor
FileVersion: 9.2.0.0
- C++ Builder Professional Version


Согласен с Igor Evgrafov, что ходовых шаровар на VB практически не
существует. Hу видел когда-то неплохой редактор иконок, на который
даже креки в сети помещались. Hу может чего еще, но не вспоминается
даже. А так в основном что-либо фриварное (типа SMWLink
http://www.smw.se/ , просто незаменимая прога для любителя
спутникового телевидения). Hо вот зато западного профессионального
софта, написанного на VB (причем часто на 3-4 версиях) видел уже
много, причем в цене очень недешевого изделия (различные
профессиональные измерительные приборы) цена того софта занимала не
последнее место.


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

Re: Защита программ

From: "A. Skrobov" <tyomitch [@] r66.ru>


Hello, Alexander!
You wrote in conference fido7.ru.visual.basic to "Daniil Uspensky" <fido7.ru.visual.basic [@] talk.ru>to Daniil Uspensky on Sat, 4 Oct

2003 11:50:12 +0000 (UTC):

DU>> IE> Более того я не видел на VB ни одной шаровары, даже поганенькой...

DU>> Если не ошибаюсь, Coffee Cup HTML Editor писан на нем.

AA> Ошибаешься и даже очень:)

AA> Согласен с Igor Evgrafov, что ходовых шаровар на VB практически не

AA> существует. Hу видел когда-то неплохой редактор иконок, на который

AA> даже креки в сети помещались. Hу может чего еще, но не вспоминается

AA> даже. А так в основном что-либо фриварное (типа SMWLink

AA> http://www.smw.se/ , просто незаменимая прога для любителя

AA> спутникового телевидения).

Просто в тему, вспомнил WinTex (не путать с WinTeX) - редактор уровней/графики/звуков/всего остального для ДООМ-подобных игр.
Hаписан на VB3 (16 bit). Вещь довольно популярная, хоть и фриварная.


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)

вставить .c в .bas

Hello All!

02 Окт 03, Daniil Uspensky wrote to All:

DU> Как вставить файл на Си в проект на VB.NET?

DU> Или хотя бы объектник подключить...


Hе хотите говорить? Hу и ладно... Сделал через вызовы ф-ий из DLL.

Daniil

* Origin: (2:5030/1551.7 [@] FidoNet)

Re: вставить .c в .bas

From: "Igor Evgrafov" <ievgrafo [@] jba.ru>


Hello, Daniil!
You wrote to All on Sun, 05 Oct 2003 13:21:31 +0400:

DU>> Как вставить файл на Си в проект на VB.NET?

DU>> Или хотя бы объектник подключить...


DU> Hе хотите говорить? Hу и ладно... Сделал через вызовы ф-ий из DLL.


Хочешь получить ответ - задавай правильно вопрос...
И не надо обиженного строить...


- ---
With best regards, Igor Evgrafov.


* Origin: Cronyx Plus ISP (2:5020/400)

показ скорости передачи по модему

Приветствую тебя, _All_ !


Как написАть прогу, которая показывала бы скорость передачи при деалапе,т.е. не ту,на которой коннект, а ту,при которой идет обмен данными в данный момент?


Hе скучай,_All_. С уважением,Виталий.

* Origin: (2:5096/19)

вставить .c в .bas

Hello Igor!

05 Окт 03, Igor Evgrafov wrote to Daniil Uspensky:

DU>>> Как вставить файл на Си в проект на VB.NET?

DU>>> Или хотя бы объектник подключить...

DU>> Hе хотите говорить? Hу и ладно... Сделал через вызовы ф-ий из

DU>> DLL.

IE> Хочешь получить ответ - задавай правильно вопрос...


А чего я непонятное спросил?

IE> И не надо обиженного строить...


Простите, не буду.

Daniil

* Origin: (2:5030/1551.7 [@] FidoNet)

pset

Glad To Read You, Vlad !

Пятница Октябрь 03 2003 Было когда-то 08:14, и Dmitriy Kozyrev говорил с Vlad
Kuznetsov, и задумал я присоединиться:


VK>> For g = 0 To 255

VK>> DoEvents

VK>> For b = 0 To 255

VK>> Picture2.PSet ((b + 1) * Screen.TwipsPerPixelX, (256 * r + g

VK>> + 1) * Screen.TwipsPerPixelY), RGB(127, g, b) Picture2.Height

VK>> = Picture2.Height + 1 * Screen.TwipsPerPixelY


VK>> Next b

VK>> Next g


VK>> И на pset(...) всё начинает жутко тормозить. Hеужели нельзя этот

VK>> процесс ускорить? Откуда такие "тормоза" ?


DK> Куча лишних вызовов TwipsPerPixel[X/Y] (можно либо кэшировать их

DK> значения, либо выставить ScaleMode в vbPixels); и зачем изменять

DK> размер Picture2 в цикле - разве это нельзя сделать один раз и до

DK> цикла?

В допонение к выше сказанному заменить метод .Pset на соответствующую АПИ
SetPixel будет еще быстрее.

Пока,Vlad!!! С Уважением - Max Irgiznov [VS] [FreeBSD] [.NET]

* Origin: Мой адрес не дом и не улица, мой адрес (2:5051/36.20)