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 

Отключение и подключение USB Flash-накопителей
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
LonerD



Joined: 04 Jan 2011
Posts: 1093
Location: Донецк

Post (Separately) Posted: Thu Oct 10, 2013 05:05    Post subject: Reply with quote

D1P wrote:

Кнопка, вызывающая диалог отключения USB Flash-накопителей и других подобных устройств.

Code:
TOTALCMD#BAR#DATA
RunDll32.exe
shell32.dll,Control_RunDLL hotplug.dll
hotplug.dll
Извлечение флеш-накопителя


-1


Позволяет избежать щёлканья по иконке в трее


А каким образом можно вызвать тот диалог, который отображается при щёлканье по иконке в трее или аналогичный ему по функциональности родной windows-диалог?
Считал, что приведённое решение эквивалентно клику по иконке в трее, оказалось, что это совсем не так. Если через трей устройство (USB-док-станция HDD) извлекается без вопросов, то через диалог, вызванный указанной кнопкой, - ни-ни - "devise is not removable, я такое извлекать ни хАчу и ни буду!".
_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair eternal pre-α (9.22a x32+x64) | AkelPad Lair (4.9.9 x86) | Cent Browser Lair
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1093
Location: Донецк

Post (Separately) Posted: Fri Oct 18, 2013 00:49    Post subject: Reply with quote

Похоже мой вопрос не имеет ответа.
Погуглил, в том числе и по сайту Майкрософта - вопрос несколько раз поднимался, но решения так и не было предложено. Sad
_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair eternal pre-α (9.22a x32+x64) | AkelPad Lair (4.9.9 x86) | Cent Browser Lair
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Oct 19, 2013 16:46    Post subject: Reply with quote

LonerD
Когда прочитал, первая мысль - это не диалог, а всплывающее меню. Какие ты знаешь вспл. меню, которые вызываются нативной комстрокой? Я таких не знаю.
Поэтому логичным вариантом было обратиться на скриптофорумы AutoIt/AHK. Я видел вариации по теме работы с ОУ. Подразумеваю, что решение где-то имеет место быть.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ApceH



Joined: 08 Apr 2011
Posts: 316
Location: Димитровград

Post (Separately) Posted: Fri Nov 01, 2013 00:12    Post subject: Reply with quote

LonerD
Тот диалог, по моему, ещё менее удобно использовать, кликать больше придётся.
Я использую прогу RemoveDrive (http://www.uwe-sieber.de/drivetools_e.html) и к ней вот такой скриптик:
Code:
var ws = WScript.CreateObject("WScript.Shell");
if (WScript.Arguments.Count() < 2 || WScript.Arguments(0).substring(1, 2) != ':') {
 ws.Popup("Скрипт предназначен для запуска из Total Commander!\n\nСкрипт ожидает 2 параметра:\n• путь в текущей панели (можно использовать %P)\n• путь в противоположной панели.",0,"Неправильное использование",16);
 WScript.Quit(1);
}
WScript.Sleep(100);
var SourcePath = WScript.Arguments(0);
var TargetPath = WScript.Arguments(1);
if (TargetPath.substring(0,1) == SourcePath.substring(0,1)) TargetPath = "C:\\";
ws.Run("\"" + ws.ExpandEnvironmentStrings("%COMMANDER_EXE%") + "\" /O /S /L=C:\\ /R=\"" + TargetPath + "\"", 7, true);
ws.Run("\"" + ws.ExpandEnvironmentStrings("%COMMANDER_PATH%") + "\\ADDONS\\RemoveDrive.exe\" " + SourcePath.substring(0, 2)+" -l -e -b", 0, false);

Ну и на кнопке параметры:
Code:
"%P" "%T"

Отлично извлекает и флешки, и USB-HDD, и даже выдвигает CD-ROM. К тому же скрипт предварительно переключается на C: в панелях, где открыта флешка, поэтому извлечение обычно мгновенное.
_________________
kIT Programs PowerPack, kIT Universal Presets | Есть только одна истинная вера: чёрная магия...
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Nov 02, 2013 03:22    Post subject: Reply with quote

ApceH
Несколько неуместный пример. Во-первых, RemoveDrive (о котором LonerD, разумеется, прекрасно знает) тут не раз обсуждалась, а во-вторых, меню выбора на то и нужно, чтобы выбирать определённое устройство для отключения, к тому же есть всплывающие окна результатов без всяких консолей.
Привязка к ТС в скрипте - явное излишество. Я бы, конечно, такой ерундой скрипты не нагружал, коль они и так в папке ТС и понятно, откуда будут запускаться. Кстати, зачем там задержка тоже неясно.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
angry_dog



Joined: 21 Nov 2009
Posts: 141
Location: Питер

Post (Separately) Posted: Mon Mar 10, 2014 13:13    Post subject: Reply with quote

TViP wrote:
Немного переделал скрипт от Skole под RemoveDrive v2.1
По сравнению с другими утилитами для безопасного извлечения у этой большое преимущество в том что она может показывать какой процесс в данный момент блокирует USB устройство...

После запуска окошко с предложением отключить флешку, а потом ошибка
Code:
Windows Script Host
---------------------------
Сценарий:   C:\Program Files\Total Commander\REMOVEFLASH\RemoveDrive\скрипт.vbs
Строка:   13
Символ:   7
Ошибка:   Не удается найти указанный файл.
Код:   80070002
Источник:    (null)

Подскажите, что исправить?
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Mar 10, 2014 13:47    Post subject: Reply with quote

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



Joined: 21 Nov 2009
Posts: 141
Location: Питер

Post (Separately) Posted: Mon Mar 10, 2014 13:59    Post subject: Reply with quote

Flasher, прочитал все. Путь исправил на свой.
Ошибка на эту строку указывает
Code:
      WSH.Run Exe & objDisk.PNPDeviceID & " -i -h -l -b -w:2000" 

На седьмой символ, а это пробел.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Mar 10, 2014 14:05    Post subject: Reply with quote

angry_dog
Прочесть - хорошо, а сделать как написано?
В частности:
Quote:
1) Укажите в новом сообщении на это автору скрипта. Укажите ссылку на нужный пост, если скриптов в топике приведено более одного.


В общем, пока в исходный пост добавляется ссылка на скрипт, привожу редакцию:
Code:
' Отключить запоминающие USB-устройства

'================ Путь к утилите RemoveDrive ================
RD = """%COMMANDER_PATH%\Utils\RemoveDrive\RemoveDrive.exe"""
'============================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
For Each Disk In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")._
ExecQuery("SELECT Caption, PNPDeviceID FROM Win32_DiskDrive WHERE InterfaceType = 'USB' AND Partitions = 1")
  If MsgBox("Отключить " & Disk.Caption & " ?", 36, Space(20) & "Безопасное извлечение") = 6 Then _
  WSH.Run RD & " " & Disk.PNPDeviceID & " -i -h -l -b -w:2000", 2, True
Next : Set WSH = Nothing : WScript.Quit

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



Joined: 21 Nov 2009
Posts: 141
Location: Питер

Post (Separately) Posted: Mon Mar 10, 2014 19:04    Post subject: Reply with quote

Извиняюсь, сначала не понял что нужно. Я не указал скрипт, про который спрашиваю. Вот этот - http://forum.wincmd.ru/viewpost.php?p=78370
Спасибо Вам, Flasher
Скопировал Ваш код, сохранил с расширением VBS, запускаю, ошибка. Что я делаю не так? Прошу простить меня за несообразительность.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Mar 10, 2014 20:22    Post subject: Reply with quote

Исходный пост, надо полагать, этот, а не последующий.
angry_dog wrote:
запускаю, ошибка
Неужели не бросается в глаза кусок с формой "Путь к утилите RemoveDrive"? Логично, что путь должен соответствовать реальному расположению программы.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
angry_dog



Joined: 21 Nov 2009
Posts: 141
Location: Питер

Post (Separately) Posted: Mon Mar 10, 2014 22:42    Post subject: Reply with quote

Flasher wrote:
Неужели не бросается в глаза кусок с формой "Путь к утилите RemoveDrive"

Спасибо Вам, Flasher за помощь и терпение. Забыл поставить
Code:
"""
в конце пути. Все получилось! Я люблю этот форум!
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 Previous  1, 2, 3, 4, 5, 6, 7, 8, 9
Page 9 of 9

 
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