Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Правильный путь к файлу Народ такая проблема.. есть код: 1 axWindowsMediaPlayer1->URL ="D:\\Programm\\Game_for_Sonja\\Cartoons\\Cartoon_1.mp4"; 2 axWindowsMediaPlayer1->Ctlcontrols->play(); все работает, но я сделаю прогу установочной Installer то есть адрес видео D:\\Programm\\Game_for_Sonja\\Cartoons\\Cartoon_1.mp4 после установки поменяется https://www.cyberforum.ru/ c-cpp/ thread2523064.html C/C++ Transpose SafeArray
Всем привет. Набросал функцию для транспонирования SafeArray (двухмерный), с любым типом данных. Вопрос знатокам: можно ли сделать эффективно, не прибегая к низкому уровню, к примеру, через VType или каким либо еще, отличным от представленного, методом? Ранее пробовал через switch(VType )... case VT... - много кода. Через преобразования типа указателя, опять же адресная арифметика. Вообщем,...
C/C++ Как убрать script error сообщения в СОМ объекте Internet Explorer? (ATL) https://www.cyberforum.ru/ c-cpp/ thread2493365.html
Создаю компонент браузера на форме, вида AtlAxWinInit(); hBrowser = CreateWindowEx(WS_EX_STATICEDGE, "AtlAxWin", "https://yandex.ru", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL , 0, 0, 0, 0, hWnd, (HMENU)IDC_BROWSER, GetModuleHandle(NULL), NULL);
C/C++ OLE для чайника Добрый день! Нужна помощь с работой с данными Excel. Работаю в Visual Studio C++. Нужно забирать данные из файла Excel в программу, производить различные вычисления и записывать их обратно. В интернете нашел, что это можно осуществить при помощи технологии OLE, но нигде не нашел понятного и полного объяснения работы с этой технологией и где ее брать. Подскажите, где брать эту информацию, или же... https://www.cyberforum.ru/ c-cpp/ thread2487980.html
C/C++ Программно работать с recent file list в PowerPoint
получить доступ к recent file list в PowerPoint. Нужна помощь
C/C++ Для чего эти бессмысленные строчки ? Изучаю написание драйверов для пользовательского режима Виндов. Для начала на малознакомом мне C++ (ранее писал только на чистом C, когда не на ассемблере) раз на нем пишут подобное, а потом может переведу на другой, более любимый язык когда все станет ясно что там к чему и почему. Вот такой фрагмент чужого образцово показательного драйвера меня удивил extern "C" BOOL WINAPI DllMain(HINSTANCE... https://www.cyberforum.ru/ c-cpp/ thread2479478.html
C/C++ #import библиотеки в зависимости от версии Excel Добрый день! В своём приложении экспортирую в Excel данные. Сейчас всё настроено под Excel 2013. #import "C:\\Program Files\\Common Files\\microsoft shared\\OFFICE15\\MSO.DLL" #import "C:\\Program Files\\Microsoft Office\\OFFICE15\\EXCEL.EXE" Как загрузить библиотеку в зависимости от версии Excel? Предварительно узнав версию, например в реестре. Для того, что бы можно было работать с... https://www.cyberforum.ru/ c-cpp/ thread2476940.html Возможно ли произвести безопасное извлечение USB? C/C++
В задании просится написать программу, которая может находить подключенные USB устройства и безопасно их отключать. Я искал такую возможность на Python 3 и C++, но ничего, кроме отключение самого порта, не находил. Нужно, чтобы происходило безопасное отключение USB устройства, но сам порт продолжал работать.
C/C++ Сканирование через WIA Всем привет, не могу понять в чем проблема, нужно сканировать изображение без каких либо диалоговых окон Windows 10, сканера два, оба canon, для проверки делал все прям как тут файл WiaScan.h #pragma once #include "wia_lh.h" #include "Wia.h" #include "combaseapi.h" #include <iostream> #include <QDebug> https://www.cyberforum.ru/ c-cpp/ thread2467190.html C/C++ Просмотрщики COM-объектов Привет. Подскажите, какие есть независимые (не встроенные в иде) просмотрщики COM-объектов и OLE-интерфейсов. https://www.cyberforum.ru/ c-cpp/ thread2447894.html
C/C++ Как программно определить Item параграфа Word?
vVarParagraphs.OleProcedure("Add"); создаю параграф, подскажите пожалуйста как программно определить его Item??? до этого параграфа есть и другие параграфы но они выше создаваемого мною при этом курсор находится в начале документа!!! Добавлено через 22 минуты int x = vVarParagraphs.OlePropertyGet("Count"); Добавлено через 46 секунд Нашёл, прошу прощение за беспокойство
C/C++ Внешняя компонента аналог QUSER https://www.cyberforum.ru/ c-cpp/ thread2427185.html
Всем привет. В 1С нужно получить список текущих пользователей и варианты подключения, в CMD есть такая команда QUSER она идеально подходит, но 1С-ка такое не может, может кто встречал внешнюю компоненту которой можно в 1С получить список аналогичный QUSER? Ну или может есть еще варианты?
90 / 88 / 33
Регистрация: 20.07.2016
Сообщений: 403
0

Петцольд OLE IMalloc - C/C++ - Ответ 13979422

10.11.2019, 00:14. Показов 20107. Ответов 2
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Пример из книги падает во время выполнения, компилятор пишет ересь. Падения происходит при попытке достучаться к любой услуге интерфейсов IUnknown или IMalloc.
О том что компилятор болеет - четко видно на приложенном скрине. pDAlloc не может быть nullptr, если б не удалось выделать память new бросил бы std::bad_alloc.

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
#ifndef IMALLOC_H
 
#define IMALLOC_H
 
#include <windows.h>
 
//======================================================================
#define EXPORT extern "C" __declspec(dllexport)
 
EXPORT LPMALLOC CreateAllocator ();
 
#undef INTERFACE
#define INTERFACE DAlloc
 
//======================================================================
DECLARE_INTERFACE_(DAlloc, IMalloc)
{
  // IUnknown
  STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppv);
  STDMETHOD_(ULONG, AddRef)(THIS);
  STDMETHOD_(ULONG, Release)(THIS);
 
  // IMalloc
  STDMETHOD_(void*, Alloc)(THIS_ ULONG cb);
  STDMETHOD_(void*, Realloc)(THIS_ void* pv, ULONG cb);
  STDMETHOD_(void, Free)(THIS_ void* pv);
  STDMETHOD_(ULONG, GetSize)(THIS_ void* pv);
  STDMETHOD_(int, DidAlloc)(THIS_ void* pv);
  STDMETHOD_(void, HeapMinimize)(THIS);
 
#ifndef CINTERFACE
  private:
    ULONG m_uiRefCnt = 0;
    HANDLE m_handle = nullptr;
 
  public:
    DAlloc () = default;
 
    bool Initialize ();
 
    ~DAlloc ();
#endif
};
 
