1

Тема: AHK: ComObjCreate WScript

https://www.script-coding.com/WSH/WScript.html

WScript := ComObjCreate("WScript")

Так не работает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: ComObjCreate WScript

Я в Гугле в один клик нашёл.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: ComObjCreate WScript

Хорошо тебе, а я не нашёл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: ComObjCreate WScript

Попробуй запрос объект WScript.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: ComObjCreate WScript

Попробовал.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: ComObjCreate WScript

Успешно?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: ComObjCreate WScript

Нет.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: ComObjCreate WScript

Неужели не выпало ни одного сайта, где используется конструкция CreateObject("WScript ...)?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: ComObjCreate WScript

ComObjCreate("WScript") такого нигде.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: ComObjCreate WScript

teadrinker пишет:

...)?

Что значат точки?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

такого нигде

А какое есть?

serzh82saratov пишет:

Что значат точки?

Что там есть что-то ещё.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

12

Re: AHK: ComObjCreate WScript

serzh82saratov, читай тут:
https://ericlippert.com/2003/10/08/why- … pt-object/

13

Re: AHK: ComObjCreate WScript

Да, WScript это внутренний объект WSH, но есть системный COM-класс, реализующий сходный функционал.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

14

Re: AHK: ComObjCreate WScript

Хотя нет, я с WshShell перепутал.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: ComObjCreate WScript

Malcev пишет:

serzh82saratov, читай тут:
https://ericlippert.com/2003/10/08/why- … pt-object/

Я из того понял что никак, или я ошибаюсь?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: ComObjCreate WScript

Да, никак.

17

Re: AHK: ComObjCreate WScript

serzh82saratov, а какой функционал тебе нужен?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

18

Re: AHK: ComObjCreate WScript

AHK тут просто для примера, а нужен GetObject в JS и VBS для создания COM из DLL файла.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

19

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

создания COM

Может и не COM, ну в общем для использования DLL в этих языках.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

20

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

для использования DLL в этих языках.

Если без сторонних средств, то есть https://ru.wikipedia.org/wiki/Rundll32.exe. Но функция должна быть для этого предназначена.

21

Re: AHK: ComObjCreate WScript

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

22

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

хотелось бы нормальное взаимодействие.

А именно?

23

Re: AHK: ComObjCreate WScript

События получать например. Да и просто запуск функции путём запуска ехе не самый быстрый способ, да и как получать результат выполнения.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

24

Re: AHK: ComObjCreate WScript

Тогда остаются сторонние средства, вроде того, что у меня в подписи. Правда, конкретно его банят многие антивирусы, но можно написать аналог на другом языке.

25

Re: AHK: ComObjCreate WScript

Но он требует регистрации в системе, а я имею ввиду без регистрации. Как LoаdLibrary в анк.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

26

Re: AHK: ComObjCreate WScript

Можно без регистрации, через манифесты. Ещё есть в системе какой-то предустановленный класс, который тоже позволяет другие без регистрации использовать. Только я забыл как он называется. Но пример видел именно с использованием DWX без регистрации.

27

Re: AHK: ComObjCreate WScript

YMP пишет:

Ещё есть в системе какой-то предустановленный класс

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

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

28

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

пример конечно интересно было бы посмотреть.

RegistrationFree DynamicWrapperX
Один манифест там всё-таки нужен. Ну и clsid в примере старый, сейчас {89565276-A714-4a43-912E-978B935EDCCC}.

29

Re: AHK: ComObjCreate WScript

Интересно, но выдаёт.

Требуемый класс отсутствует в ClassFactory

actCtx := ComObjCreate("Microsoft.Windows.ActCtx")
actCtx.Manifest := "D:\FFFFFFFFFFFF\AutoHotKey\dynwrapx\dynwrap.test.manifest"
DX := actCtx.CreateObject("DynamicWrapperX")
DX.Register("user32.dll", "MessageBoxW", "i=hwwu", "r=l") 
res := DX.MessageBoxW(0, "Hello, world!", "Test", 4)
MsgBox % res

Пробовал обе битности, после того как подружил с антивирусом.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

30

Re: AHK: ComObjCreate WScript

Я правильно понял что путь к DLL задан тут как относительный?

<file name="dynwrapx.dll">

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

31

Re: AHK: ComObjCreate WScript

DynamicWrapperX версии 2.2.0.0, может в примере манифест под другую версию?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

32

Re: AHK: ComObjCreate WScript

Пример для версии 1, но там только clsid отличается. Не помню уже подробностей про эти манифесты, надо разбираться заново.

33

Re: AHK: ComObjCreate WScript

YMP пишет:

Пример для версии 1, но там только clsid отличается

А у новой версии какой clsid?

YMP пишет:

Не помню уже подробностей про эти манифесты, надо разбираться заново.

