none
Запрос свойств другого приложения. RRS feed

  • Общие обсуждения

  • Даже не знаю,куда написать вопрос.

    Но суть вот в чём.

    Волею судеб пришлось работать со сторонним программным обеспечением. MetaTerminal4. 
    Задача состоит в том,чтобы организовать работу многих пользователей. У каждого свой терминал.

    Я вот сейчас пишу небольшую программку,которая будет брать из базы данных пользователя и путь к его терминалу(к экзешнику,который его запускает), запускать терминал и делать ряд операций в папках терминала(ну докладывать пару своих библиотек,точнее советников).

    В числе прочего мне нужно положить пару файлов в папку,где работает терминал. Пример пути:
    C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\6A8058911C98E1D14B8F4592B28ED9C5

    Как видно,последняя папка названа так,что её имя, мягко говоря, сложно угадать. Проблема усложняется тем,что терминалов на сервере крутится штук 20 и будуту ещё. То есть искать в Roaming папку с именем MetaQuotes не кактит.
    В итоге я не знаю,куда мне кидать свои файлы. 

    Вот я и хотел узнать,есть ли способ взять экзешник,которым запускается терминал и запросить его рабочий каталог. Или может можно как обратиться через внутренние функции Windows к списку приложений,которые установлены в системе и найти этот путь там.

    в общем любые мысли будут полезны)

    30 июля 2014 г. 3:10

Все ответы

  • Можешь поискать в System.IO 

    В качестве примера привожу sub, проверяющий запуск второго экземпляра программы. Обращение идет к системным процессам на данном ПК

    Imports System.IO
    
     Private Sub OneInstanceTest()
            'проверка запуска второго экземпляра программы
            Dim Proc() As Process
            'Определение полного имени текущего процесса.
            Dim ModuleName, ProcName As String
            ModuleName = Process.GetCurrentProcess.MainModule.ModuleName
            ProcName = Path.GetFileNameWithoutExtension(ModuleName)
            'Нахождение всех процессов с данный именем. 
            Proc = Process.GetProcessesByName(ProcName)
            If Proc.Length > 1 Then
                'Данное имя имеют несколько процессов, поэтому текуищий экземпляр следует завершить.
                MsgBox("Данная программа уже запущена!")
                Me.Close()
                Exit Sub
            End If
     End Sub

    9 сентября 2014 г. 14:04