Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка запущенного exe-ка / 15 сообщений из 15, страница 1 из 1
02.06.2004, 12:51
    #32544527
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Подскажите, пожалуйста, как из приложения узнать, запущен тот или иной exe-ик в данный момент или нет?

Заранее благодарен за полезную информацию.
...
Рейтинг: 0 / 0
02.06.2004, 14:18
    #32544768
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Про exe- шник что известно? Имя, путь?
...
Рейтинг: 0 / 0
02.06.2004, 14:22
    #32544779
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Известно имя и путь.
...
Рейтинг: 0 / 0
02.06.2004, 14:41
    #32544828
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim path as String = "c:\temp\temp.exe"  ' Полный путь
Dim exeShnik as String = "temp.exe"  ' Ваш exeШник
Dim processName as String = GetFileNameWithoutExtension(exeShnik)
Dim myProcess as Process
for each myProcess in Process.GetProcessesByName(processName)
   If myProcess.MainModule.FileName = path then
        MsgBox("Есть такой")
        Exit For
   End If
next
...
Рейтинг: 0 / 0
02.06.2004, 14:41
    #32544830
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Да забыл сказать добавьте
Imports System.Diagnostics
...
Рейтинг: 0 / 0
02.06.2004, 15:58
    #32545024
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Ура!!! Работает! Большое спасибо!
Подскажите, пожалуйста, есть какое-нибудь событие, которое выполняется раньше, чем событие Load стартовой формы? Просто, хотелось бы выполнять проверку, о которой мы сейчас говорили, до открытия стартовой формы.
...
Рейтинг: 0 / 0
02.06.2004, 16:01
    #32545031
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
>Ура!!! Работает! Большое спасибо!
Подскажите, пожалуйста, есть какое-нибудь событие, которое выполняется раньше, чем событие Load стартовой формы? Просто, хотелось бы выполнять проверку, о которой мы сейчас говорили, до открытия стартовой формы.

New вашей формы.

Не пытаетесь ли вы предотвратить запуск второй копии вашего же собственного приложения?
...
Рейтинг: 0 / 0
02.06.2004, 16:15
    #32545079
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Да. Я это пытаюсь сделать. Уже сделал. А что?
...
Рейтинг: 0 / 0
02.06.2004, 17:46
    #32545297
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Боюсь что это мнение дилетанта (без обид)
Можешь глянуть на форуме я задавал вопрос по данной теме и получил нормальный ответ /topic/84553
Люди кто следит за форумом подтвердят мысль, о том, что не всё так просто
...
Рейтинг: 0 / 0
02.06.2004, 19:28
    #32545470
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
В простом случае когда не надо никого поднимать а достаточно например просто написать что экземпляр уже запущен:

Вариант когда по барабану откуда программу запустили, тоесть идентификация по ProcessName:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim currentProcess As Diagnostics.Process = Diagnostics.Process.GetCurrentProcess
Dim moduleName As String = currentProcess.MainModule.ModuleName
Dim processName As String = System.IO.Path.GetFileNameWithoutExtension(moduleName)

Dim myProcess As Process
If Process.GetProcessesByName(processName).Length >  1  Then
    MsgBox("А я уже запущена")
    Application.Exit()
End If

Более строгий вариант проверяем еще и путь :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim currentProcess As Diagnostics.Process = Diagnostics.Process.GetCurrentProcess
Dim moduleName As String = currentProcess.MainModule.ModuleName
Dim path As String = Diagnostics.Process.GetCurrentProcess.MainModule.FileName
Dim processName As String = System.IO.Path.GetFileNameWithoutExtension(moduleName)

Dim myProcess As Process
For Each myProcess In Process.GetProcessesByName(processName)
    If myProcess.MainModule.FileName = path Then
        If myProcess.Id <> currentProcess.Id Then
            MsgBox("А я уже запущена")
            Application.Exit()
        End If
    End If
