Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Руководство по WM_COPYDATA
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Mon Nov 03, 2014 13:30    Post subject: Руководство по WM_COPYDATA Reply with quote

Существует ли в природе полное руководство по командам и параметрам, используемым в сообщении WM_COPYDATA при работе с TC?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12235
Location: Москва

Post (Separately) Posted: Mon Nov 03, 2014 13:43    Post subject: Reply with quote

На англофоруме есть примеры для AHK.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5832
Location: Москва

Post (Separately) Posted: Mon Nov 03, 2014 14:30    Post subject: Reply with quote

Dec
Можно скачать полную историю версий, в ней несколько сжато, но в целом внятно описаны возможности Тотала при работе с этим сообщением.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1042

Post (Separately) Posted: Mon Nov 03, 2014 15:04    Post subject: Reply with quote

CaptainFlint wrote:
Dec
Можно скачать полную историю версий

А где? На офсайте не нашёл, в HISTORY.TXT только 4е упоминания WM_COPYDATA.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Mon Nov 03, 2014 15:13    Post subject: Reply with quote

CaptainFlint wrote:
Dec
Можно скачать полную историю версий.

Ссылку не подскажешь?
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5832
Location: Москва

Post (Separately) Posted: Mon Nov 03, 2014 15:33    Post subject: Reply with quote

http://wincmd.ru/plugring/FullTCHistory.html
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Mon Nov 03, 2014 15:44    Post subject: Reply with quote

Я нашел следующее:

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
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 5832
Location: Москва

Post (Separately) Posted: Mon Nov 03, 2014 17:25    Post subject: Reply with quote

Dec
Странно, мне казалось, там все команды описаны. В общем, есть ещё CD для перехода в другой каталог на одной или обеих панелях. Строка lpData должна быть в следующем формате (пример для языка C/C++):
Quote:
"c:\\test1\x0dc:\\test2\x00ST\x00"

Первый путь — левая панель, второй — правая; любой из них может быть опущен (но симмвол-разделитель \x0d должен оставаться). Флаги после первого нулевого символа опциональны. "S": трактовать пути как исходный/целевой; "T": открывать пути в новых вкладках.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4507
Location: Ростов-Дон

Post (Separately) Posted: Tue Nov 04, 2014 17:01    Post subject: Reply with quote

Flasher wrote:
На англофоруме есть примеры для AHK.

Там не только для AHK примеры. Wink
Но топик является наиболее подробным обсуждением сообщений, посылаемых через WM_COPYDATA, есть примеры реализации на разных языках, в том числе для команды CD.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12235
Location: Москва

Post (Separately) Posted: Tue Nov 04, 2014 17:10    Post subject: Reply with quote

MVV wrote:
Там не только для AHK примеры. Wink
Да я уже видел, не стал акцентировать. Dec не вчера "родился", чтобы самостоятельно оценить. Wink
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1042

Post (Separately) Posted: Tue Dec 02, 2014 20:20    Post subject: Reply with quote

CD поддерживает юникод? Или только ANSI?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12235
Location: Москва

Post (Separately) Posted: Tue Dec 02, 2014 20:26    Post subject: Reply with quote

Поддерживает.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4507
Location: Ростов-Дон

Post (Separately) Posted: Tue Dec 02, 2014 20:42    Post subject: Reply with quote

Skif_off,
Поддерживает UTF-8. Синтаксис можно посмотреть тут.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Skif_off



Joined: 28 Nov 2012
Posts: 1042

Post (Separately) Posted: Tue Dec 02, 2014 21:10    Post subject: Reply with quote

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
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4507
Location: Ростов-Дон

Post (Separately) Posted: Tue Dec 02, 2014 22:11    Post subject: Reply with quote

Quote:
Маркер? Т.е. просто всегда дописывать \xEF\xBB\xBF перед каждым путём?

Да. Перед левым и перед правым свои маркеры, указывающие, что конкретно этот путь в UTF-8. На схеме показаны оба, и оба необязательные.
Quote:
Если нет, например, пути для левой панели, тогда так?

Если нет пути для какой-то панели, то и её маркер не нужен. Не знаю, что будет, если маркер будет, а пути не будет, хотя по логике он тогда должен игнорироваться, т.к. путь все равно пуст. Главное, чтобы в команде были символ конца строки и два нулевых байта.
Quote:
В случае отсутствия флагов S/T, команда должна заканчиваться двумя \x00?

Да, все элементы в квадратных скобках можно выкидывать, остальное писать надо.
Не забудь в поле размера данных учесть эти два нулевых байта, чтобы они корректно переслались тоталу.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group