То есть для каждой DLL могут понадобится некие данные, и не факт что это только clsid и progid?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

34

Re: AHK: ComObjCreate WScript

Проверил пример с первой версией, похоже Microsoft.Windows.ActCtx то что надо!

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

35

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

А у новой версии какой clsid?

YMP пишет:

Ну и clsid в примере старый, сейчас {89565276-A714-4a43-912E-978B935EDCCC}.

serzh82saratov пишет:

То есть для каждой DLL могут понадобится некие данные, и не факт что это только clsid и progid?

Это для COM-DLL. Через мою потом можно вызывать функции обычных DLL.

36

Re: AHK: ComObjCreate WScript

YMP пишет:

Ну и clsid в примере старый, сейчас {89565276-A714-4a43-912E-978B935EDCCC}.

Не заметил.) Да всё работает. Я бы такое в описание добавил, не всегда удобна регистрация.
Заметил что путь к Manifest в JS должен быть абсолютным, а в AUTOHOTKEY может быть относительным.

YMP пишет:

Это для COM-DLL. Через мою потом можно вызывать функции обычных DLL.

Прям библиотека библиотек, спасибо, вопрос снят.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

37

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

Заметил что путь к Manifest в JS должен быть абсолютным, а в AUTOHOTKEY может быть относительным.

Так это, по идее, смотря где он лежит. Из любого языка этот путь передаётся всё равно в объект ActCtx. Либо абсолютный указывать, либо относительно текущего каталога процесса. Должно быть так.

38

Re: AHK: ComObjCreate WScript

YMP пишет:

относительно текущего каталога процесса

В JS процесс это C:\Windows\SysWOW64\wscript.exe, так что если DLL рядом со скриптом, то не работает. Но и у анк до процесса путь свой, но с ним относительный прокатывает. В JS неясное понятие рабочей папки, и как её изменить.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

39

Re: AHK: ComObjCreate WScript

YMP пишет:

Так это, по идее, смотря где он лежит.

В той же папке что и скрипт.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

40

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

В JS неясное понятие рабочей папки, и как её изменить.

Вроде там же, где скрипт. Проверил таким кодом:


dwx = new ActiveXObject("DynamicWrapperX");
dwx.Register("kernel32", "GetCurrentDirectoryW", "i=up");
bufsize = 500;
buf = dwx.MemAlloc(bufsize);
dwx.GetCurrentDirectoryW(bufsize / 2, buf);
WSH.Echo(dwx.StrGet(buf));

Изменить можно через SetCurrentDirectory.

serzh82saratov пишет:

В JS процесс это C:\Windows\SysWOW64\wscript.exe, так что если DLL рядом со скриптом, то не работает.

Она должна быть рядом с манифестом, насколько я понял. Т.е. отдельно к ней путь не надо указывать. По крайней мере, у меня так сработало.

41

Re: AHK: ComObjCreate WScript

GetCurrentDirectoryW может получать то что касается DynamicWrapperX, а не самого JS, или Microsoft.Windows.ActCtx в JS. Так у меня не работает.

var actCtx = new ActiveXObject("Microsoft.Windows.ActCtx");
actCtx.Manifest = "dynwrap.test.manifest";

Не удается найти указанный файл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

42

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

GetCurrentDirectoryW может получать то что касается DynamicWrapperX, а не самого JS, или Microsoft.Windows.ActCtx в JS.

GetCurrentDirectory Function

Retrieves the current directory for the current process

DWX и ActCtx работают в процессе, который их создал. У процесса один текущий каталог.

serzh82saratov пишет:

Так у меня не работает.

Как именно? Где что в этот момент лежало?

43

Re: AHK: ComObjCreate WScript

YMP пишет:

Как именно? Где что в этот момент лежало?

Скрипт, манифест и DLL в одной папке. На строке actCtx.Manifest ошибка.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

44

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

Скрипт, манифест и DLL в одной папке.

У меня при таком же раскладе работает.

https://i.ibb.co/2s2GXzm/20240317-210019.png

45

Re: AHK: ComObjCreate WScript

И что интересно JS скрипт, не работает кликом из проводника.

Ошибка: 0x800700C1
Код: 800700C1
Источник: (null)

Запускается только командой Run.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

46

Re: AHK: ComObjCreate WScript

YMP пишет:
serzh82saratov пишет:

Скрипт, манифест и DLL в одной папке.

У меня при таком же раскладе работает.

https://i.ibb.co/2s2GXzm/20240317-210019.png

Не знай как так. Кодировка файлов и переносы строк какие? У меня UTF-8 и Unix (LF).

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

47

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

Не знай как так.

Если через Run, то текущий каталог получается тот, где лежит wscript.exe. Поэтому у вас и не находит. А если двойным щелчком по файлу JS, то текущий — эта папка, поэтому находит. В Run же можно указать текущий каталог.

