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

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

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

Visual Basic 6.0 - Эмулятоp клика


Эмулято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 <kagr [@] narzan.com>


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" <tyomitch [@] r66.ru>


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 - http://www.fido-online.com (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)