Next
...
Рейтинг: 0 / 0
02.06.2004, 20:27
    #32545516
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
По моему, там где я давал ссылку всё про это написано (даже более того...)
1. Кстати, зачем мне просто знать что моё приложение уже запущено
Пример: сидит юзер и тупо счёлкает по файлу запуска не видя что приложение висит в таскбаре или заслонено другим окном... или читает месседж о том что он дико глуп и запустил приложение второй раз...??
2. Постоянно писать код в приложении проверяющий запущено приложение или нет??
Создаём dll c прекрасным кодом (автор "хочу всё знать") и подключаем к нашему приложению... Окно приложения и поднимается из таскбара и появляется поверх окон (нипонимаю, чем плохо?)
P.S. Хотя, наверное - ДЕЛО ВКУСА
...
Рейтинг: 0 / 0
03.06.2004, 09:41
    #32545883
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
>По моему, там где я давал ссылку всё про это написано (даже более того...)
Да там, даже более того...

Но первоначально задача стояла:
>Подскажите, пожалуйста, как из приложения узнать, запущен тот или иной exe-ик в данный момент или нет

Я дал пример где задаются вручную путь и имя, таким образом проверить любой другой процесс запущен он или нет.

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

>Постоянно писать код в приложении проверяющий запущено приложение или нет?? Создаём dll c прекрасным кодом (автор "хочу всё знать") и подключаем к нашему приложению... Окно приложения и поднимается из таскбара и появляется поверх окон (нипонимаю, чем плохо?)

В этом нет ничего плохого. Но это не критичная вещь в приложении чтобы можно было на этом сильно заострять внимания. Приведенный мной способ и способы из вашей ссылки с простым информированием - работают.
А вот с подъемом приложения из taskbar надо еще проверить. Мне интересно
как приложение поднимется, если пользователь использует виртуальные столы (nView, AltDesk and etc.) и другая копия приложение находится на другом виртуальном столе.

Скажу про себя я чаще всего позволяю открывать любое количество копий одного приложения. Память не жалею :-)))
...
Рейтинг: 0 / 0
03.06.2004, 10:24
    #32545960
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Никаких претензий о правильности ответов я не заявлял
Все ответы корректны и правильны
Выяснилось что автору вопроса было необходимо запретить запускать вторую копию приложения и я дал ему ссылку на интересующую его тему (тема то уже обсуждалась)

>А вот с подъемом приложения из taskbar надо еще проверить.

Из таскбар поднимает на ура (проверено)

>Мне интересно как приложение поднимется, если пользователь использует виртуальные столы (nView, AltDesk and etc.) и другая копия приложение находится на другом виртуальном столе.

Если не срабатывает - давайте попробуем доработать... "хочу всё знать" не заявлял "авторских прав"... Я думаю от этого все выйграют

>Скажу про себя я чаще всего позволяю открывать любое количество копий одного приложения. Память не жалею :-)))

ПОВТОРЮСЬ: Наверное - ДЕЛО ВКУСА
...
Рейтинг: 0 / 0
03.06.2004, 10:40
    #32546013
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
>Если не срабатывает - давайте попробуем доработать... "хочу всё знать" не заявлял "авторских прав"... Я думаю от этого все выйграют

ИМХО у меня предположение что работать не будет, ну просто фокус ты не сможешь перевести на другой виртуальный стол. Может быть можно как-нибудь выкрутиться под nView, но у AltDesk другой механизм. У третьей программы еще по другому и т.д.

Думаю действия должны быть примерно такие:
Как либо проверить можно ли перевести фокус на свое приложение, если нет то выдавать сообщение. Пусть пользователь тогда сам ищет программу на своих виртуальных столах.

Все это только мои предположения, поэтому замечания принимаются :-)
...
Рейтинг: 0 / 0
03.06.2004, 10:56
    #32546063
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка запущенного exe-ка
Кстати, если внимательно прочитать код "хочу всё знать" и всю тему
"запрет запуска второй копии приложения", то видно что определение имени прцесса и его ID - это всего лишь средство для достижения цели
ОСНОВА - Mutex
Чёрт, не смогу сейчас дать точное определение, (тока после работы, когда доберусь до книг) Но из определения будет понятно почему именно он берётся за основу (mutex в данном случае очень важен)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проверка запущенного exe-ка / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]