应该是可以的,我做过类似的工作,我那时是把一个session作为参数传入DLL,
同时应该把主窗体的HANDLE也要传入,或其他要用的HANDLE传入,DLL设定一个PARENT, 这个需要好好研究一下
同时应该把主窗体的HANDLE也要传入,或其他要用的HANDLE传入,DLL设定一个PARENT, 这个需要好好研究一下
解决方案 »
- TApplication TScreen DLL大讨论[散分]
- 哪里有比较全的消息类型介绍?
- 某些网站是如何检查来路的?idhttp被限制了
- 如何捕获 WM_MDIMAXIMIZE 的事件??????
- 数据插入的奇怪问题
- 用ClientDataSet更新数据表,怎样自动生成行号?
- [Image画图]小尺寸画过后,再大尺寸画只能显示刚才小尺寸范围内的图形,先大尺寸画过后大小尺寸都能画。何解?
- 进者有分,急 在线等!!!!!
- OleContainer word 打印预览 问题 急!急!
- 请教个问题,indytcpclient已经连接上了tcpserver,tcpserver能否主动发信息给client?
- 怎样更快的忘记一个人?
- 誰用過IDSMTP發送郵件?請進來一下.
然后遍历该form上的控件 如果是TEdit 则读出其text值个人认为还是把dll的通用性做的强一些的好
uses
SysUtils,
Classes,
DllUnit in 'DllUnit.pas';exports
ShowEdit;{$R *.res}begin
end.
---------------------------
DllUnit.pas代码unit DllUnit;interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;procedure ShowEdit(Form:TForm);export;
implementation
procedure ShowEdit(Form:TForm);
var i:integer;
CmpTemp:TComponent;
begin
for i:=0 to Form.ComponentCount-1 do
begin
CmpTemp:=Form.Components[i];
//showmessage(CmpTemp.Name);
if (CmpTemp.ClassName='TEdit') then
Showmessage((CmpTemp as TEdit).Text);
end;
end;
end.-------------------------------------
调用程序的代码
unit ClientFrm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
procedure ShowEdit(Form:TForm);external 'DllDemo.dll'
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ShowEdit(Form1);
end;end.运行调用程序的时候,出现错误:Exception EInvalidCast in module DllDemo.dll at 00058A88.
请大家帮忙解决啊
可时关闭的时候,内存地址错,
留下你的email,我发给你,看看我们一不一样
谢谢,非常感谢
改为Showmessage(TEdit(CmpTemp).Text);
不能调用非虚方法