dll登录窗体,主窗体隐藏,成功登录后显示,给大家看看代码,有没有问题。
有几个问题需要确认一下:
1、dll里面的关闭必须用terminate(),不然主窗体隐藏后需要任务管理器关闭,是不是这样?
2、在主程序的OnCreate里面使form隐藏,如果dll窗体里面直接terminate(),主窗体不会闪烁。Application->ShowMainForm = false;
好像不用放到project文件里面。 对不对?
3、我最关心的一个问题:dll窗体的那个frmAdded返回值的返回方法对不对,主程序取它的值方法对不对?
谢谢!
这是主窗体unit1.cpp
这是unit1.h
1、dll里面的关闭必须用terminate(),不然主窗体隐藏后需要任务管理器关闭,是不是这样?
2、在主程序的OnCreate里面使form隐藏,如果dll窗体里面直接terminate(),主窗体不会闪烁。Application->ShowMainForm = false;
好像不用放到project文件里面。 对不对?
3、我最关心的一个问题:dll窗体的那个frmAdded返回值的返回方法对不对,主程序取它的值方法对不对?
谢谢!
这是主窗体unit1.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->ShowMainForm = false;
bool addedOK=false;
addedOK=RunExFile("dll1.dll","go");
if(addedOK)
{
Application->ShowMainForm = true;
}
}
//---------------------------------------------------------------------------
bool __fastcall TForm1::RunExFile(char * dllname, char * user) // 外部扩充调用
{ /* 入口格式:调用dll文件名,传递用户名 */
bool OK;
if(FileExists(dllname))
{
boolean PrevValue = IsLibrary; //C++ Builder - Exception 'Need call dxFinalizeGDIPlus before free library!' when using DX components in a DLL
hInstance=LoadLibrary(dllname);
if(hInstance)
{
(FARPROC &) DllWin=GetProcAddress(hInstance,"DllWin");
if(DllWin)
{
OK=DllWin(user);
}
else
{
ShowMessage(" 不能找到函数入口,请重新安装本程序。");
}
}
else
{
ShowMessage("不能载入DLL文件,请重新安装本程序。");
}
FreeLibrary(hInstance);
IsLibrary = PrevValue; //C++ Builder - Exception 'Need call dxFinalizeGDIPlus before free library!' when using DX components in a DLL
}
else
{
ShowMessage(" 相应模块文件丢失,请重新安装本程序。");
}
return OK;
}
//---------------------------------------------------------------------------这是unit1.h
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
HINSTANCE hInstance;// DLL接口
bool __fastcall RunExFile(char * dllname, char * user); // 外部扩充调用
bool (_stdcall * DllWin)(char * user);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
...全文
相关推荐
解决 Windows 无法显示隐藏文件夹的问题
#### 五、总结通过上述步骤,大多数用户应该能够成功解决Windows XP/2000/2003下无法显示隐藏文件夹的问题。
WinForm UI模板化开发:从窗体基类到控件自绘的完整实践
桌面应用开发中,原生控件样式老旧、窗体缩放布局错乱、跨线程更新界面卡顿是高频痛点。通过理解控件自绘(OwnerDraw)与DPI感知机制,可以构建一套可复用的UI基础设施。本文从分层架构、主题系统、线程安全UI更新等原理切入,阐述如何将界面层从业务逻辑中解耦,实现高效封装与批量复用。该方案适用于上位机软件、管理信息系统等场景,能显著缓解WinForm界面卡顿、窗体缩放尺寸异常等常见问题。围绕控件美化、布局适配与异步更新,最终沉淀为一套开箱即用的模板,帮助开发者快速交付专业且稳定的桌面应用界面。
首次執行Outlook 2007時出現登錄,登錄 VB Script. DLL 失敗
总之,解决“登录VB Script.DLL失败”这个问题的关键在于确保Windows系统设置与Office 2007的语言版本一致。
隐藏DLL进程的实例(用于木马后果自负)
隐藏DLL进程的后果非常严重,可能导致:- **数据泄露**:恶意DLL可以窃取用户敏感信息,如登录凭证、银行信息等。- **系统稳定性受损**:恶意代码可能破坏系统稳定性,导致频繁崩溃或性能下降。
几个源代码解决了自己的DLL问题,收藏
“DLL封装登录框架实现代码复用源码.rar”可能包含了一个可复用的登录框架,该框架将登录功能封装到一个独立的DLL中。这样可以减少主程序的复杂性,并且可以在多个项目中重用。


ActiveX/COM/DCOM
