|
Проблема с ЗапуститьПриложение() | ☑ | ||
---|---|---|---|---|
0
8 0
13.09.11
✎
18:34
|
При открытии файла из хранилищаЗначения с помощью ЗапуститьПриложение(ПолноеИмяФайла) файлы картинок открываются отлично, а word и excel открываются в неактивном окне (открывается Word, в нем открывается файл, и переключается на 1С). Как сделать чтобы окна открываемых файлов оставались активными не зависимо от открывающего ПО?
|
|||
1
FN
13.09.11
✎
19:26
|
||||
2
8 0
14.09.11
✎
09:42
|
up_
|
|||
3
andrewks
14.09.11
✎
09:44
|
(2) чё уп? ты пробовал (1)?
|
|||
4
8 0
14.09.11
✎
09:57
|
я не создаю никакого объекта, файлы вложенные в хранилище могут быть различных форматов
|
|||
5
FN
14.09.11
✎
16:50
|
(4) разжевываю:
WshShell = CreateObject("WScript.Shell"); WshShell.Run(Симв(34)+ПолноеИмяФайла+Симв(34), 1, 0); только минтаксис проверь, это код из 7.7 |
|||
6
8 0
15.09.11
✎
12:06
|
Спасибо, попробую. Пока остановилась на варианте ЗапуститьПриложение(имя, , Истина), но там свои недостатки. попробую этот вариант.
|
|||
7
8 0
15.09.11
✎
12:25
|
(5) попробовала
WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(Символ(34)+ПолноеИмяФайла+Символ(34), 1, 0); открывает, но опять же word, excel окно неактивно становится, т. е. проблема та же самая, может как то можно окно активизировать? |
|||
8
FN
16.09.11
✎
11:03
|
(7) ну попробуй еще так:
WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(Символ(34)+ПолноеИмяФайла+Символ(34), 3, 0); |
|||
9
8 0
19.09.11
✎
10:06
|
(8) пробовала, тоже самое, открывается, а потом снова 1С активным становится. Не понимаю почему:(
|
|||
10
kvk
19.09.11
✎
10:29
|
Вот так еще можно попробовать, доработать только:
Шелл = Новый COMОбъект("WScript.Shell"); Попытка AutoIt = Новый COMОбъект("AutoItX3.Control"); Исключение КонецПопытки; Если AutoIt <> Неопределено Тогда Файл = Новый Файл(ПолноеИмяФайла); Шелл.Run("""" + ПолноеИмяФайла + """", 1); RegExp = "[REGEXPTITLE:\b" + Файл.ИмяБезРасширения + "\b]"; Если AutoIt.WinWait(RegExp, "", 20) Тогда Handle = "[HANDLE:" + AutoIt.WinGetHandle(RegExp) + "]"; Если Не AutoIt.WinActive(Handle) Тогда AutoIt.WinActivate(Handle); КонецЕсли; КонецЕсли; Иначе ИмяСкрипта = ПолучитьИмяВременногоФайла(); Скрипт = Новый ЗаписьТекста(ИмяСкрипта, КодировкаТекста.ANSI); Скрипт.Записать("var WshShell = new ActiveXObject('WScript.Shell'); |var fso = new ActiveXObject('Scripting.FileSystemObject'); |fso.DeleteFile(WScript.ScriptFullName); |var filename = WScript.Arguments(0); |WshShell.Run(filename, 1); |basename = fso.GetBaseName(filename); |switch(fso.GetExtensionName(filename)){ | case 'doc': case 'docx': title = 'Microsoft Word - ' + basename; break; | case 'txt': title = basename + ' - Блокнот'; break; | case 'xls': case 'xlsx': title = 'Microsoft Excel - ' + basename; break; | default: title = basename; |} |for(i=0;i<4;i++){WshShell.AppActivate(title);WScript.Sleep(5000)}"); Скрипт.Закрыть(); Шелл.Run("cscript /e:javascript """ + ИмяСкрипта + """ """ + ПолноеИмяФайла + """", 0); КонецЕсли; |
|||
11
8 0
19.09.11
✎
11:25
|
(10) как есть не работает, а доработать не могу, я в этом не разбираюсь...
|
|||
12
mzelensky
19.09.11
✎
11:36
|
(11) "я в этом не разбираюсь" - если так, то готовьте капусту и зовите спеца. Смысл просить помощи на форуме, если желания "разобраться" нет ?!?!?
СОРИ ЗА ФЛУД |
|||
13
8 0
19.09.11
✎
11:57
|
(12) я написала вопрос, почему может не работать (так как должна была бы) стандартная команда 1С. Я не разбираюсь во внешних скриптах, а это совершенно другая тема.
|
|||
14
kvk
19.09.11
✎
12:01
|
(11) В (10) Заменить строку на
|WshShell.Run('""' + filename + '""', 1); в переменные title в зависимости от расширения правильно написать заголовки появляющихся окон (у меня OpenOffice, может и не правильно указал, проверил только для блокнота). Попытку Вообще убрать, оставить только блок Иначе. Если без внешних скриптов то так: Шелл = Новый COMОбъект("WScript.Shell"); Шелл.Run("""" + ПолноеИмяФайла + """", 1); Файл = Новый Файл(ПолноеИмяФайла); Имя = Файл.ИмяБезРасширения; Расширение = Файл.Расширение; // Определим заголовок появляющегося окна Если (Расширение = ".doc") ИЛИ (Расширение = ".docx") Тогда Заголовок = "Microsoft Word - " + Имя; ИначеЕсли (Расширение = ".xls") ИЛИ (Расширение = ".xlsx") Тогда Заголовок = "Microsoft Excel - " + Имя; ИначеЕсли Расширение = ".txt" Тогда Заголовок = Имя + " - Блокнот"; Иначе Заголовок = Имя; КонецЕсли; Для К=1 По 3 Цикл Шелл.AppActivate(Заголовок); // Активизируем окно, если появилось Шелл.Run("ping -n 3 127.0.0.1", 0, Истина); // Ждем 3 секунды КонецЦикла; |
|||
15
8 0
19.09.11
✎
12:03
|
(14) спасибо, сейчас попробую!
|
|||
16
8 0
19.09.11
✎
12:13
|
(14) не понимаю,
WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(Символ(34)+ПолноеИмяФайла+Символ(34), 1, 0); - не работает, открывает и активность на 1С а взяла твои 2 строки Шелл = Новый COMОбъект("WScript.Shell"); Шелл.Run("""" + ПолноеИмяФайла + """", 1); - все работает Спасибо огромное! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |