Страница 101 из 130

Добавлено: Вс сен 13, 2015 20:44
Flasher
MVV
Ну, так что про SetFocus?

Добавлено: Вс сен 13, 2015 20:51
MVV
Фокус на дочернее окно нельзя установить из внешнего процесса.

Добавлено: Вс сен 13, 2015 20:58
Flasher

Добавлено: Вс сен 13, 2015 21:48
MVV
Ну где-то так. GetFocus/SetFocus не работают между разными процессами.

Добавлено: Вт сен 15, 2015 04:52
Flasher
MVV писал(а):нельзя
Вообще-то можно, только другими методами, я полагаю.
См. у nircmd команды win (dlgclick/dlgsettext/dlgsetfocus), dlg/dlgany (click/settext).

Добавлено: Вт сен 15, 2015 11:05
MVV
Flasher писал(а):Вообще-то можно, только другими методами, я полагаю.
См. у nircmd команды win (dlgclick/dlgsettext/dlgsetfocus), dlg/dlgany (click/settext).
Она у тебя работает? Я попробовал, ничего не происходит. И вызывает она ту же SetFocus, которая возвращает нулевой результат.

Добавлено: Вт сен 15, 2015 16:54
Flasher
Я помню, что как-то на XP проверял, что-то работало. А сейчас на 7 не хочет. А смысл автору добавлять неработающие функции? Он, по-твоему, их сам не тестировал? :D

Добавлено: Вт сен 15, 2015 19:31
MVV
Если кто-то убедит меня, что его алгоритм работает, я могу копнуть глубже, а пока не вижу в этом смысла, т.к. у меня он не сработал.

Добавлено: Ср сен 16, 2015 01:54
Flasher
Не знаю, что ты называешь дочерними окнами.
Скажем, комстрока в ТС - дочернее окно?
С пом. AHK вставить текст в неё:

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

PostMessage, 0x433, 4003,,, ahk_class TTOTAL_CMD ; (на случай, если отключена опционально)
ControlSetText, Edit1, cd "`%`COMMANDER_EXE`%`", ahk_class TTOTAL_CMD

Добавлено: Ср сен 16, 2015 10:11
MVV
Flasher,
Есть окна верхнего уровня, а есть дочерние, которые имеют родителей (верхнего уровня или в свою очередь дочерние). Все контролы, элементы управления, которые находятся внутри других окон - дочерние. Комстрока, любая панель, комбобоксы (внутри комбобоксов в свою очередь поля ввода), галочки в диалогах тотала - это дочерние. Но окно тотала и диалоговые окна - это окна верхнего уровня.

Для установки текста достаточно отправить окну сообщение, тут всё просто, а вот для установки фокуса на окно в рамках одного процесса надо вызывать функцию SetFocus.

Добавлено: Ср сен 16, 2015 10:27
Flasher
MVV писал(а):Но окно тотала и диалоговые окна - это окна верхнего уровня.
И какой из этого вывод?
MVV писал(а):Для установки текста достаточно отправить окну сообщение, тут всё просто
Это "просто" очень бы пригодилось.
MVV писал(а):а вот для установки фокуса на окно в рамках одного процесса надо вызывать функцию SetFocus
Тот же пример установки фокуса в комстроке:

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

ControlFocus, Edit1, ahk_class TTOTAL_CMD

Добавлено: Ср сен 16, 2015 11:03
MVV
Это "просто" очень бы пригодилось.
Посмотрим, сложно ли прикрутить возможность передачи строк в качестве параметров сообщений.
Тот же пример установки фокуса в комстроке:
Более чем уверен, что AHK ставит хуки и внедряет библиотеки в процессы, поэтому это работает.

Добавлено: Ср сен 16, 2015 11:26
Flasher
MVV писал(а):Посмотрим
ОК.
MVV писал(а):внедряет библиотеки в процессы
А Procmon-ом это отследить реально?

Добавлено: Ср сен 16, 2015 12:03
MVV
Думаю, отследить это можно банальным просмотром списка подгруженных в процесс библиотек.

Я посмотрю, может, добавлю эту функцию в TCFS2Tools.

Добавлено: Ср сен 16, 2015 12:07
Flasher
Так как тут успеешь отследить? Команда моментальная. Зациклить?