Необычные функции
Модератор: motyara
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Откпывать файлы от другого имени
Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
Вообще-то этот пункт контекстного меню является системным и отображается не только в Проводнике, но и в Unreal Commander тоже. При желании можно попытаться зайти в каталог "System Volume Information" и в ответ на запрос согласиться зайти от имени другой учетной записи (программа будет запущена от имени другой учетной записи).Qwertiy писал(а):Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
С этим я не спорю. Пункт есть, но, как и в Проводнике, только для программ, т. е. exe-файлов. А я хочу не только для них, а для всех типов, особенно для msi.Max Diesel писал(а):Вообще-то этот пункт контекстного меню является системным и отображается не только в Проводнике, но и в Unreal Commander тоже. При желании можно попытаться зайти в каталог "System Volume Information" и в ответ на запрос согласиться зайти от имени другой учетной записи (программа будет запущена от имени другой учетной записи).Qwertiy писал(а):Для exe-файлов в Windows существует пункт контекстного меню "Запуск от имени...". Очень не хватает такой же возможности для других типов файлов, особенно msi. Нельзя ли добавить такую функцию?
PS: Если Вы предложете reg-файл, добавляющий соответствующий пункт (и, по возможности, не требующий прав администратора для интеграции в реестр), то я возражать не буду...
PS: запустить UC от другого имени - не проблема... Просто обычно не хочется производить кучу лишних действий только для того, чтобы открыть один файл от другого имени...
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
Такой вариант пока что в планах отсутствует. Лично у меня запускаются две копии Unreal Commander от разных учетных записей и соответственно я просто переключаюсь между ними.Qwertiy писал(а):PS: запустить UC от другого имени - не проблема... Просто обычно не хочется производить кучу лишних действий только для того, чтобы открыть один файл от другого имени...
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Держать специально запущенную копию ради запуска пары msi'шников в день? Не очень-то удобно...Max Diesel писал(а):Такой вариант пока что в планах отсутствует. Лично у меня запускаются две копии Unreal Commander от разных учетных записей и соответственно я просто переключаюсь между ними.
Уже написал нужную программу, но явно слишком запутанно:
Код: Выделить всё
Public Class Form1
Private [Step] As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Args As String = LTrim(Command$()) & " "
If Args.StartsWith("step=2") Then
Me.Text &= " - Шаг 2 - Собственно запуск"
[Step] = 2
TxtCmd.Text = Trim(Args.Substring(8))
TxtArgs.Text = ""
TxtUser.Enabled = False
TxtPass.Enabled = False
TxtDomain.Enabled = False
ChkAuto.Checked = False
ChkAuto.Enabled = False
If Args.Chars(6) = "a"c Then
ChkAuto.Checked = True
BtnOk_Click(sender, e)
End If
Else
Me.Text &= " - Шаг 1 - Ввод имени и пароля"
[Step] = 1
TxtCmd.Text = My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe"
If Args.StartsWith("step=1 ") Then
TxtArgs.Text = "step=2 " & Trim(Args.Substring(8))
Else
TxtArgs.Text = "step=2 " & Args
End If
TxtCmd.Enabled = False
TxtArgs.Enabled = False
ChkAuto.Checked = True
End If
End Sub
Private Sub ChkSilent_Changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChkAuto.Click, ChkAuto.CheckedChanged
If [Step] = 1 Then
If ChkAuto.Checked Then
If TxtArgs.Text.Length > 8 Then
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & "a " & TxtArgs.Text.Substring(8)
Else
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & "a "
End If
Else
If TxtArgs.Text.Length > 8 Then
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & " " & TxtArgs.Text.Substring(8)
Else
TxtArgs.Text = TxtArgs.Text.Substring(0, 6) & " "
End If
End If
End If
End Sub
Private Sub BtnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOk.Click
Dim Prc As New System.Diagnostics.Process
Try
With Prc.StartInfo
.FileName = Trim(TxtCmd.Text())
.Arguments = Trim(TxtArgs.Text)
If [Step] = 1 Then
.UserName = Trim(TxtUser.Text)
.Password = StringToSecureString(TxtPass.Text)
.Domain = Trim(TxtDomain.Text)
.UseShellExecute = False
Else
.UseShellExecute = True
End If
End With
Prc.Start()
Catch ex As Exception
If MsgBox("Невозможно запустить процесс." & vbCrLf & "Выйти?", MsgBoxStyle.YesNo Or MsgBoxStyle.Critical, "ОШИБКА") = MsgBoxResult.No Then
Exit Sub
End If
End Try
Me.Close()
End Sub
Private Sub BtnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click
Me.Close()
End Sub
Private Function StringToSecureString(ByVal Str As Char()) As System.Security.SecureString
Dim Res As New System.Security.SecureString
For Q As Integer = 0 To Str.Length - 1
Res.AppendChar(Str(Q))
Next Q
Return Res
End Function
End Class
1. Хотелось бы встроенную функцию... Надеюсь, она появится в планах - это очень полезная возможность!
2. Кто знает, как сделать по-человечески, пожалуйста напишите.
PS: Для использования из UC аргументы "%P%N" вместе с кавычками.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Заморозка списка
Пожалуйста, добавьте кнопку-флажок "Заморозить список", которая бы прекращала автообновление списка (для каждой вкладки свой флажок). И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
PS: можно сделать, чтобы выделение не снималось при переходе на другую вкладку этой же панели и возврате в исходную?
PS: можно сделать, чтобы выделение не снималось при переходе на другую вкладку этой же панели и возврате в исходную?
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
Такая кнопка есть в планах (под другим названием конечно же), возможно она будет скоро добавлена.Qwertiy писал(а):Пожалуйста, добавьте кнопку-флажок "Заморозить список", которая бы прекращала автообновление списка (для каждой вкладки свой флажок).
А вот этого в планах нет и смысл такой опции мне видится сомнительным...Qwertiy писал(а):И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
Это тоже есть в планах (как и сохранение во вкладке списка найденных файлов)...Qwertiy писал(а):PS: можно сделать, чтобы выделение не снималось при переходе на другую вкладку этой же панели и возврате в исходную?
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Смысл есть. Простейший вариант - если мне этот список ещё понадобится для каких-то целей (печать, удаление исходных файлов, если это был CD-диск и т. д.), или же я собираюсь вставить флешку повторно, или она вообще отключилась сама (бывает и такое).Max Diesel писал(а):А вот этого в планах нет и смысл такой опции мне видится сомнительным...Qwertiy писал(а):И ещё настройку "Замораживать список при исчезновении диска". Т. е., например, если открыта флешка, я её достаю, то UC, если этот флажок установлен, не переходит на другой путь, а активирует флажок "Заморозить список" для этой вкладки.
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
На мой взгляд причина недостаточно весомая, такая функция бы создала больше проблем чем удобств.Qwertiy писал(а):Смысл есть. Простейший вариант - если мне этот список ещё понадобится для каких-то целей (печать, удаление исходных файлов, если это был CD-диск и т. д.), или же я собираюсь вставить флешку повторно, или она вообще отключилась сама (бывает и такое).
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Отмена последнего действия
Пожалуйста, добавьте возможность отмены последнего переименования, перемещения, копирования и удаления в корзину. Под отменой я имею в виду обратное действие, возвращающее всё к исходному состоянию (если оно возможно).
PS: Заметьте, что такая возможность присутствует в Проводнике.
PS: Заметьте, что такая возможность присутствует в Проводнике.
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
Хм... мысль интересная, но у меня нет идей насчет того как восстановить файл из корзины (в смысле программно и в смысле конкретный файл, корзинное место жительства которого надо еще и каким-то образом узнать у системы при удалении).Qwertiy писал(а):Пожалуйста, добавьте возможность отмены последнего переименования, перемещения, копирования и удаления в корзину. Под отменой я имею в виду обратное действие, возвращающее всё к исходному состоянию (если оно возможно).
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Думаю, это должно помочь: Работа с корзиной в Delphi...Max Diesel писал(а):у меня нет идей насчет того как восстановить файл из корзины
-
- Автор программы
- Сообщения: 3432
- Зарегистрирован: Пт окт 12, 2007 3:26 pm
Судя по описанию функции на этой странице нет функции, которая позволяла бы удаляя файл в корзину узнать какое именно имя в корзине он получил... а без такой возможности восстановление если и удастся произвести, то лишь для последнего файла (а по умолчанию каталоги удаляются по файлам, а не целиком).Qwertiy писал(а):Думаю, это должно помочь: Работа с корзиной в Delphi...
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
-
- Охотник за багами
- Сообщения: 1199
- Зарегистрирован: Вс янв 31, 2010 12:12 am
Если есть лог удалённых файлов (а без него всё равно не обойтись), то достаточно сравнить исходные имена файлов в корзине с именами в этом списке. Для ускорения обработки можно оба списка отсортировать.Max Diesel писал(а):Судя по описанию функции на этой странице нет функции, которая позволяла бы удаляя файл в корзину узнать какое именно имя в корзине он получил... а без такой возможности восстановление если и удастся произвести, то лишь для последнего файла (а по умолчанию каталоги удаляются по файлам, а не целиком).