Как узнать платформу (32 или 64) библиотеки или приложения
Надо выполнить команду:
dumpbin /headers SciLexer.dllПрограмму DumpBin можно скачать с сайта Microsoft или здесь
Как компилировать проект из командной строки на C++ Builder
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat" MSBuild.exe /t:Build /p:Config=Release,Platform=Win64 "D:\Projects\Project1.cbproj" pause
Как подключить WebView2 на Rad Studio 11
Надо в самом RAD Studio запустить GetIt и добавить пакет 'EdgeView2 SDK'
Как отключить CodeInsight indexing в Rad Studio 11
Projects | Options | Building | C++ Compiler | LSP | all false
Как определить загрузку процессора
#include#include #include int GetCpuUsage() { static ULARGE_INTEGER TimeIdle, TimeKernel, TimeUser; FILETIME Idle, Kernel, User; ULARGE_INTEGER uIdle, uKernel, uUser; GetSystemTimes(&Idle, &Kernel, &User); memcpy(&uIdle, &Idle, sizeof(FILETIME)); memcpy(&uKernel, &Kernel, sizeof(FILETIME)); memcpy(&uUser, &User, sizeof(FILETIME)); long long t; t = (((((uKernel.QuadPart-TimeKernel.QuadPart)+(uUser.QuadPart-TimeUser.QuadPart))- (uIdle.QuadPart-TimeIdle.QuadPart))*(100))/((uKernel.QuadPart- TimeKernel.QuadPart)+(uUser.QuadPart-TimeUser.QuadPart))); TimeIdle.QuadPart = uIdle.QuadPart; TimeUser.QuadPart = uUser.QuadPart; TimeKernel.QuadPart = uKernel.QuadPart; return( static_cast (t) ); } int main(void) { setlocale(LC_ALL, "Rus"); system("mode 40, 4"); while( !GetAsyncKeyState(VK_END) ) { printf("Загрузка ЦП: %2d\r", GetCpuUsage()); Sleep(1600);/* Здесь установить по-частоте вашего процессора / 2. */ } return EXIT_SUCCESS; }
Как скомпилировать TChromium на C++ Builder XE
Для создание приложения со встроенным браузером понадобится Delphi и C++ Builder XE.
Исходники проекта Chromium Embedded Framework здесь.
Пример использования компоненты на Delphi на русском здесь.
Для компиляции в среде C++Builder необходимо скачать:
CEF4Delphi.zip - из этого архива нужно открыть проект Delphi (CEF4Delphi-master/packages/CEF4Delphi.dproj),
нажать правой кнопкой на CEF4Delphi в окне Project Manager. Сначала Build, как только закончится - Install
cef.zip - этот архив нужно будет поместить в папку скомпилированной программой (путь до проекта/Debug/Win32/)
Project1.zip - сам проект на C++ Builder - открыть и скомпилировать
Как выполнить любой запрос WMI на C++ Builder XE
#define _WIN32_DCOM #includeusing namespace std; #include #include //--------------------------------------------------------------------------- void GetWmiInfo(TStrings *lpList, wchar_t* wsQuery) { HRESULT hres; // устанавливаем контекст бехопасности hres = CoInitializeSecurity( NULL, -1, // COM authentication NULL, // Authentication services NULL, // Reserved RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation NULL, // Authentication info EOAC_NONE, // Additional capabilities NULL // Reserved ); IWbemLocator *pWbemLocator = NULL; // провайдер WMI // инициализируем провайдера if(CoCreateInstance(CLSID_WbemAdministrativeLocator, NULL, CLSCTX_INPROC_SERVER|CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&pWbemLocator) == S_OK) { IWbemServices *pWbemServices = NULL; // обьект, которому будем скармливать запрос (целевая машина) wchar_t* wsNamespace = (L"ROOT\\CIMV2"); // пространство имён // подключаемся к целевой машине if(pWbemLocator->ConnectServer(wsNamespace, NULL, NULL, NULL, 0, NULL, NULL, &pWbemServices) == S_OK){ IEnumWbemClassObject *pEnumClassObject = NULL; // энумератор записей wchar_t* wsWQL=(L"WQL"); // язык запросов WQL //wchar_t* wsQuery=(L"select * from WIN32_diskdrive");//+wsClass; // сам запрос к классу // выполняем запрос if(pWbemServices->ExecQuery(wsWQL, wsQuery, WBEM_FLAG_RETURN_IMMEDIATELY,NULL, &pEnumClassObject) == S_OK){ // параметры для перебора коллекции записей IWbemClassObject *pClassObject = NULL; ULONG uCount = 1, uReturned = 0; if(pEnumClassObject->Reset() == S_OK) { // ????????? int iEnumIdx = 0; hres = pEnumClassObject->Next(WBEM_INFINITE, uCount, &pClassObject, &uReturned); // перебираем колекцию while( hres == S_OK) { lpList->Add("---------------- ["+IntToStr(iEnumIdx)+"] -----------------"); SAFEARRAY *pvNames = NULL; if(pClassObject->GetNames(NULL, WBEM_FLAG_ALWAYS | WBEM_MASK_CONDITION_ORIGIN, NULL, &pvNames) == S_OK) { long vbl, vbu; SafeArrayGetLBound(pvNames, 1, &vbl); SafeArrayGetUBound(pvNames, 1, &vbu); for(long idx=vbl; idx<=vbu; idx++) { long aidx = idx; wchar_t *wsName = 0; VARIANT vValue; VariantInit(&vValue); SafeArrayGetElement(pvNames, &aidx, &wsName); BSTR bs = SysAllocString(wsName); HRESULT hRes = pClassObject->Get(bs, 0, &vValue, NULL, 0); SysFreeString(bs); if(hRes == S_OK) { AnsiString s; Variant v = *(Variant*)&vValue; if(v.IsArray()){ for(int i=v.ArrayLowBound(); i<=v.ArrayHighBound(); i++){ Variant a = v.GetElement(i); if(!s.IsEmpty()) s+=", "; s+=VarToStr(a); } } else { s = VarToStr(v); } lpList->Add(AnsiString(wsName)+"="+s); } VariantClear(&vValue); SysFreeString(wsName); } } if(pvNames)SafeArrayDestroy(pvNames); iEnumIdx++; hres = pEnumClassObject->Next(WBEM_INFINITE, uCount, &pClassObject, &uReturned); } // конец по WHILE if(hres != S_OK) lpList->Add((hres&0xFFFF)); } // конец по pEnumClassObject->Reset() if(pClassObject)pClassObject->Release(); } // конец по выполнению запроса if(pEnumClassObject)pEnumClassObject->Release(); } // конец по подключению if(pWbemServices)pWbemServices->Release(); } // конец инициализации провайдера if(pWbemLocator)pWbemLocator->Release(); } Memo1->Lines->Add("================== [WMI WQL] ================="); wchar_t* ss=(L"select * from WIN32_diskdrive"); // wchar_t* ss=(L"SELECT * FROM Win32_Process where name='notepad.exe'"); GetWmiInfo(Memo1->Lines, ss); Memo1->Lines->Add("");
здесь полный список всех таблиц Win32...