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)