Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Работа с VARIANT https://www.cyberforum.ru/ c-cpp/ thread1425515.html
Добрый день. Есть функция STDMETHODIMP MyClass::InitiateRequest(VARIANT* pVal) { byte mac = { 0x00, 0x8a, 0x0C, 0x98, 0x11, 0x15 }; _variant_t var; var.vt = VT_ARRAY | VT_UI1; SAFEARRAYBOUND rgsabound; rgsabound.cElements = 6; rgsabound.lLbound = 0;
Ошибка: "binary '=' no operator found which takes a right-hand operand" C/C++
Добрый день. Пытаюсь функцией вернуть массив byte. Пишу так: STDMETHODIMP CCLASS::function(VARIANT* Value) { byte abc = { 0x34, 0x32, 0x23 }; *Value = abc; return S_OK; } В головном классе ....
C/C++ COM exe server Возможно ли создать COM exe сервер без использования WINAPI? на данный момент работает так. int main(){ MSG msg; long d = 0; HACCEL hAccelTable = LoadAccelerators(NULL, NULL); HRESULT hr = CoInitialize(NULL); CFactory::StartFactory(); https://www.cyberforum.ru/ c-cpp/ thread1413264.html C/C++ LNK2005: _DllCanUnloadNow@0 уже определен в dlldata.obj Продолжаю изучать com. В итоге получаю новую ошибку: error LNK2005: _DllCanUnloadNow@0 уже определен в dlldata.obj error LNK2005: _DllGetClassObject@12 уже определен в dlldata.obj dlldata.c - Файл, созданный MIDL-компилятором. В принципе, понятно, из-за чего возникает ошибка. В main.cpp уже определены две эти функции: STDAPI DllCanUnloadNow() { https://www.cyberforum.ru/ c-cpp/ thread1406042.html
Active Directory и C++ C/C++
Товарищи! Проблема в следующем: появилась необходимость работы моей программы, а именно АИС, взаимодействовать с Active Directory:wall:(будь она не ладна). Но я не могу найти внятного примера, или хотя бы подробное описание библиотеки, взаимодействующей с AD. Дайте пинка в нужную сторону, а лучше пример, или ссылочку.
C/C++ E_NOINTERFACE COM https://www.cyberforum.ru/ c-cpp/ thread1401885.html
Добрый день. Взял пример кода из книги Д. Роджерсона. Его скомпилированный вариант работает на ура, но при попытке повторить сам, получаю следующую ошибку: Невозможно привести COM-объект типа "TestCOMLib.ComponentClass" к интерфейсному типу "TestCOMLib.IX". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID...
C/C++ Ошибка в DLL 800401F9 Доброго времени суток. Изучаю технологию COM, возникли некоторые проблемы. Есть код: IFace.h #include <objbase.h> #include <initguid.h> extern "C" { // {BA84A25E-EFF5-4AB7-9A0E-133551BCA8EC} https://www.cyberforum.ru/ c-cpp/ thread1396194.html C/C++ Общение с Excel через OLE
Недавно начал изучать с++. Использую ms vc++ 2010 express. Код такой // 2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "windows.h" HRESULT OLEMethodEx(int nType, VARIANT *pvResult, IDispatch *pDisp,LPOLESTR ptName, int cArgs...)
C/C++ COM & C++ & MDI https://www.cyberforum.ru/ c-cpp/ thread1374463.html
Всем привет. Совсем недавно стал постигать азы технологии COM на своем "рабочем" языке С++. Благодаря MSDN научился создавать простенькие com серверы и использовать их в приложениях. Но недавно столкнулся с задачей, которую уже долгое время не могу решить. Надеюсь на вашу помощь. Задача следующая. Имеется MDI приложение, в котором есть возможность добавления нового функционала с помощью...
C/C++ Плагин для IE (автоматическое управление браузером) https://www.cyberforum.ru/ c-cpp/ thread1371787.html
мне нужно организовать автоматическое управление браузеров ie (открывать, закрывать вкладки при определённых событиях), вот только незнаю с чего начать, в интернете вычитал что можно это сделать на шарпе, только не могу понять как и примеров не могу найти
Сторонний процесс Excel C/C++
Доброе время суток! Возникла такая задача. Левая программа (не важно какая) запускает Excel с уже сгенерированной информацией. Не открывает файл с диска, а заполняет таблицу "на лету". Мне нужно из своей программы получить данные из этой таблицы и корректно закрыть Excel с сохранением данных из таблицы в файл. VC и .net не предлагайте. Желательно чистый с++ и Qt. Т.е. сам процесс excel я "вижу"...
C/C++ Нумерация страниц в ворде (OLE) Подскажите пожалуйста, как пронумеровать страницы в вордовском документе с помощью технологии OLE? https://www.cyberforum.ru/ c-cpp/ thread1369718.html
0 / 0 / 0
Регистрация: 06.06.2014
Сообщений: 14
22.04.2015, 19:16  [ТС] 0

Регистрация компонента на чистом с++ regsvr32 DllRegisterServer не найдена - C/C++ - Ответ 7516399

22.04.2015, 19:16. Показов 5937. Ответов 4
Метки (Все метки)

Ответ

РЕБЯТАА!! и года не прошло!) В общем получилось
Во первых надо исправить REGISTRY.cpp кое-где путь изменить Wow6432Node\\
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
//
// Registry.cpp
//
 
#include <objbase.h>
#include <assert.h>
 
#include "Registry.h"
 
////////////////////////////////////////////////////////
//
// Internal helper functions prototypes
//
 
// Set the given key and its value.
BOOL setKeyAndValue(const char* pszPath,
    const char* szSubkey,
    const char* szValue);
 
// Convert a CLSID into a char string.
void CLSIDtochar(const CLSID& clsid,
    char* szCLSID,
    int length);
 
// Delete szKeyChild and all of its descendents.
LONG recursiveDeleteKey(HKEY hKeyParent, const char* szKeyChild);
 
////////////////////////////////////////////////////////
//
// Constants
//
 
// Size of a CLSID as a string
const int CLSID_STRING_SIZE = 39;
 
/////////////////////////////////////////////////////////
//
// Public function implementation
//
 
//
// Register the component in the registry.
//
HRESULT RegisterServer(HMODULE hModule,            // DLL module handle
    const CLSID& clsid,         // Class ID
    const char* szFriendlyName, // Friendly Name
    const char* szVerIndProgID, // Programmatic
    const char* szProgID)       //   IDs
{
    // Get server location.
    char szModule[512];
    DWORD dwResult =
        ::GetModuleFileName(hModule,
        szModule,
        sizeof(szModule) / sizeof(char));
    assert(dwResult != 0);
 
    // Convert the CLSID into a char.
    char szCLSID[CLSID_STRING_SIZE];
    CLSIDtochar(clsid, szCLSID, sizeof(szCLSID));
 
    // Build the key CLSID\\{...}
    char szKey[64];
    strcpy(szKey, "Wow6432Node\\");
    strcat(szKey, "CLSID\\");
    //strcpy(szKey, "Wow6432Node\CLSID\\");
    strcat(szKey, szCLSID);
 
    // Add the CLSID to the registry.
    setKeyAndValue(szKey, NULL, szFriendlyName);
 
    // Add the server filename subkey under the CLSID key.
    setKeyAndValue(szKey, "InprocServer32", szModule);
 
    // Add the ProgID subkey under the CLSID key.
    setKeyAndValue(szKey, "ProgID", szProgID);
 
    // Add the version-independent ProgID subkey under CLSID key.
    setKeyAndValue(szKey, "VersionIndependentProgID",
        szVerIndProgID);
 
    // Add the version-independent ProgID subkey under HKEY_CLASSES_ROOT.
    setKeyAndValue(szVerIndProgID, NULL, szFriendlyName);
    setKeyAndValue(szVerIndProgID, "CLSID", szCLSID);
    setKeyAndValue(szVerIndProgID, "CurVer", szProgID);
 
    // Add the versioned ProgID subkey under HKEY_CLASSES_ROOT.
    setKeyAndValue(szProgID, NULL, szFriendlyName);
    setKeyAndValue(szProgID, "CLSID", szCLSID);
 
    return S_OK;
}
 
//
// Remove the component from the registry.
//
LONG UnregisterServer(const CLSID& clsid,         // Class ID
    const char* szVerIndProgID, // Programmatic
    const char* szProgID)       //   IDs
{
    // Convert the CLSID into a char.
    char szCLSID[CLSID_STRING_SIZE];
    CLSIDtochar(clsid, szCLSID, sizeof(szCLSID));
 
    // Build the key CLSID\\{...}
    char szKey[64];
    strcpy(szKey, "Wow6432Node\CLSID\\");
    strcat(szKey, szCLSID);
 
    // Delete the CLSID Key - CLSID\{...}
    LONG lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szKey);
    assert((lResult == ERROR_SUCCESS) ||
        (lResult == ERROR_FILE_NOT_FOUND)); // Subkey may not exist.
 
    // Delete the version-independent ProgID Key.
    lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szVerIndProgID);
    assert((lResult == ERROR_SUCCESS) ||
        (lResult == ERROR_FILE_NOT_FOUND)); // Subkey may not exist.
 
    // Delete the ProgID key.
    lResult = recursiveDeleteKey(HKEY_CLASSES_ROOT, szProgID);
    assert((lResult == ERROR_SUCCESS) ||
        (lResult == ERROR_FILE_NOT_FOUND)); // Subkey may not exist.
 
    return S_OK;
}
 
