Да, заработало, спасибо!
Единственное, в первой записи запятая лишняя:
Код: Выделить всё
SetEnv portable %"%PP%"Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Код: Выделить всё
SetEnv portable %"%PP%"Эти подсказки не умеют раскрывать переменные окружения, но меня интересует даже не это. Хотелось бы задать координаты хинту так, чтобы он всплывал под нужной кнопкой при вызове. Видел краем глаза, что есть какие-то функции поиска пикселей на экране или в окне, нельзя из этого что-то выжать?Нет, узнать надежно какая кнопка нельзя. Ну я во всяком случае не представляю, как это можно сделать. Максимум что можно, наверно, это например найти 5 кнопку слева. Но толку от этого никакого нет. Да и смысл, у кнопок панелей свои настраиваемые подсказки.
Вы все правильно поняли. Мне просто хотелось бы, чтобы плагин имел возможность сообщать о своем статусе в диалоговом окне: версии, даты, пути, что загружено и что выполняется - вот и все. Без дополнительно вмешательства со стороны пользователя.Ну хорошо, как вы себе это представляете, без "танцев"? Ну вот хотя бы в виде псевдокода, или пример из другого языка живой. Просто мне кажется мы по-разному понимаем эти вещи.
Если при вызове, то для этого Autorun вообще не нужен. Скриптовые языки лучше подойдут.Orion9 писал(а): Хотелось бы задать координаты хинту так, чтобы он всплывал под нужной кнопкой при вызове.
Код: Выделить всё
; this code align menu by bottom border of toolbar's row
Local $hButtonBar = _TCHRequestInfo(28)
Local $tPoint = DllStructCreate("int X;int Y")
Local $aPos = MouseGetPos()
$tPoint.X = $aPos[0]
$tPoint.Y = $aPos[1]
Local $hWinPoint = DllCall("user32.dll", "hwnd", "WindowFromPoint", "struct", $tPoint)[0]
; if called from buttonbar, try to found lower border of button row
If $hButtonBar = $hWinPoint Then
; Need explicitly cast to Hwnd or function will fail under TC x64.
Local $iBarHeight = ControlGetPos($TC_HWND, "", HWnd($hButtonBar))[3]
Local $iButtonSize = _TCHIniRead($TC_INI, "ButtonBar", "ButtonHeight", 0)
If $iButtonSize > 0 Then
DllCall("user32.dll", "int", "ScreenToClient", "hwnd", $hButtonBar, "struct*", $tPoint)
Local $aRelPos[] = [$tPoint.X, $tPoint.Y]
Local $iRows = Ceiling($iBarHeight / ($iButtonSize + 4))
For $i = 1 To $iRows
If $aRelPos[1] > ($i-1) * ($iButtonSize + 4) And $aRelPos[1] <= $i * ($iButtonSize + 4) Then
$aPos[1] += $i * ($iButtonSize + 4) - $aRelPos[1] - $i*2
; it seems not possible to know exact x position of button
; due variable buttons width (separators)
$aPos[0] = $aPos[0] - Mod($aPos[0], $iButtonSize + 8)
ExitLoop
EndIf
Next
EndIf
EndIf
Ладно, резюмирую. С "версии, даты, пути" всё понятно. C "загружено" 50/50 (плагины? прочие dll? выполняющиеся exe? шрифты?). С потоками вообще непонятно, что именно и в каком виде. В конце-концов, как всю эту информацию сделать читабельной в MsgBox или подсказке (на всякий случай: вариант специального окна даже не рассматривается). Так что отложим до появления конкретики.Orion9 писал(а):Мне просто хотелось бы, чтобы плагин имел возможность сообщать о своем статусе в диалоговом окне: версии, даты, пути, что загружено и что выполняется - вот и все.
Да, речь шла о теории, как таковой. Поскольку передать полученные координаты в ваш тултип в Autorun или использовать для этого другой тултип (скриптовый) - это дело не сложное.Если при вызове, то для этого Autorun вообще не нужен. Скриптовые языки лучше подойдут.
Больше всего мне в ваших скриптах нравятся английские комментарии. Рутинное чтение научных трудов превращается в чтение художественных романов в жанре adventure.))Расчёт нижней границы строки я делал в одном проекте для меню. Координата X гуляет в пределах ширины кнопки, но меня это устраивает. Вот код (Autoit):
Все примерно так. Чем больше релевантной информации, тем лучше. К путям можно еще добавить модули, успешно подключенные по директивам Pragma Include. Еще можно добавить информацию по горячим клавишам, которые висят на SetHotkeyAction и зарегистрированным SetMessageAction функциям, которые ожидают сообщений. Начать можно и с простого MsgBox, а что касается потоков, то тут, наверное, ничего больше не добавишь, кроме того, что они выполняются + время старта каждого по отдельности + опционально общее время его выполнения, ведь отдельный поток может быть запущен необязательно вместе (одновременно) с самим модулем Autorun, а гораздо позже.Так что отложим до появления конкретики.
Давняя привычка. Как ни крути, английский сейчас де-факто стандарт для языков программирования и документации. Зато для большинства читающих код не нужно лезть в переводчик. А то встречался код с комментариями то на немецком, то на японском, вот где больOrion9 писал(а):Больше всего мне в ваших скриптах нравятся английские комментарии
Да можно наверно. В AHK есть функции ImageSearch, PixelSearch. Но это настолько малонадежный и медленный способ, что я никогда его серьезно не рассматривал.Orion9 писал(а):Но я все-таки расчитывал, что как-то можно найти иконку по пикселям.
Надо будет глянуть при первой возможности. Скорость меня не пугает, т.к. задача все-равно будет в фоне выполняться. Хочу, чтобы хинт получил нужные координаты и всплыл в нужном месте. Своего рода нотификация.В AHK есть функции ImageSearch, PixelSearch. Но это настолько малонадежный и медленный способ, что я никогда его серьезно не рассматривал.
Ну зря вы так... Я бы немецкий выучил за то, что на нем сам Гислер код черкалА то встречался код с комментариями то на немецком, то на японском, вот где боль
А просто не надо ожидать от ControlSetHint того, чего в ней не заложеноOrion9 писал(а):А в этой функции все работает так, как ожидается.
Да норм прикол, полно вам.)Ладно, это шутка, понятно, что пока на нее нет нормальной документации.
Это может понадобиться в моих непрекращающихся эксперементах с заголовкомМожно, конечно, попробовать сделать по аналогии с ShowPopupMenu, добавить ключ, чтобы текст трактовался как функция, которая должна вернуть текст подсказки. Вот только где и зачем это может понадобиться?
Ну, это не проблема. Пусть пользователь сам понимает и принимает все риски подобных экспепементов. В конце концов, для чего еще нужен Тотал, если не для проб и экспериментов, для копировования файлов что ли? Для этого у меня проводник естьДа и по производительности есть определенные опасения.
А я разве делал и заявлял возможность подсказок на заголовке окна? Выглядит это как баг. Хорошо бы увидеть код, как создается хинт.Orion9 писал(а):При наведении на заголовок
Уже писал выше, что отдельную задержку сделать очень проблематично.Orion9 писал(а):можно было задавать задержку отдельному хинту, не затрагивая другие.