|
не могу выполнить код VBScript из 1С | ☑ | ||
---|---|---|---|---|
0
ksa-nsk
30.03.17
✎
17:05
|
Всех приветствую, хочу при нажатии кнопки принтскрин в 1С сохранить изображение в файл. Нашел скрипт на VBS (https://support.microsoft.com/ru-ru/help/818410/how-to-save-a-graphic-from-the-clipboard-to-a-file-by-using-visual-basic-.net-or-visual-basic-2005), но как-то не могу выполнить в 1С, мой код:
Процедура ПриОтжатииКнопкиКлавиатуры(Конт,код, _а, _ш, _к, Символ, ФСО) // 44 - принтскрин Если код = 44 Тогда Попытка ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl"); ScrptCtrl.Language="VBScript"; ScrptCtrl.AddCode(" | Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click | If Not System.Windows.Forms.Clipboard.GetDataObject() Is Nothing Then | Dim oDataObj As IDataObject = System.Windows.Forms.Clipboard.GetDataObject() | If oDataObj.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap) Then | Dim oImgObj As System.Drawing.Image = oDataObj.GetData(DataFormats.Bitmap, True) | oImgObj.Save("+ """" + "c:\Test.bmp" + """" + ", System.Drawing.Imaging.ImageFormat.Bmp) | End If | End If | End Sub |"); //Текст=СокрЛП(ScrptCtrl.Run("Button1_Click")); //ScrptCtrl.Call("Button1_Click"); ScrptCtrl.Run("Button1_Click"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецЕсли; КонецПроцедуры() |
|||
1
Волшебник
модератор
30.03.17
✎
17:05
|
что пишет?
|
|||
2
ksa-nsk
30.03.17
✎
17:47
|
Ошибка компиляции Microsoft VBScript: Предполагается наличие ')'
хотя скобки все нормально стоят. Комментарил тело кода, по ходу ругается на первую строку, где объявляется функция VBS |
|||
3
пипец
30.03.17
✎
17:52
|
http://catalog.mista.ru/public/16898/
отсюдава ? |
|||
4
ksa-nsk
30.03.17
✎
18:03
|
нет, я ссылку приложил, мне надо по кновке PrntScrn изображение в файл сохранить. Сама процедура с сайта микрософт, а вот интегрировать ее в 1С - затык какой-то со скобкой((
|
|||
5
Flip
30.03.17
✎
18:06
|
(0) Можно попробовать в экселе создать макрос, запихнуть туда код на VB и выполнить его, если есть синтаксические ошибки то в VB-шном дебагере они будут показаны.
|
|||
6
Смотрящий
30.03.17
✎
18:07
|
КонецПроцедуры() - не торкает ?
|
|||
7
Волшебник
модератор
30.03.17
✎
18:18
|
(4) Попробуй просто создать файл vbs и проверить код
|
|||
8
Вафель
30.03.17
✎
18:21
|
а может нужно процедуру со скобками вызывать?
|
|||
9
Вафель
30.03.17
✎
18:21
|
Button1_Click()
|
|||
10
etc
30.03.17
✎
18:25
|
у тебя с кавычками беда.
|
|||
11
etc
30.03.17
✎
18:26
|
а может и нет
|
|||
12
youalex
30.03.17
✎
18:51
|
(0) > Нашел скрипт на VBS
VB <> VBS |
|||
13
Zhuravlik
30.03.17
✎
19:04
|
||||
14
Torquader
31.03.17
✎
02:11
|
Это чего за хрень ?
Dim oDataObj As IDataObject = System.Windows.Forms.Clipboard.GetDataObject() Так ни в Vb ни в VbScript не пишут. Далее, в VbScript, в отличие от Vb нет типов вообще, то есть As и что после него просто удалить. Ну и Dim заменить на Set. Может быть, что-то и получится. Потом, где мы хотим это получать ? System.Windows.Forms.Clipboard.GetDataObject() Это, как бы, NET-овская фича. |
|||
15
Web00001
31.03.17
✎
06:13
|
||||
16
ksa-nsk
31.03.17
✎
10:24
|
(15) хороши велики, только не едет (скачать готовые обработки возможности нет). В принципе, весь код ниже, но вчем затык не догоняю((. Может Текст надо как-то по-другому в шел передавать?
Процедура ПриОтжатииКнопкиКлавиатуры(код, _а, _ш, _к) Если код = 44 Тогда ИмяФайла = "D:\screenshot.jpg"; oShell = CreateObject("WSCript.shell"); Текст = """& {[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');" + "$size = [Windows.Forms.SystemInformation]::VirtualScreen;" + "$bitmap = new-object Drawing.Bitmap $size.width, $size.height;" + "$graphics = [Drawing.Graphics]::FromImage($bitmap);" + "$graphics.CopyFromScreen($size.location,[Drawing.Point]::Empty, $size.size);" + "$graphics.Dispose();" + "$bitmap.Save('"+ИмяФайла+"');" + "$bitmap.Dispose()}"""; oShell.Run(Текст); КонецЕсли; КонецПроцедуры |
|||
17
Вафель
31.03.17
✎
10:29
|
если хочешь юзать .нет, то есть тут одна библиотечка
|
|||
18
ksa-nsk
31.03.17
✎
10:33
|
(17) да без разницы, что юзать, только без доп. установки на комп. задача в принципе простая - по нажатию кнопки принтскрин сохранить изображение в файл. Код вроде рабочий, но только как его выполнить в 1С не допираю.
|
|||
19
Вафель
31.03.17
✎
10:35
|
(18) если с проводника запустить то отрабатывает?
|
|||
20
ksa-nsk
31.03.17
✎
10:41
|
запихнул в командный файл
wscript.exe {[void][Reflecti..... вылетает с ошибкой "Отсутствует исполняющее ядро для расширения имени файла .Forms);$size" |
|||
21
Вафель
31.03.17
✎
10:44
|
(20) откуда ты тогда знаешь, что код рабочий?
|
|||
22
ksa-nsk
31.03.17
✎
10:44
|
Интересно, а у кого-нибудь такой код выполняется без ошибок? Если да, буду у себя копать...
|
|||
23
ksa-nsk
31.03.17
✎
11:00
|
(21) этот код везде один
http://catalog.mista.ru/public/353853/ http://sysadmins.ru/topic396231.html http://1c.ppt.ru/public/353853/ только как правильно скрипт запустить в шеле не указано, может какой бубен еще нужен( |
|||
24
Вафель
31.03.17
✎
11:02
|
так это же PowerShell, а не vbscript
|
|||
25
Вафель
31.03.17
✎
11:04
|
а vbscript используется только для запуска пауэршелл скрипта
|
|||
26
Вафель
31.03.17
✎
11:04
|
хотя можно и через ЗапуститьПриложение
|
|||
27
DrZombi
гуру
31.03.17
✎
11:07
|
(0) На сервере не взлетит :)
|
|||
28
Ёпрст
31.03.17
✎
11:11
|
(0)
если картинка нужна только окна 1с, то так, например, тупо формексом + метод ПолучитьКартинку Процедура ПолучитьКартинку(Карт) // процедура вызывается из объекта Картинка, расположенного на печатной форме Перем Лево,Верх,Ширина,Высота; ФормаРасш = СоздатьОбъект("РасширениеФормы"); АтрТекст = СоздатьОбъект("АтрибутФормы"); АтрТекст.УстановитьАтрибут(Форма,"Табл"); АтрТекст.ПолучитьКоординаты(Лево,Верх,Ширина,Высота); Карт.УстановитьКартинку(ФормаРасш.ПолучитьКартинку(Лево,Верх,Ширина,Высота)); КонецПроцедуры |
|||
29
Вафель
31.03.17
✎
11:17
|
пауэршелл скрипты запускаются так
Powershell -File ./systemInfo.ps1 |
|||
30
eklmn
гуру
31.03.17
✎
14:49
|
(0) что за бред вообще? )) как можно заниматься тупым копи-пастом?
При чем тут VBS, если это код VB? Пример показан для размышления, что это функция якобы висит на кнопке Button1 и сохраняет в файл из буфера при нажатии. даже если ты назовешь правильно главную функцию Public Sub Main() то все равно работать так не будет примерно это, но надо компилить в exe-файл в самой Visual Studio Public Sub Main(args() As string) If Not System.Windows.Forms.Clipboard.GetDataObject() Is Nothing Then Dim oDataObj As IDataObject = System.Windows.Forms.Clipboard.GetDataObject() If oDataObj.GetDataPresent(System.Windows.Forms.DataFormats.Bitmap) Then Dim oImgObj As System.Drawing.Image = oDataObj.GetData(DataFormats.Bitmap, True) 'To Save as Bitmap oImgObj.Save("c:\Test.bmp", System.Drawing.Imaging.ImageFormat.Bmp) 'To Save as Jpeg oImgObj.Save("c:\Test.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg) 'To Save as Gif oImgObj.Save("c:\Test.gif", System.Drawing.Imaging.ImageFormat.Gif) End If End If End Sub |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |