Рейтинг:
2
Christian Graus
Открытый файл заблокирован. Попробуйте открыть его в операторе try/catch
Dave Kreskowiak
Я думаю, он хочет знать, работает он или нет. Последний раз, когда я проверял, файл .BAT можно записать во время работы.
MasterGamerFX
Правильно, как я могу это сделать
Я стараюсь ,но у меня ничего не получается
Вы можете привести мне пример
Dave Kreskowiak
Вы не можете и не добьетесь успеха, пока не начнете использовать отладчик и не начнете читать документацию по функциям (методам), которые вы пытаетесь использовать.
Прямо сейчас вы копируете код, надеясь, что все, что вы копируете в свой собственный код, будет работать. У вас нет понимания чего-либо вообще.
Christian Graus
Дейв говорит, что пакетный файл не блокируется, когда он работает. В таком случае, я думаю, вы выбрали правильный подход. Сначала я бы подтвердил, что могу получить длительный процесс с этим кодом по имени. Затем я запускал пакетный файл и смотрел, как называется этот процесс. Если это что-то общее, то вы обливаетесь из шланга. Если это имя файла, вы можете использовать его. Конечно, этот код будет очень хрупким в любом случае
MasterGamerFX
Хорошо ,но если я использую get process by id, то идентификатор пакетного файла может меняться каждый раз, не так ли ?
Christian Graus
Я предполагал, что вы можете получить его по имени
MasterGamerFX
Хорошо ,но как же ,я стараюсь ,как же позвольте мне примерить
Рейтинг:
1
MasterGamerFX
Не работает с пакетным файлом .bat
Christian Graus
Это API. Код будет работать. Вам просто нужно выяснить, как это называется. Я беспокоюсь, что это что-то общее. Вы уже проверили?
MasterGamerFX
Процесс.Метод GetProcessesByName (System.Диагностика)
Не работает я выписался
Не могли бы вы попробовать это для меня пожалуйста
MasterGamerFX
я проверяю его сейчас это обнаруживает cmd.exe но не название окна я стараюсь cmd.exe -тест оконного эквалайзера
Christian Graus
Хорошо, если он будет запущен как cmd.exe-чего я и ожидал, так это того, что ты не можешь делать то, что хочешь
MasterGamerFX
ладно после исследования вопроса я почти добился успеха
я использовал класс MainWindowTitle.Содержит(мое окно заголовка)
но условие не соответствует ибо его ретранслирует туре
еще не работает с синтексом
код:
Для каждого p Как процесса в процессе.GetProcesses
Если p.MainWindowTitle.Содержит("test23") затем
MsgBox("существует")
Выход Для
Конец, Если
Следующий
Christian Graus
Значит, у вас есть код, но он не работает? Имеет ли процесс свойство path к исполняемому файлу?
MasterGamerFX
Он возвращает true ,но когда я добавляю "else"
Чтобы проверить, является ли условие ложным
Он возвращает true (перед строкой else)
MasterGamerFX
Должен быть другой путь
Christian Graus
Конечно, если вы знаете магию
MasterGamerFX
Так что же я могу сделать ?
Christian Graus
Спросить Гарри Поттера? Заплатите кому-нибудь, чтобы он попробовал, если это выше ваших сил?
Рейтинг:
0
Dave Kreskowiak
"Имя процесса" не является заголовком окна. Это имя исполняемого файла, который работает без ".exe" в конце. Для любого пакетного файла это будет "cmd".
Теперь, чтобы найти окно CMD, в котором выполняется ваш пакетный файл, вы должны посмотреть MainWindowTitle каждого из ваших объектов процесса CMD, которые вы получили обратно из процесса.GetProcessesByName("cmd") и найдите текст командной строки, с помощью которой вы запустили пакетный файл.
Например, если ваш пакетный файл называется "Test.bat" и вы запустили его с командной строкой "test /someArgument 123", то свойство MainWindowTitle объекта Process для окна командной строки CMD будет иметь значение "C:\Windows\System32\cmd.exe - тест /некоторый аргумент 123".
MasterGamerFX
объясните мне лучше ,пожалуйста
я не понимаю
Dave Kreskowiak
Я не знаю, как это упростить. Вы получаете список процессов, используя GetProcessesByName("имя окна"). Вы не можете использовать заголовок окна в этом вызове. Вместо этого вы должны пройти" cmd".
После того, как у вас есть список процессов, вы должны проверить свойство MainWindowTitle каждого из них для того, что я описал.
Это сводится к чтению документации по классу Process и использованию отладчика. Вы могли бы легко догадаться об этом.
MasterGamerFX
Позвольте мне привести пример этого
Dave Kreskowiak
ФФС. ТЫ УЖЕ ЭТО ДЕЛАЕШЬ!! Просто измените "имя окна" на "cmd".