48 (изменено: serzh82saratov, 2024-03-17 20:28:25)

Re: AHK: ComObjCreate WScript

YMP пишет:

сли через Run, то текущий каталог получается тот, где лежит wscript.exe.

В Run wscript.exe не указан, только JS файл.

YMP пишет:

А если двойным щелчком по файлу JS, то текущий — эта папка, поэтому находит.

Так не работало.

Я понял, на JS я тестил первую версию. Она 32 бит, а из проводника запускалась 64 битным wscript, а Run я из под 32 анк запускал. Но в первой версии ошибка с путём всё же есть. Со второй версией норм, относительный путь работает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

49

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

В Run wscript.exe не указан, только JS файл.

Я так и делал. Просто проверил каталог через GetCurrentDirectory и получил C:\Windows\system32.

serzh82saratov пишет:

Но в первой версии ошибка с путём всё же есть.

Она есть при использовании Run. Версия ни при чём.

50

Re: AHK: ComObjCreate WScript

YMP пишет:

Она есть при использовании Run. Версия ни при чём.

С Run была ошибка с битностью, к пути Manifest она не имеет отношения.

YMP пишет:

проверил каталог через GetCurrentDirectory и получил C:\Windows\system32

Значит как я и предполагал к относительности пути до Manifest она не имеет отношения.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

51

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

С Run была ошибка с битностью, к пути Manifest она не имеет отношения.

У меня не было ошибки с битностью при использовании Run. Проблема как раз с тем, что путь относительный, а каталог не тот.

serzh82saratov пишет:

Значит как я и предполагал к относительности пути до Manifest она не имеет отношения.

Относительный путь — относительно текущего каталога. Если каталог не тот, файл не будет найден.

52

Re: AHK: ComObjCreate WScript

Интересно, что если встроить манифест в библиотеку в виде ресурса, то в скрипте всё равно нужно указывать путь до dynwrapx.manifest, даже если такого файла нет. Если указать саму библиотеку, то вылезает ошибка


Строка: 2
Символ: 1
Ошибка: Указанный тип ресурса в файле образа отсутствует.

53

Re: AHK: ComObjCreate WScript

YMP пишет:

Если каталог не тот, файл не будет найден.

Текущий каталог, это папка скрипта, в ней и манифест и dll.

YMP пишет:

Интересно, что если встроить манифест в библиотеку в виде ресурса, то в скрипте всё равно нужно указывать путь до dynwrapx.manifest, даже если такого файла нет

То есть можно указать несуществующий файл, и это будет работать?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

54

Re: AHK: ComObjCreate WScript

https://i.imgur.com/6j7xG2w.png

Я так сделал, не получается без файла манифеста.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

55

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

Текущий каталог, это папка скрипта, в ней и манифест и dll.

При использовании Run это не так. Если только в самом Run не указать явно.

serzh82saratov пишет:

То есть можно указать несуществующий файл, и это будет работать?

Такой странный алгоритм поиска манифеста.

serzh82saratov пишет:

Я так сделал, не получается без файла манифеста.

Не видно картинку, и по адресу не находится.

56

Re: AHK: ComObjCreate WScript

YMP пишет:

При использовании Run это не так. Если только в самом Run не указать явно.

Со второй версией работает, с первой проблема была.

YMP пишет:

Не видно картинку, и по адресу не находится.

https://imgur.com/6j7xG2w  а так?

YMP пишет:

Такой странный алгоритм поиска манифеста.

У меня так выдаёт ошибку о несуществующем файле.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

57

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

https://imgur.com/6j7xG2w

Post's attachments

6j7xG2w.png 41.81 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

58

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

У меня так выдаёт ошибку о несуществующем файле.

Если actCtx.Manifest обернуть в try catch, то "Невозможно создание объекта сервером программирования объектов".

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

59

Re: AHK: ComObjCreate WScript

serzh82saratov пишет:

Со второй версией работает, с первой проблема была.

Первую я даже не пробовал. Версия DWX тут вообще ни при чём. Суть в том, что когда скрипт JS запускается через Run без явного указания рабочего каталога, то используется каталог, где лежит wscript.exe. Не имеет значения, что делает скрипт JS, а уж тем более какую версию чего-то там он использует.

serzh82saratov пишет:

https://imgur.com/6j7xG2w  а так?

Там надо выбрать именно код для форума, это ниже расположено.

serzh82saratov пишет:

У меня так выдаёт ошибку о несуществующем файле.

Не пойму, как это работает. Лежит библиотека в одном месте — работает, а если в другом — нет, хотя в обоих случаях указан полный путь. Белиберда какая-то. Отдельного файла манифеста нет в обоих случаях.

60