2013-05-17 2 views
2

Я только что сделал пакетный файл, который запускает новый экземпляр приложения (Excel), а затем открывает файл с этим экземпляром.CMD/Batch Get Handle для открытия приложения?

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

Параметр указывает командный файл либо открыть новый экземпляр, либо запустить файл с существующим экземпляром Excel (если он доступен). Я хорошо разбираюсь в потоке программы, просто хочу знать команды для получения дескриптора открытого экземпляра приложения. Возможно ли это с помощью команд DOS, или мне нужно посмотреть на проектирование фронтального загрузчика с помощью Excel или какой-либо другой программы?

+3

AFAIK, нет способа получить доступ к исполняемому экземпляру приложения из пакетного или .cmd-файла. Однако вы можете сделать это через VBScript или PowerShell. –

+0

Хорошо спасибо за предложения – wesmantooth

+2

Наиболее точная информация, которую вы можете получить с помощью чистого пакетного скрипта, связана с wmic: 'wmic process where name =" excel.exe "get/format: csv' – npocmaka

ответ

2

Что делать, если вы просто выполняете файл Excel? Если excel не запущен, запускается один экземпляр, , если excel запущен, этот Excel используется для просмотра файла. :)

Или, может быть, проверка через TaskList/FI "ImageName EQ EXCEL.EXE" может помочь проверить каждый раз, когда экземпляр работает или нет:

TASKLIST /FI "IMAGENAME EQ EXCEL.EXE" | FINDSTR /I "EXCEL.EXE" >NUL 2>&1 
IF ERRORLEVEL 1 GOTO :NotFound 
IF ERRORLEVEL 0 GOTO :Found 

Сердечные приветы

ред ж/Findstr & обработка ошибок.

+0

Приятная попытка. К сожалению, tasklist не устанавливает уровень ошибок (на Vista). Но если вы покажете, как получить и протестировать вывод, я буду повышать (я буду тестировать его позже в Windows 7). –

+0

Извините. Моя ошибка ^.^ Но я получил его для работы с кодом: TASKLIST/FI "IMAGENAME EQ EXCEL.EXE" | FINDSTR "EXCEL.EXE"> NUL 2> & 1 IF ERRORLEVEL 1 GOTO: NotFound IF ERRORLEVEL 0 GOTO: Найдено – BaBa

+0

Вы должны использовать 'FINDSTR/I', и это нормально. Пожалуйста, отредактируйте свое сообщение с этим ответом. –

Смежные вопросы