//======================================================================
#endif
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
#include "IMalloc.h"
 
//======================================================================
EXPORT LPMALLOC CreateAllocator ()
{
  auto pDAlloc = new DAlloc();
  if (pDAlloc->Initialize())
    pDAlloc->AddRef();
  else
  {
    delete pDAlloc;
    pDAlloc = nullptr;
  }
  return reinterpret_cast<LPMALLOC>(pDAlloc);
}
 
//======================================================================
STDMETHODIMP DAlloc::QueryInterface (REFIID riid, LPVOID FAR* ppv)
{
  *ppv = nullptr;
 
  if (riid == IID_IUnknown)
    *ppv = reinterpret_cast<IUnknown*>(this);
  else if (riid == IID_IMalloc)
    *ppv = reinterpret_cast<IMalloc*>(this);
 
  if (*ppv)
  {
    AddRef();
    return S_OK;
  }
  return E_NOINTERFACE;
}
 
//======================================================================
STDMETHODIMP_(ULONG) DAlloc::AddRef ()
{ return ++m_uiRefCnt; }
 
//======================================================================
STDMETHODIMP_(ULONG) DAlloc::Release ()
{
  if (!--m_uiRefCnt)
  {
    delete this;
    return 0;
  }
  return m_uiRefCnt;
}
 
