Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Taskkill \fi (http://forum.oszone.net/showthread.php?t=197946)

Flooper 28-01-2011 23:16 1599524

Taskkill \fi
 
Здраствуйте , помогите советом при закрытии программы просмотра изображений и факсов через cmd, вот как я себе это представлял
taskkill /fi "windowtitle eq Имя.jpg - программа просмотра изображений и факсов"
В ответ получил
Информация: Задачи, отвечающие заданным критериям, отсутствуют.
Хотя при выполнении действия с txt файлом срабатывает.
в чём ошибка, поправте.

amel27 29-01-2011 06:22 1599629

Цитата:

Цитата Flooper
при выполнении действия с txt файлом срабатывает.
в чём ошибка »

ошибки нет, TaskKill убивает процесс по имени окна, а не само окно... В случае же с просмотром картинки отдельного процесса не создаётся - окно открывается в процессе explorer.exe. Вариант решения задачи при помощи CMDOW (заголовок окна должен быть передан в 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
))


Flooper 29-01-2011 09:00 1599644

Что-то у меня антивирус ругается на cmdow - SecurityRisk. Безопасно использование проги?

Flooper 29-01-2011 09:20 1599651

Цитата:

Цитата amel27
@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ник, уложил в папку с программой, но что-то ни чего не закрывает,

shao 29-01-2011 09:20 1599653

Цитата:

Цитата Flooper
Безопасно использование проги? »

А Вам amel27, дал ссылку на офсайт в своём посте
Цитата:

Цитата amel27
Вариант решения задачи при помощи CMDOW »

Если сомневаетесь - наберите в командной строке : 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 1599791

Без утилит. На XP работает.
Код:

@echo off
set "FileName=file.jpg"
wmic process where "commandline like '%%%FileName%%%' and name='rundll32.exe'" call terminate >nul

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

Flooper 29-01-2011 22:08 1600075

Цитата:

Цитата SendMessage
@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

Цитата:

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

Т.е. она должна выгрузится из процесса?

Flooper 29-01-2011 22:32 1600105

Цитата:

Цитата shao
cmdow /? »

Спасибо, работает.

Iska 30-01-2011 10:48 1600272

Цитата:

Цитата SendMessage
Без утилит. На XP работает…»

У меня тоже не срабатывает на XP SP3, ибо, как писано выше, для «Программа просмотра изображений и факсов» отдельного процесса не порождается. Вызываю просмотр контекстным меню из Проводника — окно принадлежит ему, смотрю из 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 1600406

Цитата:

Цитата Iska
Ниже привожу весь наличествующий у меня раздел «shell\open» по умолчанию: »

Цитата:

Цитата Iska
и раздел «CLSID\{e84fda7c-1d6a-45f6-b725-cb260c236066}»: »

Аналогично. Никаких различий нет.
У меня срабатывает. При открытии создается процесс rundll32.exe. И из контекстного меню.

upd. При попытке открыть через Проводник - отдельный процесс не создался. Из ТС и контекстного меню (попробовал в нескольких программах) - создается.

amel27 30-01-2011 15:28 1600457

Цитата:

Цитата SendMessage
У меня срабатывает. При открытии создается процесс rundll32.exe. И из контекстного меню. »

Цитата:

Цитата SendMessage
При попытке открыть через Проводник - отдельный процесс не создался. »

похоже, эти два способа используют разные механизмы запуска
Verbs and File Associations:
Код:

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.

Цитата:

Цитата Iska
отдельного процесса не порождается »

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

Flooper 31-01-2011 00:45 1600802

Цитата:

Цитата SendMessage
Iska »


По вашим ответам можно дисертацию писать, мне всего то нужно чтоб закрыть окно и я нашёл нужные команды в nircmd и в предложенной cmdow. Всем спасибо. По углублению освоения cmd команд знаю куда обратится. СПАСИБО.


Время: 08:25.

Время: 08:25.
© OSzone.net 2001-