# PB **Repository Path**: tlhelen_admin/PB ## Basic Information - **Project Name**: PB - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-24 - **Last Updated**: 2024-08-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README PB(PBox) ============= # PB(PBox) is a modular development platform based on DLL Window - [简体中文](readmeCN.md) ## I. Development purpose Based on the principle of minimizing or not modifying the original project source code(Delphi、VC、QT); Support Delphi DLL Form、VC DLL Window(Dialog/MFC)、QT DLL Window; ## II. Development platform Delphi11.3、WIN10X64; WIN10X64 test pass;Support X86、X64; Email:dbyoung@sina.com; QQgrp:101611228; ## III.Usage ### Delphi: * Delphi original exe project, modified to DLL project. Output export function, the original code without any modification; * Put the compiled DLL file in the plugins directory; * Example: modules\CurlUI; * Example: modules\sPath; * Example: modules\pm; * Delphi function declaration: ``` procedure db_ShowDllForm_Plugins(var frm: TFormClass; var strParentModuleName, strSubModuleName: PAnsiChar); stdcall; ``` ### VC2022 * Convert VC window exe to DLL for calling by other languages: [https://blog.csdn.net/dbyoung/article/details/103987103] * VC original EXE(base on Dialog) project,without any modifitication。new a dll.cpp file,output export function; * VC original EXE(base on MFC) project,need a little modify code; * Put the compiled DLL file in the plugins directory; * Example(base on Dialog):modules\7-zip * Example(base on Dialog):modules\Notepad2; * Example(base on MFC):modules\mpc-be; * VC2022 function declaration: ``` enum TLangStyle {lsDelphiDll, lsVCDLGDll, lsVCMFCDll, lsQTDll, lsEXE}; extern "C" __declspec(dllexport) void db_ShowDllForm_Plugins(TLangStyle* lsFileType, char** strParentName, char** strSubModuleName, char** strClassName, char** strWindowName, const bool show = false) ``` ### QT * QT original EXE,without any modifitication。Compile to exe; * New a dll.cpp file,output export function; together compile to dll; * Put the compiled DLL file in the plugins directory; * Same as VC Dialog DLL; * Example:modules\cmake-gui; * Example:modules\qBittorrent; * function declaration: ``` enum TLangStyle {lsDelphiDll, lsVCDLGDll, lsVCMFCDll, lsQTDll, lsEXE}; extern "C" __declspec(dllexport) void db_ShowDllForm_Plugins(TLangStyle* lsFileType, char** strParentName, char** strSubModuleName, char** strClassName, char** strWindowName, const bool show = false) ``` ## IV: Description of DLL output function parameters * Delphi : ``` procedure db_ShowDllForm_Plugins(var frm: TFormClass; var strParentModuleName, strSubModuleName: PAnsiChar); stdcall; frm :DLL main window class name in Delphi; strParentModuleName :Parent module name; strSubModuleName :Sub module name; ``` * VC2022/QT : ``` extern "C" __declspec(dllexport) void db_ShowDllForm_Plugins(TLangStyle* lsFileType, char** strParentName, char** strSubModuleName, char** strClassName, char** strWindowName, const bool show = false) lsFileType :Base on Dialog DLL,or base MFC DLL or QT DLL; strParentName :Parent module name; strSubModuleName :Sub module name; strClassName :DLL Main window class name; strWindowName :DLL Main window title name; show :show/hide DLL main window; ``` ## V. Features The UI supports menu display, button (dialog box) display and list view display; Supports the display of an EXE window program in our window; Support the EXE program of dynamic change of window class name;support multiple document windows; Support file drag and drop to exe and DLL window; Support x86 EXE call x64 EXE, x64 EXE call x86 EXE; ## VI. Known bugs: 1. File drag and drop can only be dragged and dropped to the main window, not directly to the sub module DLL window; This is a problem caused by permissions (resource manager is normal permissions and pbox is administrator permissions); ## VII. Next work: Add database support (because I am not familiar with the database, the development is slow, and it is developed in my spare time) ## VIII. Notice: 1. If you run the JavaCV、dbVideo module under PBox (x64), you need to unzip "Win64\plugins\SDK\OpenCV\4.6.0\bin\CUDA.7z" to current directory; 2. OpenCV(x64) is building on CUDA SDK. if your pc not NVIDIA Video Card, you can't run JavaCV、dbVideo x64 module; 3. because init Java VM, Delphi IDE raise: c0000005 ACCESS_VIOLATION. you can "Ignore this exception type", next time is not tips;