Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 78
Благодарности: 23

Профиль | Отправить PM | Цитировать


Цитата alpap:
OSArev я в программировании не силен, но есть такая мысль. Если как-то программно начинать так:
Выполняется команда "вырезать" потом уже создать папку, вставить в нее файлы и дать возможность выбрать имя папки. То есть, если ничего не выделено, то и скрипт не будет выполняться, а если выделен один объект или любое их количество то выполняется команда вырезать и далее. Не знаю можно ли так, просто к размышлению. »
Я уже работал в этом направлении(и скриптик написал), но есть пару недоработок.
1.Во время выполнения скрипта нельзя кликать мышкой, т.к. объекты переместятся в то место где кликнули мышкой.
2.При перемещении папка у меня остаётся открытой.
В каком направлении идти?
1-мысля:
Надо бы наверное найти способ отслеживать вновь созданную папку и ту же закрывать, но это не спасёт от случайного кликанья мышкой.
2-я мысля:
Отключать на время исполнения скрипта мышь(вроде бы где-то встречал).
3-я мысля:
Вырезать, как обычно, а из буфера перемещать уже по-другому, но вот каким образом?
Собственно скриптик:
Код: Выделить весь код
'Разрешаем запуск только одного экземпляра, при помощи создания временного файла c именем скрипта:
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists("C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt") Then
    WScript.Quit
End If
FSO.CreateTextFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"
'-----------------------------------------------------
'Создание папки:
Dim objFSO, objFolder, objShell, strDirectory
 strDirectory = InputBox("Введите название папки", "Перемещение объектов.") 
  If Len(strDirectory) = 0 Then

   FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"

  strDirectory = WScript.Quit
End If 

FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"

 On Error Resume Next
   Set objFSO = CreateObject("Scripting.FileSystemObject") 
    If objFSO.FolderExists(strDirectory) Then 
   Set objFolder = objFSO.GetFolder(strDirectory) 
    Else
   Set objFolder = objFSO.CreateFolder(strDirectory) 
  End If
'----------------------------------- 
'Узнаём путь к новой папке:
  on error resume next
  Folderspec = strDirectory
   Set fso = CreateObject( "Scripting.FileSystemObject" ) 
   Set folder = fso.GetFolder(folderSpec)
'------------------------------
' Используем "Вырезать" для перемещения объектов:
   Set WshShell = CreateObject("WScript.Shell")
       WshShell.SendKeys("^X")
'--------------------------
' Перемещаем объекты при помощи "Вставить":
folder = folder.Path & "\"    
   set shapp = createobject("shell.application")
   shapp.open(folder)
       WScript.Sleep 500
       WshShell.SendKeys("^V")
'------------------------
' Удаляем временные файлы:
FSO.DeleteFile "C:\Windows\OSA\Moving_to_folder\" & WScript.ScriptName & ".txt"
WScript.Quit
Извиняюсь, за недоработки. Может ,кто поможет подправить мои ошибки.

Кстати, насчёт:
Цитата alpap:
OSArev, а не получилось победить 18(20) объектов? »
натолкнулся, сегодня случайно вот на такую документацию по реестру:

"Как известно, при выделении более 15 файлов команды контекстного меню, такие как "Открыть/Печать/Редактировать" становятся недоступны.
Для отмены данного ограничения проделайте следующее:

1) Запустите редактор реестра ( Win+R -> regedit -> OK)
2) Откройте ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer
3) Создайте в ней параметр MultipleInvokePromptMinimum типа DWORD.
4) Установите значение данного параметра равным 16.

Для уменьшения количества файлов на которых действует ограничение применения команд, введите значение от 1 до 15.
При выделении файлов выше выбранного Вами значения команды в контекстном меню применяться не будут. При указании значения 0 произойдет полное отключение команд, включая команду "Открыть". "

Так, что рыть, при перемещении из контекстного, надо в другом направлении(для других команд то же самое). В каком?
Может кто и подскажет?

Отправлено: 22:08, 03-03-2011 | #15