|
Можно ли создать 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". он же в твоих буквах не поймет нихера...
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший