Как получить Handle окна

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Да давно такого густо наваристого флейма не было ... :wink:
Но вообщем интересно так как задачи действительно немного не тривиальные .
Извиняюсь за лень вообщем "все уже есть". :idea:
Как получить дескриптор консольного окна
(Второй способ самый надежный и годится не только для консоли )
Но идее все решается "могучим ураганом" в одну строчку (Не уверен что сработает для "голой консоли" ) ...
Handle := GetWindow(WindowProc, gw_HWndFirst);
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Alex2013, "нетривиальные" они только если MSDN не читать.
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Ещё флейма подкину :D Про команды, но про отладку всё того же. В самой замечательной для линуксоида винде, то есть в wine обнаружил, что команда START не такая не то что как в семёрке, она не такая как даже в ХРюше! Более правильная, но оттого часто несовместимая с виндовым cmd. В винде, если используешь после START кавычки, то всё, звиздец, ты должен перед запускаемым файлом писать имя окна с любым мусором, типа "" или "wefkwefklmwefn". Без этого START решит что твой запускаемый файл это название окна, а идущие после параметры, это бинарник! Круто, да, не могли промаркировать окно ключиком, вместо этого заставили всех его использовать. А линуксовый вайн никакого имени окна знать не знает и думает что это и есть бинарник. Если у кого-то под рукой есть свежий вайн, то интересно узнать, как в нём сейчас START работает, интересует копипаста первых строчек его справки. Чтобы получить её, в консоли надо набрать

Код: Выделить всё

wine cmd
help start

У меня выдаёт вот это

Код: Выделить всё

Запускает программу или открывает документ приложением,
связанным с файлами с данным расширением.

Использование:
start [options] имя_файла_программы [...]
start [options] имя_файла_документа

Опции:
/M[inimized] Запустить программу свёрнутой.
/MAX[imized] Запустить программу на весь экран.
/R[estored]  Запустить программу в окне обычного размера.
/W[ait]      Ожидать завершения программы и выйти с её кодом выхода.
/Unix        Запустить с помощью windows explorer, используя Unix-имя файла.
/ProgIDOpen  Открыть документ, используя указанный progID.
/?           Вывести эту справку и выйти.

Вот думаю, или забить на вайн, или писать универсальные мусорные команды пита

Код: Выделить всё

start "открываемый бинарь" "открываемый бинарь" --=файлы_всякие  --=файлы_всякие

То есть промаркировать открываемые файлы чтобы одна из записей "открываемый бинарь" ушла в мусор. Работать должно, но если в новых вайнах команду синхронизировали, то подумаю, стоит ли заморачиваться.
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Снег Север писал(а):Alex2013, "нетривиальные" они только если MSDN не читать.

И часто это все в лазарусе "под стандартным LCL" используется ?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Alex2013 писал(а):И часто это все в лазарусе "под стандартным LCL" используется ?

Если писать "hello world", то редко. Я не знаю сколько чего пишут на лазаре, а на делфи пишут такого много. Я сам писал и не одно приложение, как я упоминал выше. Поскольку работа с системными функциями в делфи и лазаре ничем не отличаются, не вижу предмета для спора.
Вон топикстартер выше снова истерит, что wine работает не так, как оригинальная винда... :D
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

Имхо : ИМХО если приходится сталкиваться с системными функциями слишком часто, то скорее всего вы что-то не так делаете.

Есть свежий пример: небольшая библиотека FastDIB предлагающая альтернативу TCanvas ( с закосом под "чистое WinAPI" ) мне там интересен модуль FastFX с набором довольно редких фильтров и эффектов.. Нет, мне вполне понятно почему там стараются отчасти подражать LCL/VCL и делать часть работы через handle и TBMInfo но зачем в конверторы Bitmap2FastDIB и CopyBitmap2FastDIB пихать чудовищные AttachToHandle и LoadFromHandle( ) я В УПОР НЕ ПОНИМАЮ .

Да, там есть вариант с компрессией RLE8 но зачем GetObject GetDIBits и т.д. из WInApi напрягать ? Из за возможности одним махом обработать изображения с разным BPP ? Тоже отмазка как-то сомнительная .
Знаешь что в результате получилось, а то что я наблюдал только в кривом Wine ! Случайным образом кадр то рисуется нормально, то поворачивается вверх тормашками... Что я сделал вместо "патентованной конверсии" ?

Написал две строчки кода в начале использования FastDIB ...

Код: Выделить всё

  FBmp:=TFastDIB.Create;  FBmp.SetSize(B.Width,B.Height,24); BitmapTest(b,pf24bit);
  with b.RawImage do   Move(Data^,FBmp.Bits^,DataSize);

...и одну в конце

Код: Выделить всё

b.BeginUpdate; with b.RawImage do Move(FBmp.Bits^,Data^,DataSize); b.EndUpdate; FBmp.Free;

Вот что мешало автору библиотеки FastDIB написать кучку простых и понятных процедур в стиле Bitmap2FastDIB_ХХbpp вот таким незамысловатым но АБСОЛЮТНО НАДЕЖНЫМ образом ? По моему ничего кроме выпендрежа ! :idea:
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

Снег Север писал(а):Вон топикстартер выше снова истерит, что wine


Кое-кого, не будем указывать, кого, галлюцинации не отпускают. В простом обсуждении технических вопросов мерещатся толпы зомби покушающиеся на дорогого Билла Гейтса и весь офис Мелкософта.
0beron
новенький
Сообщения: 23
Зарегистрирован: 18.08.2012 19:32:10

Сообщение 0beron »

Снег Север писал(а):Сквозняк, у тех, у кого руки не из жопы, всё прекрасно работает..

К тебе это отношения не имеет... Они у тебя именно оттуда,
ибо по делу тЫ ничего не написал (один флуд) - хоть и долгожитель, а почитаешь - зассанец!!!
Влюбленный в Билла Гейтса,
вот только Лазарь не только для ВиндоНавозников разрабатывался, но и
для MacOS X, iOS и Linux - вопрос был задан именно про Linux -
и что ты посоветовал? Всем бросить свои системы и срочно переходить на ВиндоНавоз...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

0beron, ты из годичного запоя вышел?
iskander
энтузиаст
Сообщения: 627
Зарегистрирован: 08.01.2012 18:43:34

Сообщение iskander »

0beron писал(а):К тебе это отношения не имеет... Они у тебя именно оттуда,
ибо по делу тЫ ничего не написал (один флуд) - хоть и долгожитель, а почитаешь - зассанец!!!

Какие ваши доказательства?(с)
Ответить