Показать полную графическую версию : [решено] Поиск по названию открытого окна.
Мне нужно что-бы при нахождении названия окна, закрывалась другая программа.
Вот сделал заготовку,но чёт не работает(
@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%
О каком именно:
File manager 2.0 »
идёт речь?
О каком именно:
Цитата lecbit:
File manager 2.0 »
идёт речь? »
Это не важно Skype,file manager тут может стоять любая программа,мне главное суть понять.Она в том что-бы ожидалось открытие одной программы а определялась это по заголовку окна и далее закрывало другую программу.
@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 для организации паузы.
Для старых ОС вместо timeout.exe используйте ping.exe для организации паузы. »
Я тут ещё вспомнил что у меня может быть пару "калькуляторов",можно ли это сделать для нескольких программ сразу?
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)
Например, AutoIt. »
Да,думаю так и сделаю,Спасибо!
Iska
Как же прекрасно что вы мне подсказали AutoIT
Но у меня появилась новая идея и я не знаю как её реализовать.Теперь мне нужно что-бы можно было находить сразу по заголовку окна и названию процесса.Попытался закоректировать строчки
WinWait("[REGEXPTITLE:(?:" & _ArrayToString($aWindowTitles) & ")]")
ProcessWait ( "iexplore.exe" )
ProcessClose($sProcessName)
Но тогда закрывает только по процессу.
Теперь мне нужно что-бы можно было находить сразу по заголовку окна и названию процесса. »
Пример приведите.
Пример приведите. »
Ну всё также только с добавлением процесса
#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)
lecbit, Вы меня не понимаете. Меня не интересует код. Совсем. Меня интересует пример заголовка окна и названия процесса.
Например: "Если ((окно имеет частичный заголовок «Безымянный» или «Новый») и имя процесса «winword.exe») или (окно имеет частичный заголовок «Мой розовый пони» и (имя процесса «iexplore.exe» или имя процесса «chrome.exe» или имя процесса «firefox.exe»)), то надо сделать то-то и то-то.
Iska, Опишу что нужно сделать.Если появляется процесс server.exe либо какой-то из перечисленных заголовков окна(BD,1C,word) то нужно закрыть процесс Imn.exe
#include <Array.au3>
AutoItSetOption("MustDeclareVars", 1)
AutoItSetOption("WinTitleMatchMode", 2)
Local $bFound = False
Local $sProcessName4Close = "server.exe"
Local $sProcessName4Exists = "Imn.exe"
Local $aWindowTitles4Exists[] = ["BD", "1C", "word"]
AdlibRegister("Check", 1000)
Do
Sleep(1000)
Until $bFound
ProcessClose($sProcessName4Close)
Exit(0)
Func Check()
If WinExists("[REGEXPTITLE:(?i:" & _ArrayToString($aWindowTitles4Exists) & ")]", "") Or ProcessExists($sProcessName4Exists) Then
$bFound = True
AdlibUnRegister("Check")
EndIf
EndFunc
Только не удивляйтесь, что с подобными заголовками будет куча лишних срабатываний.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.