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 

Single Post  Topic: Распаковка mime, uue, b64 
Author Message
Total7zip



PostPosted: Tue Mar 22, 2011 15:21    Post subject: Reply with quote

почитал, попробовал разные ваши варианты и хочу предложить свой, с рядом улучшений

Code:

// File: DecodeFromClipboard.js
// Распаковывает mime, uue, b64 текст
// скопированный в буфер обмена в текущую папку
//
// Для работы нужен: Script Helper ActiveX for TC
// http://wincmd.ru/plugring/script_helper.html
//
// В этой версии для работы не нужны WCX плагины (MhtUnPack.wcx)
// Если объект TCSCRIPT.Helper не зарегистрирован, этот скрипт временно
// зарегистрирует его. см. ниже переменную TCWSHELP_PATH
// Корректно обрабатывается ситуация, если файл уже существует.
// Временный файл корректно удаляется, панель TC обновляется.
//
// (c) 2010, lev, Tol!k, Andrey_A, Volniy
// (c) 2011, Total7zip
// Обсуждение: http://forum.wincmd.ru/viewtopic.php?t=13531


//путь к Script Helper ActiveX for TC
var TCWSHELP_PATH = "%COMMANDER_PATH%\\Utils\\TC\\TCWSHelp\\TCWSHelp.exe";

var tcHelper = null;
var wshShell = null;
var bUnreg = false;

try
{
   tcHelper = WScript.CreateObject("TCSCRIPT.Helper");
}
catch(e)
{
    //если TCWSHelp.exe не зарегистрирован - регистрируем его
    wshShell = WScript.CreateObject("WScript.Shell");
    wshShell.Run(TCWSHELP_PATH + " /REGSERVER", 1, true);
    tcHelper = WScript.CreateObject("TCSCRIPT.Helper");
    bUnreg = true;
}

//создаем в текушей папке временный файл и пишем в него содержимое буфера обмена
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var tempFile = tcHelper.GetSrcPath () + "\\" + fso.GetTempName();
var f = fso.CreateTextFile(tempFile, true);
f.Write (tcHelper.GetTextFromClip ());
f.Close ();
f = null;

tcHelper.SetSrcPath    (tempFile);

//посылаем команду, без ожидания завершения, TC показывает диалог
tcHelper.SendCommand   ("cm_Decode", false);
//убираем путь в диалоге - нам надо декодировать в текущую папку
tcHelper.SendKeystroke ("{BKSP}"); 
tcHelper.SendKeystroke ("{Enter}"); //нажимаем ОК в диалоге

//удаляем временный файл, try нужен, чтоб дождаться пока TC завершит декодирование
while (true)
{
    try
    {
        WScript.Sleep (1000);
        fso.DeleteFile (tempFile);         
        break;
    }
    catch(e)
    {
    }
}

tcHelper.SendCommand ("cm_RereadSource", false);

//чистим, удаяем объекты.
fso = null;
tcHelper = null;
if (bUnreg)
{
    //если TCWSHelp.exe не был зарегистрирован - разрегистрируем его
    wshShell.Run(TCWSHELP_PATH + " /UNREGSERVER", 1, true);
}
wshShell = null;
WScript.Quit();

_________________
Total7zip - архиваторный+content+lister плагин, 0.8.5.2
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group