社区
C++ Builder
帖子详情
紧急求救:dll和它的调用者之间通信 如何实现?
leonatcs
2003-08-05 03:18:23
各位老大,
我用bcb编一个lockpc.dll文件,旨在显示一个要求用户输密码的对话框,
再编delphi程序来调用它,(不要骂我有病,我也是无奈),
可是调用者程序需要知道用户在被调用的对话框里输的密码是什么,
怎样实现这两者之间的通信呢?
请具体地说说如何编,先在这儿谢过了。
...全文
42
13
打赏
收藏
紧急求救:dll和它的调用者之间通信 如何实现?
各位老大, 我用bcb编一个lockpc.dll文件,旨在显示一个要求用户输密码的对话框, 再编delphi程序来调用它,(不要骂我有病,我也是无奈), 可是调用者程序需要知道用户在被调用的对话框里输的密码是什么, 怎样实现这两者之间的通信呢? 请具体地说说如何编,先在这儿谢过了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
leonatcs
2003-08-05
打赏
举报
回复
我的50分啊!!!
呵呵。
leonatcs
2003-08-05
打赏
举报
回复
呵呵,我也到下班时间了,可是这问题搞不定,吃完饭又回来继续加班了。
//你在LockForm里面验证密码啊!
LockForm是bcb编写的lockpc.dll文件中的窗体,含有一个钩子,用来勾住alt+tab, alt+esc, crtl+esc, lwin和rwin。验证密码需要访问数据库,那边都是delphi编的,
而且已经编好了,在LockForm里验证是不可能了。
//如果你不想在LockForm里面验证密码,你可以在外面的调用程序处检查。
老大,我知道你的意思,
是调用者程序不断地询问被调用者,
这个方法我已开始就想到,但是我希望可以像“外设和主机通信”中的“中断”一样
有情况时被调用者发出中断请求,而不是像“程序查询”一样让调用者程序不断询问。
最后我避开了这个问题,不使用lockform,只把实现锁组合键功能的钩子留在dll里,
由调用者自己决定何时用它锁住组合键,何时放开。
谢谢你为我回答那么多!
netsys2
2003-08-05
打赏
举报
回复
下班了!
netsys2
2003-08-05
打赏
举报
回复
你在LockForm里面验证密码啊!
用户输入完成后敲回车,你就检查密码。
如果你不想在LockForm里面验证密码,你可以在外面的调用程序处检查。
如果不对再来一次!
//调用者
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char pass[80];
bool ret;
for(;;)
{
ret = getPass(pass);
if( ret == false )//用户取消输入
break;
if(!strcmp(pass,"1233"))//正确
break;
}
leonatcs
2003-08-05
打赏
举报
回复
如果这样:
bool getPass(char *pass)
{
LockForm->ShowModal();
strcpy(pass,Edit1->Text.c_str());
return true;
//or return false;
}
我的程序是需要验证用户输入的密码,正确才关闭LockForm,如果执行到了 strcpy(pass,Edit1->Text.c_str()); 说明LockForm已经关闭了,可是我还没有验证密码呢。
netsys2
2003-08-05
打赏
举报
回复
//这里是不是应该sleep()一下?
不能!
用ShowModal()
TMyInputBox* a = new TMyInputBox(Application);
try{
a->ShowModal();
}
catch(...){
delete a;
throw;
}
delete a;
leonatcs
2003-08-05
打赏
举报
回复
//------------------------------
bcb的指针和delphi的指针能匹配吗?
sure!
只有VB不匹配!
//------------------------------
呵呵,说的也是。
我想,
bool getPass(char *pass)
{
LockForm->Show();
//这里是不是应该sleep()一下?直到用户按“确定”,被唤醒再继续,可是这只有在学校学操作系统时讲过,太难,不会实际使用。
strcpy(pass,Edit1->Text.c_str());
return true;
//or return false;
}
leonatcs
2003-08-05
打赏
举报
回复
bool getPass(char *pass)
{
LockForm->Show();
//用户输入PASS
strcpy(pass,Edit1->Text.c_str());
return true;
//or return false;
}
用户还没输入时,就接着执行strcpy(pass,Edit1->Text.c_str());了呀。
netsys2
2003-08-05
打赏
举报
回复
bcb的指针和delphi的指针能匹配吗?
sure!
只有VB不匹配!
leonatcs
2003-08-05
打赏
举报
回复
还有,如你所说得xx(char*pass),
bcb的指针和delphi的指针能匹配吗?
netsys2
2003-08-05
打赏
举报
回复
你的DLL里弄一个标准出口函数嘛,调用完不就自动返回了!
// DLL
bool getPass(char *pass)
{
//打开一个对话框
//用户输入PASS
strcpy(pass,Edit1->Text.c_str());
return true;
//or return false;
}
//---------------------------------------------------------------------------
//掉用者
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char pass[80];
bool ret = getPass(pass);
....
}
leonatcs
2003-08-05
打赏
举报
回复
可是当用户输入完毕按回车后,需要及时通知调用者程序“我有参数传递给你”,
这如何做到呢?
netsys2
2003-08-05
打赏
举报
回复
用参数传递吧!
你的函数中增加一个参数
xx(char *pass);
紧急
求救
!那位大哥帮我看看这个程序,注解详细一点!我把分数全部个他!
我们是一家做
通信
收费系统的。我刚进公司,经理让我看看这些源代码,顺便给加上注释!郁闷,以前没有用过!编译平台是:C++Builder6。---------------------------------------------------------------------------...
CSDN回帖得分大全(近两年)
√vs2005调用
dll
的时候Initialize()函数返回错误 [VC/MFC 基础类] 40 ylongwu 05-21 20:486 ylongwu06-28 13:42管理√为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] 40 ...
我在CSDN参与的3000个帖子
今日偶然翻到,感慨万千 1:申述:版主,是否扣了我的专家分... 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,常用软件、游戏、精美图库下载,希望对网友有帮助!顺便散分! 6:VBA请教怎
基础
各位兄弟,在SDK编程中如果
实现
窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?高分请教如何限制程序运行的方法?求助:通过编程DirectX抓屏-----...
基于WebGIS的车联网平台的研究与应用
)等的互联互通,
实现
车辆自组网及多种异构网络
之间
的
通信
与漫游,在功能和性能上保障实时性、可服务性与网络泛在性,同时它是公网与专网的统一体。 第三层(云系统):车联网是一个云架构的车辆运行信息平台,它...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章