Нет, неправильно. >>addhaloka писал(а):если я конечно правильно понял, о чём речь.
+Flasher писал(а):С командой cd это не требуется.
Skif_off писал(а):Plugin path received via WM_COPYDATA must end with \ if it's not a file (32/64)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Нет, неправильно. >>addhaloka писал(а):если я конечно правильно понял, о чём речь.
+Flasher писал(а):С командой cd это не требуется.
Skif_off писал(а):Plugin path received via WM_COPYDATA must end with \ if it's not a file (32/64)
В NTFS-streams файлы читаются как папки, а потоки - как файлы.Flasher писал(а):В NTFS-streams потоки читаются как папки.
Попробуй сам:Flasher писал(а):Насчёт Registry не подтверждаю.
Код: Выделить всё
#NoTrayIcon
Opt('WinWaitDelay', 100)
Global Const $WM_COPYDATA = 0x004A
Local $hTC, $hWndPar, $sMem, $sMsg, $sTCPlugName, $i
$hTC = WinGetHandle('[CLASS:TTOTAL_CMD]')
AutoItWinSetTitle(@ScriptName)
$hWndPar = WinGetHandle(@ScriptName)
$sMem = ClipGet()
$sTCPlugName = _TCPlugSearch('registry.wfx', 'FileSystemPlugins')
$sMem = StringRegExpReplace($sMem, '^HKCR\\', 'HKEY_CLASSES_ROOT\\', 1)
$sMem = StringRegExpReplace($sMem, '^HKCC\\', 'HKEY_CURRENT_CONFIG\\', 1)
$sMem = StringRegExpReplace($sMem, '^HKCU\\', 'HKEY_CURRENT_USER\\', 1)
$sMem = StringRegExpReplace($sMem, '^HKLM\\', 'HKEY_LOCAL_MACHINE\\', 1)
$sMem = StringRegExpReplace($sMem, '^HKU\\', 'HKEY_USERS\\', 1)
$sMem = StringRegExpReplace($sMem, '^HKUS\\', 'HKEY_USERS\\', 1)
_TC_cd_command(__CheckANSItoUTF8('\\\' & $sTCPlugName & '\' & $sMem), '', 'ST')
Func _TCPlugSearch($name, $type)
Local $aTCPs
$aTCPs = IniReadSection(EnvGet('COMMANDER_INI'), $type)
For $i = 1 To $aTCPs[0][0]
If StringInStr($aTCPs[$i][1], $name) Then
If $type = 'FileSystemPlugins' Then
Return $aTCPs[$i][0]
Else
Return 1
EndIf
EndIf
Next
Return 0
EndFunc ;==>_TCPlugSearch
Func __CheckANSItoUTF8($sStr)
Local $sStrTemp, $BOM = Chr(239) & Chr(187) & Chr(191) ; \xEF \xBB \xBF
$sStrTemp = BinaryToString(StringToBinary($sStr, 1), 1)
If Not ($sStr == $sStrTemp) Then
$sStr = BinaryToString(StringToBinary($sStr, 4))
Return $BOM & $sStr
Else
Return $sStr
EndIf
EndFunc ;==>__CheckANSItoUTF8
Func _TC_cd_command($l, $r, $sFlag = "")
Local $sCommand = $l & @CR & $r & ChrW(0) & $sFlag
Local $pCDcom = DllStructCreate("char[" & StringLen($sCommand)+ 1 & "]")
Local $pCopyData = DllStructCreate("ulong_ptr;dword;ptr")
DllStructSetData($pCDcom, 1, $sCommand)
DllStructSetData($pCopyData, 1, Asc("C") + 256 * Asc("D"))
DllStructSetData($pCopyData, 2, DllStructGetSize($pCDcom))
DllStructSetData($pCopyData, 3, DllStructGetPtr($pCDcom))
DllCall("user32.dll", "int", "SendMessageW", "hwnd", $hTC, "int", $WM_COPYDATA, "wparam", $hWndPar, "lparam", DllStructGetPtr($pCopyData))
EndFunc ;==>_TC_cd_commandОдин фиг - это файловые потоки. Важно, что толку от правки никакой.Skif_off писал(а):В NTFS-streams файлы читаются как папки, а потоки - как файлы.
Зачем? Тут про TCFS2, а не AutoIt.Skif_off писал(а):Попробуй сам
Тут про WM_COPYDATA и пути fs-плагинов, попробуй прочитать ещё раз.Flasher писал(а):Зачем? Тут про TCFS2, а не AutoIt.
Flasher писал(а):Суть в том, что ты явно не указал, что твои тесты к топику отношения не имеют.
Т.к. все инишники пишутся вручную, можно добавить в свои какой-нибудь комментарий после окончания опций "крупного" инишника (и перед началом своих) в каждой секции и набросать скриптик, который будет синхронизировать начала секций до этого комментария с содержимым секций "крупного" инишника. В принципе, я тоже могу добавить какой-нибудь комментарий в конец каждой секции в "крупном" инишнике (но не вижу в этом особой необходимости).LonerD писал(а):При обновлении программки иногда изменяется и крупный инишник TCFS2.ini, приходится его сверять со своим, исправлять, изменять...
Пожелание. Наряду с TCFS2.ini держать в папке с программой ещё файлик TCFS2_user.ini, в который и вносятся все пользовательские изменения, и в случае наличия в нём каких-то секций и ключей - они будут иметь приоритет на TCFS2.ini
Похоже, это связано с этим багом.Skif_off писал(а):Для cd TCFS2 использует WM_COPYDATA, поломалось из-за изменений в ТС9, но изменений странных: по крайней мере с Registry WM_COPYDATA работает по старому. Где тут оффтоп? Появится MVV - прояснит (лениво искать тему на оффоруме, но там вроде про этот нюанс (баг?) ничего не было).