//======================================================================
STDMETHODIMP_(void*) DAlloc::Alloc (ULONG cb)
{ return HeapAlloc(m_handle, HEAP_ZERO_MEMORY, cb); }
 
//======================================================================
STDMETHODIMP_(void*) DAlloc::Realloc (void* pv, ULONG cb)
{ return HeapReAlloc(m_handle, HEAP_ZERO_MEMORY, pv, cb); }
 
//======================================================================
STDMETHODIMP_(void) DAlloc::Free (void* pv)
{ HeapFree(m_handle, 0, pv); }
 
//======================================================================
STDMETHODIMP_(ULONG) DAlloc::GetSize (void* pv)
{ return HeapSize(m_handle, 0, pv); }
 
//======================================================================
STDMETHODIMP_(int) DAlloc::DidAlloc (void* pv)
{
  PROCESS_HEAP_ENTRY phe;
  ZeroMemory(&phe, sizeof(phe));
 
  while (HeapWalk(m_handle, &phe))
    if (phe.lpData == pv)
      return true;
  return false;
}
 
//======================================================================
STDMETHODIMP_(void) DAlloc::HeapMinimize ()
{ HeapCompact(m_handle, 0); }
 
//======================================================================
bool DAlloc::Initialize ()
{
  m_handle = HeapCreate(0, 4096, 65535);
  return m_handle;
}
 
//======================================================================
DAlloc::~DAlloc ()
{
  if (m_handle)
    HeapDestroy(m_handle);
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "IMalloc.h"
 
//==================================================================================
int WINAPI WinMain (_In_     HINSTANCE,
                    _In_opt_ HINSTANCE,
                    _In_     LPSTR,
                    _In_     int)
{
  auto pMalloc = CreateAllocator();
 
  return 0;
}


Вернуться к обсуждению:
Петцольд OLE IMalloc C/C++
Миниатюры
Петцольд OLE IMalloc  
Вложения
Тип файла: rar OLE.rar (1.2 Кб, 3 просмотров)
0
Заказать работу у эксперта
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2019, 00:14
Готовые ответы и решения:

Помогите с IMalloc
В Visual Studio 2008 следующий код не работает: IMalloc *pMalloc; SHGetMalloc(&amp;pMalloc);...

Петцольд, первый пример из книги
Доброго времени суток. Только начал изучать WinApi, и уже возникли вопросы: как компилировать make...

Книга для новичка. Чарльз Петцольд или Адам Натан?
Чарльз Петцольд или Адам Натан? Для новичка. Добавлено через 11 минут Узнал про эти книги из...

Как увидеть содержание типа OLE Object с помощью Delphi-Ole Conteiner?
Привет всем, я из Болгарии у меня такой вопрос: я работю с MSAccess и в ней есть Table и Field с...

2
10.11.2019, 00:14
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2019, 00:14
Помогаю со студенческими работами здесь

Можно ли связанный (или внедренный) OLE объект прокрутить на форме в OLE контейнере?
Динамически связанный OLE объект (документ Word) не помещяется целиком в форме. Можно ли связанный...

Ошибка в ADO: Multi-step OLE-DB generated error. Check all OLE-DB status value, if available.No work was done'
Выполняю хранимую прогу cmd.Execute и получаю ошибку: 'Multi-step OLE-DB generated error. Check...

Произошли ошибки во время выполнения многошаговой операции OLE DB. По возможности, проверьте значения всех состояний OLE DB. Работа не выполнена
OleDbConnection cn = new OleDbConnection(&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot; +...

Создание OLE-сервера и OLE-документа
Господа Программисты!!! Просветите несведущего, пожалуйста. Нужно создать OLE-сервер, да такой,...

0
Новые блоги и статьи
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru