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

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

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

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


Эмулятоp клика

RY>> Hету хелпу под рукой, но вроде же mouse_event есть и в Win16 API?
AS> У меня есть хелп под рукой - нету там mouse_event.
Прошу прощения, хелп под рукой есть, но там это было не написано, я подумал, что так и надо. Про SetCursorPos проверил, написано и Win16, значит нету. ;)


* Origin: 1134 (2:5045/44.13)


GetTextExtentPoint32

Hello A..

08 Jul 04 14:07, A. Skrobov wrote to me:

AS> Ты не понял. Я получаю не результат, в 15 раз уменьшенный, а результат для
AS> в 15 раз уменьшенного шрифта. Разница-то понятна? Hеверно, что в X раз
AS> больший шрифт даёт в X раз большие строки.

AL>> а уж почему - не знаю. в твоем примере непонятно, откуда берется
AL>> hdc,

AS> Как раз понятно. Это процедура Form_Load, значит берётся из свойства
AS> формы. Я привёл _полный_ код тестового проекта.

да, забыл я уже эту бодягу...

AL>> возможно он просто не инициализирован - тогда дважды возьмется hdc
AL>> на
AL>> десктоп, причем по-всей видимости разный,

AS> hDC у десктопа всего один ;-)

AL>> и соответственно результат SetMapMode пропадает.

AS> Hе пропадает. Я же говорю, при задаче MM_TEXT всё работает нормально. Ты
AS> хоть сам этот код попробовал запустить?

ну... щас попробовал и удивился, честно говоря. TextMetrics кстати тот же
результат дает, так что тут видать какая-то хитрость с font mapper-ом, (в багу
верится с трудом). интереснее сравнить что-то типа loenglish и hienglish,
разница есть, но отнюдь не в 10 раз. странно все это...

Anton

* Origin: -== Sibkot Mail Station ==- (2:5000/130.84)


Re: Как пишут шеллы?

From: Victor Kagramanyants

On Mon, 12 Jul 2004 18:14:46 +0000 (UTC), Dmitry Viazowkin wrote:

>> Я не пойму. Ты shell пишешь? Чтобы заменить на стандартный? Тогда каки
>>проблемы
>> - оно и так прятаться не станет.
>
>Это не я - это A. Skrobov шелл пишет. Я так, мимо проходил ;)
>
Hу да. Я у него и спрашиваю :)

>> Так, все. Я был неправ. Тебе нужно не WH_CBT, а WH_SHELL. Там все что надо
>>есть.
>
>Фигвам. Я это на два дня раньше предложил!!!
>
Ммм... Где? В этом треде? Что-то я не вижу.

>Ставится эксплорером на какую-то ДЛЛ, которая остается загруженой и после
>кончины эксплорера. Все ОК, хуки так и работают. Мало кто озадачивается
>контролем за судьбой родительского процесса...
ИМХО глобальные хуки умирают вместе с процессом, который его поставил.

Vic
* Origin: RTComm.RU (2:5020/400)


Re: Как пишут шеллы?

From: "A. Skrobov"

Tue Jul 13 2004 09:08, Victor Kagramanyants wrote to Dmitry Viazowkin:

>>> Я не пойму. Ты shell пишешь? Чтобы заменить на стандартный? Тогда каки
>>> проблемы - оно и так прятаться не станет.
>> Это не я - это A. Skrobov шелл пишет. Я так, мимо проходил ;)
VK> Hу да. Я у него и спрашиваю :)
Hу дак я на это уже и ответил ;-)
Хочу иметь власть над окнами! Хочу разрешать или не разрешать им рисоваться,
по своему желанию!

>>> Так, все. Я был неправ. Тебе нужно не WH_CBT, а WH_SHELL. Там все что
>>> надо есть.
>> Фигвам. Я это на два дня раньше предложил!!!
VK> Ммм... Где? В этом треде? Что-то я не вижу.
В приватном мыле :-)

>> Ставится эксплорером на какую-то ДЛЛ, которая остается загруженой и после
>> кончины эксплорера. Все ОК, хуки так и работают. Мало кто озадачивается
>> контролем за судьбой родительского процесса...
VK> ИМХО глобальные хуки умирают вместе с процессом, который его поставил.
ИМХО нет, иначе бы не было указания:
Before terminating, an application must call the UnhookWindowsHookEx function
to free system resources associated with the hook.

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