///////////////////////////////////////////////////////////
//
// Internal helper functions
//
 
// Convert a CLSID to a char string.
void CLSIDtochar(const CLSID& clsid,
    char* szCLSID,
    int length)
{
    assert(length >= CLSID_STRING_SIZE);
    // Get CLSID
    LPOLESTR wszCLSID = NULL;
    HRESULT hr = StringFromCLSID(clsid, &wszCLSID);
    assert(SUCCEEDED(hr));
 
    // Covert from wide characters to non-wide.
    wcstombs(szCLSID, wszCLSID, length);
 
    // Free memory.
    CoTaskMemFree(wszCLSID);
}
 
//
// Delete a key and all of its descendents.
//
LONG recursiveDeleteKey(HKEY hKeyParent,           // Parent of key to delete
    const char* lpszKeyChild)  // Key to delete
{
    // Open the child.
    HKEY hKeyChild;
    LONG lRes = RegOpenKeyEx(hKeyParent, lpszKeyChild, 0,
        KEY_ALL_ACCESS, &hKeyChild);
    if (lRes != ERROR_SUCCESS)
    {
        return lRes;
    }
 
    // Enumerate all of the decendents of this child.
    FILETIME time;
    char szBuffer[256];
    DWORD dwSize = 256;
    while (RegEnumKeyEx(hKeyChild, 0, szBuffer, &dwSize, NULL,
        NULL, NULL, &time) == S_OK)
    {
        // Delete the decendents of this child.
        lRes = recursiveDeleteKey(hKeyChild, szBuffer);
        if (lRes != ERROR_SUCCESS)
        {
            // Cleanup before exiting.
            RegCloseKey(hKeyChild);
            return lRes;
        }
        dwSize = 256;
    }
 
    // Close the child.
    RegCloseKey(hKeyChild);
 
    // Delete this child.
    return RegDeleteKey(hKeyParent, lpszKeyChild);
}
 
