View previous topic :: View next topic |
Author |
Message |
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Mon Nov 03, 2014 13:30 Post subject: Руководство по WM_COPYDATA |
|
|
Существует ли в природе полное руководство по командам и параметрам, используемым в сообщении WM_COPYDATA при работе с TC? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Nov 03, 2014 13:43 Post subject: |
|
|
На англофоруме есть примеры для AHK. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Nov 03, 2014 14:30 Post subject: |
|
|
Dec
Можно скачать полную историю версий, в ней несколько сжато, но в целом внятно описаны возможности Тотала при работе с этим сообщением. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Mon Nov 03, 2014 15:04 Post subject: |
|
|
CaptainFlint wrote: | Dec
Можно скачать полную историю версий |
А где? На офсайте не нашёл, в HISTORY.TXT только 4е упоминания WM_COPYDATA. |
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Mon Nov 03, 2014 15:13 Post subject: |
|
|
CaptainFlint wrote: | Dec
Можно скачать полную историю версий. |
Ссылку не подскажешь? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Mon Nov 03, 2014 15:44 Post subject: |
|
|
Я нашел следующее:
Quote: | 25.11.11 Added: Send WM_COPYDATA with dwData='G'+256*'W': Same as with 'G'+256*'A', but data is returned as UTF-16 Unicode. dwData of return is 'R'+256*'W' (32/64)
25.11.11 Added: Send WM_COPYDATA with dwData='G'+256*'A' and lpData pointing to command to get back WM_COPYDATA with various info. Supported commands A: Active side (returns L or R), or two byte command: first byte: L=left, R=right, S=source, T=target. Second byte: P=current path, C=list count, I=caret index, N=name of file under caret. dwData of return is 'R'+256*'A' (32/64)
09.12.07 Added: Unicode support in WM_COPYDATA: prepend UTF8 byte order marker before each path containing Unicode characters (pure ANSI paths are passed as ANSI) -> /O switch now supports Unicode too
17.09.06 Added: Send WM_COPYDATA with dwData='E'+256*'M' and lpData pointing to em_xyz internal command (0-terminated) to execute that command. Accepts parameters separated by a space
12.04.06 Added: Support for environment variables in paths received via WM_COPYDATA from other programs
|
Т.е. по сути есть только 3 "команды": GW, GA и EM. Я правильно понимаю? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Mon Nov 03, 2014 17:25 Post subject: |
|
|
Dec
Странно, мне казалось, там все команды описаны. В общем, есть ещё CD для перехода в другой каталог на одной или обеих панелях. Строка lpData должна быть в следующем формате (пример для языка C/C++):
Quote: | "c:\\test1\x0dc:\\test2\x00ST\x00" |
Первый путь — левая панель, второй — правая; любой из них может быть опущен (но симмвол-разделитель \x0d должен оставаться). Флаги после первого нулевого символа опциональны. "S": трактовать пути как исходный/целевой; "T": открывать пути в новых вкладках. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Nov 04, 2014 17:10 Post subject: |
|
|
MVV wrote: | Там не только для AHK примеры. | Да я уже видел, не стал акцентировать. Dec не вчера "родился", чтобы самостоятельно оценить. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Tue Dec 02, 2014 20:20 Post subject: |
|
|
CD поддерживает юникод? Или только ANSI? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Dec 02, 2014 20:26 Post subject: |
|
|
Поддерживает. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Skif_off
Joined: 28 Nov 2012 Posts: 1232
|
(Separately) Posted: Tue Dec 02, 2014 21:10 Post subject: |
|
|
MVV
Смущает вот это
Quote: | 09.12.07 Added: Unicode support in WM_COPYDATA: prepend UTF8 byte order marker before each path containing Unicode characters (pure ANSI paths are passed as ANSI) |
Маркер? Т.е. просто всегда дописывать \xEF\xBB\xBF перед каждым путём?
Если нет, например, пути для левой панели, тогда так
Code: | ["\xEF\xBB\xBF"] "\x0D" ["\xEF\xBB\xBF"] ["<right_path>"] "\x00" ["S"] ["T"] "\x00" |
?
В случае отсутствия флагов S/T, команда должна заканчиваться двумя \x00?
Надо ещё разобраться с \x00: на AutoIt, кажется, не добавлял в конце, но работало. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue Dec 02, 2014 22:11 Post subject: |
|
|
Quote: | Маркер? Т.е. просто всегда дописывать \xEF\xBB\xBF перед каждым путём? |
Да. Перед левым и перед правым свои маркеры, указывающие, что конкретно этот путь в UTF-8. На схеме показаны оба, и оба необязательные.
Quote: | Если нет, например, пути для левой панели, тогда так? |
Если нет пути для какой-то панели, то и её маркер не нужен. Не знаю, что будет, если маркер будет, а пути не будет, хотя по логике он тогда должен игнорироваться, т.к. путь все равно пуст. Главное, чтобы в команде были символ конца строки и два нулевых байта.
Quote: | В случае отсутствия флагов S/T, команда должна заканчиваться двумя \x00? |
Да, все элементы в квадратных скобках можно выкидывать, остальное писать надо.
Не забудь в поле размера данных учесть эти два нулевых байта, чтобы они корректно переслались тоталу. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
|