Страница 26 из 243

Добавлено: Чт окт 06, 2011 17:55
MVV
Ну переменную в любом случае надо добавить, которая будет принимать значение 32 или 64 в зависимости от разрядности плагина (константу для каждой версии плагина), чтобы с помощью If Else загружать свои модули для своих тоталов.

Добавлено: Пт окт 07, 2011 13:57
Loopback
Первая бета с поддержкой x64. Изменений в функционале нет, в целом вроде всё работает, только возникли непонятные косяки с получением координат Edit-контрола в 64-битной версии MoveButton. Поправил коррекцией координат, но нет уверенности, что оно останется одинаковым на всех системах - причина этого явления пока непонятна.

Чтобы было более очевидно с бета-версиями, решил пойти по пути Гислера и нумеровать версии как "beta 1", "beta 2" и т.д.

Скачать

Добавлено: Пт окт 07, 2011 15:37
MVV
Вроде работает. Во всяком случае, мою TCFS2Tools грузит:)

Всё-таки стоит добавить константу %AUTORUN_TCARCH%, которая будет в 32-битном плагине возвращать 32, а в 64-битном - 64.

В диалоге копирования надо чуть больше делать высоту окна - при сравнении 32-битной и 64-битной пространство под кнопками в 32-битной чуть больше.

Добавлено: Пт окт 07, 2011 16:17
Loopback
MVV писал(а):Всё-таки стоит добавить константу %AUTORUN_TCARCH%, которая будет в 32-битном плагине возвращать 32, а в 64-битном - 64.
Добавлю, конечно, просто в первую версию не стал вносить добавлений относительно предыдущей, сначала надо потестировать.
MVV писал(а):В диалоге копирования надо чуть больше делать высоту окна - при сравнении 32-битной и 64-битной пространство под кнопками в 32-битной чуть больше.
Но в остальном нормально? Просто почему-то для верхнего Edit'а в 64-битной версии GetWindowRect возвращает неправильные координаты. Они действительно неправильные, даже проверил экранной линейкой :)

Добавлено: Пт окт 07, 2011 16:46
MVV
На вид нормально. На x64 кнопка у тебя на 1 пиксель левее, чем на x32.

А что с координатами у тебя, не понимаю, WinScan показывает абсолютно одинаковые координаты (и экранные, и клиентские) для обеих версий.

Добавлено: Пт окт 07, 2011 20:10
Loopback
MVV писал(а):А что с координатами у тебя, не понимаю, WinScan показывает абсолютно одинаковые координаты (и экранные, и клиентские) для обеих версий.
Вот и я не понимаю. Получаю с помощью Au3info, тупо меряю линейкой - координаты правильные. Но под 32-битной версией GetWindowRect возвращает верные координаты, а под 64 - нет. Причем только одного этого контрола.

Добавлено: Чт окт 13, 2011 16:57
MVV
Гляжу сейчас, 2% процессора кушается всего, из них 1% кушается тоталом. Отключил автообновление, всё равно. Смотрю треды - 0.8% кушает MoveButton. Довольно приличное потребление, особенно если учесть, что она большую часть времени ничего не делает.

Думаю, имеет смысл попробовать переделать цикл на хук. Ставишь локальный хук вызовом SetWindowsHookEx(WH_CALLWNDPROC, @MoveWindowHookProc, nil, GetWindowThreadProcessId(hMainTcWnd)) (при выгрузке плагина снимаешь хук). В процедуре-обработчике обрабатываешь исключительно сообщения WM_SHOWWINDOW. Если пришло левое сообщение, процедура тут же вернет управление, а если сообщение нужное, и окно собирается показаться, делаешь своё чёрное дело по перемещению кнопки и изменению размера окна (если это окно копирования/перемещения) - так никто не будет видеть твоей деятельности, т.к. она будет выполняться, пока окно ещё невидимо. Замедление работы будет практически нулевым, т.к. твой код будет выполняться исключительно на единственное сообщение.

Добавлено: Чт окт 13, 2011 23:11
Loopback
MVV
Да, почти целый процент - явно многовато. Не помню, почему я тогда не стал делать с хуками. Может, косяки были?

Переписал, сейчас в покое не должна вообще ничего потреблять.

Скачать

Добавлено: Чт окт 13, 2011 23:21
Flasher
Autorun_MoveButton.dll - 14 Кб
MoveButton.dll - 34,5 Кб
:?:

Добавлено: Чт окт 13, 2011 23:21
MVV
Ну дельфя даёт, поместить в секцию импорта 3 модуля kernel32.dll, каждый со своими функциями, часть повторяется. :D

Посмотрю завтра на работе на Win7x64, дома незаметно потребления и со старой.

Добавлено: Чт окт 13, 2011 23:43
Loopback
Flasher писал(а):Autorun_MoveButton.dll - 14 Кб
MoveButton.dll - 34,5 Кб
Ошибочка вышла, переименовать забыл. Нужно использовать бОльший файл. А больше почему стал - компилятор другой.
MVV писал(а):Ну дельфя даёт, поместить в секцию импорта 3 модуля kernel32.dll, каждый со своими функциями, часть повторяется.
:)

Добавлено: Чт окт 13, 2011 23:56
MVV
Loopback
Да нет, использовать нужно меньший:) а вообще, можно и оба. Но у меня это наблюдалось под TC8x32.

Flasher
Если открыть каждый по F3 в FileInfo, будет видно, что больший - 64-битный:)

Добавлено: Пт окт 14, 2011 00:21
Flasher
Loopback писал(а):Нужно использовать бОльший файл.
Больший из приведённых или меньший из новых для 32-бит?

У меня ругается:

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

Error in command at line [9]:
Unknown command: MoveOptionsButton
line [9]: MoveOptionsButton MOVE_LEGACY

Добавлено: Пт окт 14, 2011 09:41
MVV
Loopback, теперь всё супер! :D
Оба, 32-битный и 64-битный, на семёрке работают отлично. Ресурсов теперь не едят вообще.

Flasher, плагин точно загружает модули? Пути к файлам указаны верно? Такое может быть, если плагин не находит модули.

Добавлено: Пт окт 14, 2011 09:48
Loopback
Flasher писал(а):Больший из приведённых или меньший из новых для 32-бит?
Выложенные файлы - только для новой (1.6 бета 1) версии Autorun.

Поскольку все строки в новых версиях дельфи изначально юникодные, интерфейс плагинов автоматом поменялся. Поскольку его все равно надо менять и дополнять, пока не стал заморачиваться с совместимостью (а возможно, этого и не понадобится).
MVV писал(а):Ресурсов теперь не едят вообще.
Ага :) Хороший был совет, да и код упростился.