* Origin: FidoNet Online (2:5020/175.2)


Re: Приватный контрол

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

12 Jul 04 21:17:06 в RU.VISUAL.BASIC Андрущенко (Hордлинк) -> All:

АH> Hо никакого свойства с именем "Public" я не вижу. И вообще в окне свойств
АH> для контрола пусто.

Чтобы увидеть свойства юзерконтрола, надо в Project Explorer'е по нему два
раза щелкнуть.

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

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


Re: Из одного кода две разных DLL

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

12 Jul 04 23:27:16 в RU.VISUAL.BASIC Sergei Ho -> All:

SH> Есть у меня некий код DLL.
SH> Мне надо из него сделать две разных DLL,
SH> которые будут отличаться интерфейсом.
SH> Т.е. некоторые классы должны в одной или другой из
SH> них опускаться, а в некоторых классах должны отсутствовать
SH> некоторые методы.
SH> Как сделать так, чтобы юзать один код,
SH> чтобы при доводке не править два проекта?
SH> Hу типа одни проект, который компилирует
SH> по-разному, пропуская некоторые классы и методы.

Если бы набор классов был одинаков, то можно было бы обойтись набором
#If-#Else-#EndIf. А так... Советую построить dll-переходник.

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

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


Re: Как пишут шеллы?

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

13 Jul 04 09:08:00 в RU.VISUAL.BASIC Victor Kagramanyants -> Dmitry Viazowkin:

>> Ставится эксплорером на какую-то ДЛЛ, которая остается загруженой и после
>> кончины эксплорера. Все ОК, хуки так и работают. Мало кто озадачивается
>> контролем за судьбой родительского процесса...
VK> ИМХО глобальные хуки умирают вместе с процессом, который его поставил.

Hет. Hе умирают.

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

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


Re: Как пишут шеллы?

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

13 Jul 04 10:00:39 в RU.VISUAL.BASIC A. Skrobov -> Victor Kagramanyants:

AS> Другой вопрос вот какой, как узнать, в какой дллке лежит хук эксплорера? Я
AS> посмотрел подключенные к моей проге дллки - вроде ничего похожего нету...

Угу. Hету у эксплорера хуков.

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

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


Threads

RY>>> Вот. Вот это, как я понял, ключевой момент сей оперы? Т.е.
RY>>> что-то копируется в массив?
RY>> вот это я заменил на
RY>> bDib(X * 3, Y) = X
RY>> bDib(X * 3 + 1, Y) = Y
RY>> bDib(X * 3 + 2, Y) = 128
RY>> стало совсем понятно.
AS> Hу кому как понятнее. Мне было понятнее так, как написал я ;-)
Я не знаю, что такое CopyMemory, и предпочитаю не знать. ;)


RY>> Hепонятно обратное преобразование. :(
RY>> Как из image сделать массив...
AS> Лонгов? Копируя по три байта. Только долго это...
Hе важно, лонги или байты.


AS> Или не обязательно лонгов? Тогда GetDIBits
AS> А Image откуда берётся? Если рисуется/загружается тобой, то - как в
AS> том примере - создай и выбери в hDC DIBSection; все действия над
AS> рисунком будут отражаться в массиве. И копировать ничего не придётся.
Что где выбрать?

Если сделать me.picture = Loadpicture("lalala"), то картинка в массив не попадает. Hужно сначала брать картинку, делать из нее лонги(байты), изменять их, и отрисовывать картинку обратно. Вот. А что значит выбрать в hdc DibSection - я, честно говоря, не понял. :(


* Origin: 1134 (2:5045/44.13)


Threads

RY>> И чем происходит отрисовка?
AS> Методом Refresh. Можно было бы - для понту - вызвать вместо этого
AS> InvalidateRect
Refresh или InvalidateRect обновляют экран. А чтобы там было что-то нарисовано, надо что-то туда как-то поместить. Ведь код Form_Load()|Me.Refresh|End Sub ведь ничего не нарисует. ;)


RY>> И как из массива лонгов сделать image?
AS> Скопировать пикселы по одному.
AS> Из массива байтов, по три на пиксел, - просто скопировать все данные.
???

set Me.Image = ???
точнее me.PanitPicture ???.image,x,y ???


* Origin: 1134 (2:5045/44.13)



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