Показать полную графическую версию : [решено] Taskkill \fi
Здраствуйте , помогите советом при закрытии программы просмотра изображений и факсов через cmd, вот как я себе это представлял
taskkill /fi "windowtitle eq Имя.jpg - программа просмотра изображений и факсов"
В ответ получил
Информация: Задачи, отвечающие заданным критериям, отсутствуют.
Хотя при выполнении действия с txt файлом срабатывает.
в чём ошибка, поправте.
при выполнении действия с txt файлом срабатывает.
в чём ошибка »ошибки нет, TaskKill убивает процесс по имени окна, а не само окно... В случае же с просмотром картинки отдельного процесса не создаётся - окно открывается в процессе explorer.exe. Вариант решения задачи при помощи CMDOW (http://www.commandline.co.uk/cmdow/#about) (заголовок окна должен быть передан в WIN-кодировке):
@for /f "tokens=1-2,8*" %%a in ('cmdow /f') do @if "%%b"=="1" (if /i "%%c"=="explorer" (
if "%%d"=="Имя.jpg - Программа просмотра изображений и факсов" cmdow %%a /cls
))
Что-то у меня антивирус ругается на cmdow - SecurityRisk. Безопасно использование проги?
@for /f "tokens=1-2,8*" %%a in ('cmdow /f') do @if "%%b"=="1" (if /i "%%c"=="explorer" (
if "%%d"=="Имя.jpg - Программа просмотра изображений и факсов" cmdow %%a /cls
)) »
Я вот из этого сделал Batник, уложил в папку с программой, но что-то ни чего не закрывает,
Безопасно использование проги? »
А Вам amel27, дал ссылку на офсайт в своём посте
Вариант решения задачи при помощи CMDOW (http://www.commandline.co.uk/cmdow/#about) »
Если сомневаетесь - наберите в командной строке : cmdow /?
CMDOW [Version 1.4.3] Win32 Commandline Window Utility for NT4/2000/XP.
(C) Copyright 2001-2004 Ritchie Lawrence, http://www.commandline.co.uk.
CMDOW [window | /T] [/B] [/F] [/P]
CMDOW /TH | /TV | /MA | /CW | /UW | /AT | /FS | /WM
CMDOW window {[/ACT] [/INA] [/ENA] [/DIS] [/VIS] [/HID] [/MIN] [/MAX] [/RES]
[/TOP] [/NOT] [/REN caption] [/MOV left top] [/SIZ width height] [/CLS]
[/END]}
CMDOW /RUN [state] file [args]
window List specified window (if omitted, all windows are listed).
/T List windows only shown on the taskbar.
/B List windows using bare format (no heading information).
/F List windows showing full information (don't truncate any fields).
/P List windows showing position and size (left, top, width and height).
/TH Tile windows horizontally. /TV Tile windows vertically.
/MA Minimize all windows. /CW Cascade windows.
/UW Undo tile/minimize/cascade. /AT Intelligent [Alt]-[Tab]
/FS Switch to full screen mode. /WM Switch to window mode.
/ACT Activate specified window. /INA Inactivate specified window.
/ENA Enable specified window. /DIS Disable specified window.
/VIS Unhide specified window. /HID Hide specified window.
/MIN Minimize specified window. /MAX Maximize specified window.
/RES Restore specified window. /REN Rename specified window.
/TOP Make window always on top. /NOT Make window not always on top.
/MOV Move specified window. /SIZ Resize specified window.
/CLS Close specified window. /END Kill process linked to window.
/RUN Executes or opens specified file using associated application.
state Initial show state of window (/MIN, /MAX or /HID). Default is normal.
args Optional commandline arguments passed to launched application.
Specify a window by its caption (case insensitive) or handle in hex format.
The At symbol '@' may be used to refer to this window. For more help on any
parameter use CMDOW /? <parameter>. Eg CMDOW /? /RUN or CMDOW /? window.
SendMessage
29-01-2011, 13:40
Без утилит. На XP работает.
@echo off
set "FileName=file.jpg"
wmic process where "commandline like '%%%FileName%%%' and name='rundll32.exe'" call terminate >nul
Есть ограничение, оказывается. :(
Если открыть нужный файл, не закрывая программу просмотра после предыдущего файла, то не срабатывает.
@echo off
set "FileName=file.jpg"
wmic process where "commandline like '%%%FileName%%%' and name='rundll32.exe'" call terminate >nul »
что-то не срабатывает:
C:\Documents and Settings\----\Рабочий стол>set "FileName=saac.jpg"
C:\Documents and Settings\----\Рабочий стол>wmic process where "commandline lik
e '%saac.jpg%' and name='rundll32.exe'" call terminate 1>nul
C:\Documents and Settings\----\Рабочий стол>pause
Если открыть нужный файл, не закрывая программу просмотра после предыдущего файла, то не срабатывает. »
Т.е. она должна выгрузится из процесса?
cmdow /? »
Спасибо, работает.
Без утилит. На XP работает…»
У меня тоже не срабатывает на XP SP3, ибо, как писано выше (http://forum.oszone.net/post-1599629.html#post1599629), для «Программа просмотра изображений и факсов» отдельного процесса не порождается. Вызываю просмотр контекстным меню из Проводника — окно принадлежит ему, смотрю из Far Manager'а — окно принадлежит его процессу, для Total Commander — аналогично.
Опытным путём установил следующее:
Отдельный процесс «rundll32.exe» посредством вызова функции из библиотеки «shimgvw.dll» порождается в случае, если, например, отсутствует раздел:
[HKEY_CLASSES_ROOT\jpegfile\shell\open\DropTarget]
"Clsid"="{E84FDA7C-1D6A-45F6-B725-CB260C236066}"
Ниже привожу весь наличествующий у меня раздел «shell\open» по умолчанию:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\jpegfile\shell\open]
"MuiVerb"="@shimgvw.dll,-550"
[HKEY_CLASSES_ROOT\jpegfile\shell\open\command]
@="rundll32.exe C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_Fullscreen %1"
[HKEY_CLASSES_ROOT\jpegfile\shell\open\DropTarget]
"Clsid"="{E84FDA7C-1D6A-45F6-B725-CB260C236066}"
и раздел «CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}»:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}]
@="Shell Image Verbs"
[HKEY_CLASSES_ROOT\CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
69,00,6d,00,67,00,76,00,77,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"
[HKEY_CLASSES_ROOT\CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}\shellex]
[HKEY_CLASSES_ROOT\CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}\shellex\MayChangeDefaultMenu]
@=""
SendMessage
30-01-2011, 13:49
Ниже привожу весь наличествующий у меня раздел «shell\open» по умолчанию: »
и раздел «CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}»: »
Аналогично. Никаких различий нет.
У меня срабатывает. При открытии создается процесс rundll32.exe. И из контекстного меню.
upd. При попытке открыть через Проводник - отдельный процесс не создался. Из ТС и контекстного меню (попробовал в нескольких программах) - создается.
У меня срабатывает. При открытии создается процесс rundll32.exe. И из контекстного меню. »
При попытке открыть через Проводник - отдельный процесс не создался. »
похоже, эти два способа используют разные механизмы запуска
Verbs and File Associations (http://msdn.microsoft.com/en-us/library/bb776883(v=vs.85).aspx):
There are three ways that the Shell can invoke a verb.
- Through COM and IDropTarget, by using a DropTarget key. This is the preferred method for Microsoft Windows XP and later systems.
- As a command line call, as specified in a command key.
- Through Dynamic Data Exchange (DDE), by using a ddeexec key.
отдельного процесса не порождается »
одно другому не мешает, может быть создан синхронный процесс, связанный с потоком в другом процессе... мне сразу вспомнился вызов Verbs Explorer'а из AutoIT типа "свойства сети", которые активны только пока скрипт крутится в цикле и автоматически закрываются при завершении скрипта
Iska »
По вашим ответам можно дисертацию писать, мне всего то нужно чтоб закрыть окно и я нашёл нужные команды в nircmd и в предложенной cmdow. Всем спасибо. По углублению освоения cmd команд знаю куда обратится. СПАСИБО.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.