Страница 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, каждый со своими функциями, часть повторяется.
Посмотрю завтра на работе на 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, теперь всё супер!

Оба, 32-битный и 64-битный, на семёрке работают отлично. Ресурсов теперь не едят вообще.
Flasher, плагин точно загружает модули? Пути к файлам указаны верно? Такое может быть, если плагин не находит модули.
Добавлено: Пт окт 14, 2011 09:48
Loopback
Flasher писал(а):Больший из приведённых или меньший из новых для 32-бит?
Выложенные файлы - только для новой (1.6 бета 1) версии Autorun.
Поскольку все строки в новых версиях дельфи изначально юникодные, интерфейс плагинов автоматом поменялся. Поскольку его все равно надо менять и дополнять, пока не стал заморачиваться с совместимостью (а возможно, этого и не понадобится).
MVV писал(а):Ресурсов теперь не едят вообще.
Ага

Хороший был совет, да и код упростился.