|   |   | 
| 
 | Можно ли создать 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". он же в твоих буквах не поймет нихера...     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |