Отключение и подключение USB Flash-накопителей
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  :| |:
Total Commander -> Автоматизация Total Commander

#121:  Author: LonerDLocation: Донецк PostPosted: Thu Oct 10, 2013 05:05
    —
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, я такое извлекать ни хАчу и ни буду!".

#122:  Author: LonerDLocation: Донецк PostPosted: Fri Oct 18, 2013 00:49
    —
Похоже мой вопрос не имеет ответа.
Погуглил, в том числе и по сайту Майкрософта - вопрос несколько раз поднимался, но решения так и не было предложено. Sad

#123:  Author: FlasherLocation: Москва PostPosted: Sat Oct 19, 2013 16:46
    —
LonerD
Когда прочитал, первая мысль - это не диалог, а всплывающее меню. Какие ты знаешь вспл. меню, которые вызываются нативной комстрокой? Я таких не знаю.
Поэтому логичным вариантом было обратиться на скриптофорумы AutoIt/AHK. Я видел вариации по теме работы с ОУ. Подразумеваю, что решение где-то имеет место быть.

#124:  Author: ApceHLocation: Димитровград PostPosted: Fri Nov 01, 2013 00:12
    —
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: в панелях, где открыта флешка, поэтому извлечение обычно мгновенное.

#125:  Author: FlasherLocation: Москва PostPosted: Sat Nov 02, 2013 03:22
    —
ApceH
Несколько неуместный пример. Во-первых, RemoveDrive (о котором LonerD, разумеется, прекрасно знает) тут не раз обсуждалась, а во-вторых, меню выбора на то и нужно, чтобы выбирать определённое устройство для отключения, к тому же есть всплывающие окна результатов без всяких консолей.
Привязка к ТС в скрипте - явное излишество. Я бы, конечно, такой ерундой скрипты не нагружал, коль они и так в папке ТС и понятно, откуда будут запускаться. Кстати, зачем там задержка тоже неясно.

#126:  Author: angry_dogLocation: Питер PostPosted: Mon Mar 10, 2014 13:13
    —
TViP wrote:
Немного переделал скрипт от Skole под RemoveDrive v2.1
По сравнению с другими утилитами для безопасного извлечения у этой большое преимущество в том что она может показывать какой процесс в данный момент блокирует USB устройство...

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

Подскажите, что исправить?

#127:  Author: FlasherLocation: Москва PostPosted: Mon Mar 10, 2014 13:47
    —
angry_dog
Читаем нижнюю часть памятки.

#128:  Author: angry_dogLocation: Питер PostPosted: Mon Mar 10, 2014 13:59
    —
Flasher, прочитал все. Путь исправил на свой.
Ошибка на эту строку указывает
Code:
      WSH.Run Exe & objDisk.PNPDeviceID & " -i -h -l -b -w:2000" 

На седьмой символ, а это пробел.

#129:  Author: FlasherLocation: Москва PostPosted: Mon Mar 10, 2014 14:05
    —
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

#130:  Author: angry_dogLocation: Питер PostPosted: Mon Mar 10, 2014 19:04
    —
Извиняюсь, сначала не понял что нужно. Я не указал скрипт, про который спрашиваю. Вот этот - http://forum.wincmd.ru/viewpost.php?p=78370
Спасибо Вам, Flasher
Скопировал Ваш код, сохранил с расширением VBS, запускаю, ошибка. Что я делаю не так? Прошу простить меня за несообразительность.

#131:  Author: FlasherLocation: Москва PostPosted: Mon Mar 10, 2014 20:22
    —
Исходный пост, надо полагать, этот, а не последующий.
angry_dog wrote:
запускаю, ошибка
Неужели не бросается в глаза кусок с формой "Путь к утилите RemoveDrive"? Логично, что путь должен соответствовать реальному расположению программы.

#132:  Author: angry_dogLocation: Питер PostPosted: Mon Mar 10, 2014 22:42
    —
Flasher wrote:
Неужели не бросается в глаза кусок с формой "Путь к утилите RemoveDrive"

Спасибо Вам, Flasher за помощь и терпение. Забыл поставить
Code:
"""
в конце пути. Все получилось! Я люблю этот форум!



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  :| |:
Page 9 of 9

Powered by phpBB © 2001, 2005 phpBB Group