|
Можно ли создать COM-объект V8 из comcntr.dll Chieftain, Guk, H A D G E H O G s, Волшебник, Шурик71, Ёпрст, d4rkmesa, palsergeich, Hmster, b_ru, Гость из Мариуполя, CepeLLlka, Garikk, Мультук, lEvGl, Garykom, RoRu, eandrs, kubik_live, maxab72, Смотрящий, bmitkin, Mankubus, osa1C, 2mugik, Максимка_Космонавтом, denk32, Ivanich, shuhard, dedmoroz777, Группа неравнодушных, Гений 1С, Builder, bolder
| ☑ | ||
---|---|---|---|---|
0
Гений 1С
07.11.24
✎
18:42
|
Без регистрации comcntr.dll?
|
|||
1
bolder
07.11.24
✎
18:45
|
Нельзя,зачем это извращение?
|
|||
2
Волшебник
07.11.24
✎
18:46
|
Можно
|
|||
3
Гений 1С
07.11.24
✎
18:56
|
(2) но как, сэр?
(1) потому что и так и через обертку службы компонентов не создается. {Модуль C:\Users\office\Updater1C\Data\Temp\Updater1C\Script.os / Ошибка в строке: 49 / Внешнее исключение (System.Runtime.InteropServices.COMException): Не удалось получить фабрику класса COM для компонента с CLSID {181E893D-73A4-4722-B61D-D604B3D67D47} из-за следующей ошибки: 80004005 Неопознанная ошибка (Исключение из HRESULT: 0x80004005 (E_FAIL)).} |
|||
4
Волшебник
07.11.24
✎
18:58
|
(3) Я отвечаю за стратегию.
|
|||
5
maxab72
07.11.24
✎
20:24
|
Делов-то, переписать слегка винды под эту задачу...
|
|||
6
osa1C
07.11.24
✎
20:51
|
(5) Лучше свою операционку написать
|
|||
7
Волшебник
07.11.24
✎
21:01
|
Можно перейти на веб-сервисы (HTTP)
|
|||
8
H A D G E H O G s
07.11.24
✎
21:16
|
Можно
|
|||
9
Garykom
07.11.24
✎
21:23
|
||||
10
H A D G E H O G s
07.11.24
✎
22:44
|
<SUMMARY>function FixinMagic()/SUMMARY>
function FixinMagic(): TResult; var FullFilePath, FileDir: String; FileName: String; NewID: TGUID; LibHandle: THandle; AddDllDirectory: TAddDllDirectory; DllGetClassObject: TDllGetClassObject; res: THandle; Factory: IClassFactory; unk: IUnknown; Obj: IDispatch; hkernel32: THandle; ErrorCode: Cardinal; ErrorDescription: String; begin Result.Result := false; FullFilePath := 'C:\Program Files\1cv8\8.3.25.1336\bin\comcntr.dll'; FileDir := ExtractFilePath(FullFilePath); NewID := StringToGUID('{181E893D-73A4-4722-B61D-D604B3D67D47}'); hkernel32 := GetModuleHandle(Pchar('kernel32.dll')); if hkernel32 = 0 then hkernel32 := LoadLibrary(Pchar('kernel32.dll')); if hkernel32 = 0 then begin Result.ErrorCode := GetLastError; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; @AddDllDirectory := GetProcAddress(hkernel32, 'AddDllDirectory'); res := AddDllDirectory(Pchar(FileDir)); if res = 0 then begin Result.ErrorCode := GetLastError; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; LibHandle := CoLoadLibrary(Pchar(FullFilePath),true); if LibHandle = 0 then begin Result.ErrorCode := GetLastError; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; @DllGetClassObject := GetProcAddress(LibHandle, 'DllGetClassObject'); if @DllGetClassObject = nil then begin CloseHandle(LibHandle); Result.ErrorCode := GetLastError; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; res := DllGetClassObject(NewID, IClassFactory, Factory); if (res <> S_OK) or (Factory = nil) then begin CloseHandle(LibHandle); Result.ErrorCode := res; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; res := Factory.CreateInstance(nil, IUnknown, unk); if res <> S_OK then begin CloseHandle(LibHandle); Result.ErrorCode := res; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; res := unk.QueryInterface(IDispatch, Obj); if res <> S_OK then begin Result.ErrorCode := res; Result.ErrorDescription := _GetErrorMsg(Result.ErrorCode); exit; end; Result.Data := Obj; Result.Result := true; end; procedure TForm2.Button1Click(Sender: TObject); var MagicResult: TResult; Connector1C, Connection1C: OleVariant; begin MagicResult := FixinMagic(); if MagicResult.Result = false then begin ShowMessage(MagicResult.ErrorDescription); exit; end; Connector1C := MagicResult.Data; try Connection1C := OleVariant(Connector1C).Connect('Srvr="Localhost";Ref="Empty"'); ShowMessage(Connection1C.Метаданные.Версия) finally end; end; |
|||
11
H A D G E H O G s
07.11.24
✎
22:36
|
(10) Там дальше логично вытекает возможность загружать ComConnector в другую версию платформы, но это задачка Гениям на подумать.
|
|||
12
H A D G E H O G s
07.11.24
✎
22:40
|
Промысел гениев необъясним, но
История помнит и нас судит по ним. |
|||
13
Guk
07.11.24
✎
22:45
|
а чо, фиксин на дельфях пишет?...
|
|||
14
H A D G E H O G s
07.11.24
✎
22:47
|
(13) Не знаю, на чем он там пишет. Я показал набор функций WinAPI, которые помогут ему.
|
|||
15
Guk
07.11.24
✎
23:06
|
(14) ты прям как читать разучился. у него же в нике четко подчеркнуто - "Гений 1С". не "Гений WinAPI", не "Гений Delphi" и даже не "Гений С++" или "Гений Pascal". он же в твоих буквах не поймет нихера...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |