Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск по названию открытого окна.

Ответить
Настройки темы
CMD/BAT - [решено] Поиск по названию открытого окна.

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Мне нужно что-бы при нахождении названия окна, закрывалась другая программа.
Вот сделал заготовку,но чёт не работает(
Код: Выделить весь код
@echo off

set process1=skype.exe
set process2=File manager 2.0

:st
tasklist /FI "windowtitle eq %process2%" | find /I "%process2%"
If %errorlevel% NEQ 0 goto :st
taskkill /f /im %process1%

Отправлено: 20:38, 28-03-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


О каком именно:
Цитата lecbit:
File manager 2.0 »
идёт речь?

Отправлено: 21:30, 28-03-2017 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
О каком именно:
Цитата lecbit:
File manager 2.0 »
идёт речь? »
Это не важно Skype,file manager тут может стоять любая программа,мне главное суть понять.Она в том что-бы ожидалось открытие одной программы а определялась это по заголовку окна и далее закрывало другую программу.

Отправлено: 21:51, 28-03-2017 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sProcessName=notepad.exe
set sWindowTitle=Калькулятор

title Waiting for window [%sWindowTitle%]...

:Repeat
	>nul timeout.exe /t 1
	2>nul tasklist.exe /fi "windowtitle eq %sWindowTitle%" /v | find.exe /i "%sWindowTitle%" || goto :Repeat

2>nul taskkill.exe /fi "imagename eq %sProcessName%" /f

endlocal
exit /b 0

Для старых ОС вместо timeout.exe используйте ping.exe для организации паузы.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:10, 28-03-2017 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Для старых ОС вместо timeout.exe используйте ping.exe для организации паузы. »
Я тут ещё вспомнил что у меня может быть пару "калькуляторов",можно ли это сделать для нескольких программ сразу?

Отправлено: 22:28, 28-03-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


lecbit, а какая разница сколько калькуляторов, если пакетный файл сработает на первом же. Или Вы имеете в виду разные заголовки окна?

Можно, но лучше перейти к средствам, которые для того непосредственно предназначены. Например, AutoIt. Там и возможностей по работе с окнами на пару порядков больше. Например:
Скрытый текст
Код: Выделить весь код
#include <Array.au3>

AutoItSetOption("MustDeclareVars", 1)
AutoItSetOption("WinTitleMatchMode", 2)

Local $sProcessName = "notepad.exe"
Local $aWindowTitles[] = ["Калькулятор", "Таблица символов", "Paint", "Microsoft Word"]


WinWait("[REGEXPTITLE:(?:" & _ArrayToString($aWindowTitles) & ")]")
ProcessClose($sProcessName)

Exit(0)

Последний раз редактировалось Iska, 28-03-2017 в 23:45. Причина: Добавлен пропущенный предлог.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:12, 28-03-2017 | #6


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Например, AutoIt. »
Да,думаю так и сделаю,Спасибо!

Отправлено: 23:31, 28-03-2017 | #7


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska
Как же прекрасно что вы мне подсказали AutoIT
Но у меня появилась новая идея и я не знаю как её реализовать.Теперь мне нужно что-бы можно было находить сразу по заголовку окна и названию процесса.Попытался закоректировать строчки
Код: Выделить весь код
WinWait("[REGEXPTITLE:(?:" & _ArrayToString($aWindowTitles) & ")]")
ProcessWait ( "iexplore.exe" )
ProcessClose($sProcessName)
Но тогда закрывает только по процессу.

Последний раз редактировалось lecbit, 02-04-2017 в 20:16.


Отправлено: 17:14, 02-04-2017 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата lecbit:
Теперь мне нужно что-бы можно было находить сразу по заголовку окна и названию процесса. »
Пример приведите.

Отправлено: 01:20, 03-04-2017 | #9


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Пример приведите. »
Ну всё также только с добавлением процесса
Скрытый текст
#include <Array.au3>

AutoItSetOption("MustDeclareVars", 1)
AutoItSetOption("WinTitleMatchMode", 2)

Local $sProcessName = "notepad.exe"
Local $aWindowTitles[] = ["Калькулятор", "Таблица символов", "Paint", "Microsoft Word"]


WinWait("[REGEXPTITLE?:" & _ArrayToString($aWindowTitles) & ")]")
ProcessWait ( "iexplore.exe" )
ProcessClose($sProcessName)

Exit(0)

Отправлено: 08:02, 03-04-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск по названию открытого окна.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] переименование директории по названию файла в ней shmel_sv@vk Скриптовые языки администрирования Windows 4 23-03-2015 21:25
CMD/BAT - Проверка по названию файлов с расширением dbf FantomasAnand Скриптовые языки администрирования Windows 7 05-06-2014 06:58
Интерфейс - [решено] пропадает активность открытого окна при наведении курсора на панель управления Vertumn Microsoft Windows 2000/XP 2 30-09-2010 16:29
Оработка открытого окна 11943499 AutoIt 8 21-07-2009 01:33
.NET - [решено] Переключение между MDI окнами и выбор открытого окна в приложении (C#) Delirium Программирование и базы данных 1 15-12-2008 08:52




 
Переход