//
// Create a key and set its value.
//   - This helper function was borrowed and modifed from
//     Kraig Brockschmidt's book Inside OLE.
//
BOOL setKeyAndValue(const char* szKey,
    const char* szSubkey,
    const char* szValue)
{
    HKEY hKey;
    char szKeyBuf[1024];
 
    // Copy keyname into buffer.
    strcpy(szKeyBuf, szKey);
 
    // Add subkey name to buffer.
    if (szSubkey != NULL)
    {
        strcat(szKeyBuf, "\\");
        strcat(szKeyBuf, szSubkey);
    }
 
    // Create and open key and subkey.
    long lResult = RegCreateKeyEx(HKEY_CLASSES_ROOT,
        szKeyBuf,
        0, NULL, REG_OPTION_NON_VOLATILE,
        KEY_ALL_ACCESS, NULL,
        &hKey, NULL);
    if (lResult != ERROR_SUCCESS)
    {
        return FALSE;
    }
 
    // Set the Value.
    if (szValue != NULL)
    {
        RegSetValueEx(hKey, NULL, 0, REG_SZ,
            (BYTE *)szValue,
            strlen(szValue) + 1);
    }
 
    RegCloseKey(hKey);
    return TRUE;
}
Во вторых надо писать в cmpnt.cpp
extern "C"
__declspec(dllexport)int DllUnregisterServer()
{
return UnregisterServer(CLSID_Component1,
g_szVerIndProgID,
g_szProgID);
}

И в третьих ЕСЛИ вы косячно загружали ваш компонент в реестр, то повторная загрузка, но уже с правильным кодом( то есть с выполненными вышеуказанными пунктами) все равно не работает и ВЫСКАКИВАЕТ ошибка DllRegisterServer точка входа не найдена.
Я создал абсолютно идентичную программу только назвал ее PALEVO. Соответственно в .def изменил CMPNT.dll на PALEVO.dll и в CMPNT.cpp(я его назвал PALEVO.cpp) изменил PROGID(так , чтобы наверняка) , А GUID оставил прежним. Вот) и простите за орфографию

Вернуться к обсуждению:
Регистрация компонента на чистом с++ regsvr32 DllRegisterServer не найдена C/C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2015, 19:16
Готовые ответы и решения:

Точка входа DLLRegisterServer не найдена
проблема на Win7 Здравствуйте! была сначала проблема с gdiplus.dll программы не запускаются...

Модуль crypt32.dll загружен, но точка входа DllRegisterServer не найдена
Модуль crypt32 загружен, но точка входа DllRegisterServer не найдена. Проверьте, что crypt32...

Регистрация dll через regsvr32 ошибка 0х80004005
Делаю как положено, от админа через cmd, вызванный из powershell. Активировал администратора,...

Регистрация библиотек под администратором regsvr32 0x80070005
Доброго дня. Windiws Server 2012. Пользователь - Администратор с соответствующими...

4
22.04.2015, 19:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2015, 19:16
Помогаю со студенческими работами здесь

Модуль "msvcr100.dll" загружен , но точка входа DLLRegisterServer не найдена
Добрый день! Помогите решить проблему , которая на фотографии.. Пытаюсь решить уже 3-ий день ,...

Сообщение: "точка входа DllRegisterServer не найдена"
Добрый день! У меня при запуске программы CuneiForm v12 выскакивает ошибка &quot;Модуль &quot;comdlg32.dll&quot;...

Не найдена внешняя компонента
Добрый жалуется не найдена внешняя компонента ?!

Регистрация компонента COM
Начинаю осваивать COM. Язык программирования для компонента C++. Книгу для изучения &quot;выбрал&quot;...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru