Invader писал(а):1. зная только имя файла с расширением, какую информацию можно получить обращаясь из vb.net к реестру.
а. Его (расположение, тип - расширение,размер, уровни доступа, атрибуты)
б. возможное их изменение?
Invader писал(а):2. как корректно, выгрузить-закрыть из уже запущенных трёх calc.exe, только запущенный второй?
Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("calc")
For Each p As Process In pProcess
p.Kill()
Next
End If
Qwertiy писал(а):Invader писал(а):1. зная только имя файла с расширением, какую информацию можно получить обращаясь из vb.net к реестру.
а. Его (расположение, тип - расширение,размер, уровни доступа, атрибуты)
б. возможное их изменение?
Всё перечисленное хранится не в реестре.
Invader писал(а):закрывал так
- Код: Выделить всё
Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("calc")
For Each p As Process In pProcess
p.Kill()
Next
End If
но закрывались все открытые!
Invader писал(а):Qwertiy писал(а):Invader писал(а):1. зная только имя файла с расширением, какую информацию можно получить обращаясь из vb.net к реестру.
а. Его (расположение, тип - расширение,размер, уровни доступа, атрибуты)
б. возможное их изменение?
Всё перечисленное хранится не в реестре.
простите а где?
Invader писал(а):а как обратиться к файловой системе?
скажем, мне нужен путь до блокнота - то есть я записываю в интпутбокс notepad.exe, а в текстбоксе отображаю значение путь.
Invader писал(а):Зачем мне это надо: хочу написать со своим интерфейсом, скорее 3d, свой проводник к файлам
Qwertiy писал(а):Открытие файла System.Diagnostics.Process.Start(FileName).
Dim shapka As String = "Калькулятор"
hWnd = FindWindowByCaption(0, shapka)
Invader писал(а):повторюсь, если равновесное название окна, такое как калькулятор, а открыто их три
как закрыть второй, а первый и третий оставить?
Dim pProcess() As Process = System.Diagnostics.Process.GetProcessesByName("calc")
'Заносим все процессы калькулятора в словарь, где ключ - время старта
Dim calcList As New Dictionary(Of Date, Process)
For Each p As Process In pProcess
calcList.Add(p.StartTime, p)
Next
'Если калькуляторов больше одного
If (calcList.Count > 1) Then
'Копируем ключи в массив для сортировки
Dim keyList(calcList.Keys.Count - 1) As Date
calcList.Keys.CopyTo(keyList, 0)
'Сортируем по времени запуска
Dim d As Date
For i As Integer = 0 To keyList.Length - 2
For j As Integer = i + 1 To keyList.Length - 1
If (keyList(j) < keyList(i)) Then
d = keyList(i)
keyList(i) = keyList(j)
keyList(j) = d
End If
Next
Next
'Уничтожаем тот который был запущен вторым
calcList(keyList(1)).Kill()
End If
Qwertiy писал(а):Только вот в вопросе не сказано, что второй по времени запуска
Invader писал(а):2. как корректно, выгрузить-закрыть из уже запущенных трёх calc.exe, только запущенный второй?
Module All
Public Sub Main()
Dim Prc As Process = Process.GetProcessesByName("calc").OrderBy(Function(P As Process) P.StartTime).Skip(1).FirstOrDefault()
If (Prc IsNot Nothing) Then Prc.CloseMainWindow()
End Sub
End Module
Qwertiy писал(а):Если нужен второй по времени, то это делается намного проще и красивее:
Joo писал(а):Для, не совсем нормального, вопроса, совсем ненормальный ответ )
Public Class Form1
Dim calc As Process
Public x(5) As Long
Dim i As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
calc = Process.Start("calc")
i = i + 1
x(i) = calc.Id
TextBox1.Text = TextBox1.Text + ("Стартанул CALC Id = " + x(i).ToString + Chr(13) + Chr(10))
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim aProcess As System.Diagnostics.Process
aProcess = System.Diagnostics.Process.GetProcessById(x(2))
aProcess.Kill()
End Sub
End Class
Invader писал(а):вот мой код, я спешил, но идею выразил
Invader писал(а):с вордом ни ваш код ни мой не работает
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27