主窗体如何调用dll定义的函数和dll如何取得主窗体定义的公共变量(一个问题一百分决不食言)!!!! ( 积分: 200 )

  • 主题发起人 主题发起人 雨林18
  • 开始时间 开始时间

雨林18

Unregistered / Unconfirmed
GUEST, unregistred user!
主窗体的调用程序
function TForm1.Dllfrmshow(frm:integer;dllname:string):boolean;
var
DLLHandle: THandle;
DLLSub: InvokeDLLForm;
begin
DLLHandle :=LoadLibrary(PChar(extractfilepath(application.ExeName)+'dll/'+dllname));

if DLLHandle = 0 then
begin
showmessage('调入失败!');
exit;
end;

if DllHandle_rk[frm] = 0 then
begin

try
if DLLHandle <> 0 then
begin
DllHandle_rk[frm]:= DLLHandle;
@DLLSub := GetProcAddress(DLLHandle, 'CreateDLLForm');
if Assigned(DLLSub) then
DLLForm := DLLSub(Application, Screen);
end;
except
FreeLibrary(DLLHandle);
end;

end
else
exit;
end;


dll的程序


unit DLLFormUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls, DB, ADODB, Grids, DBGrids;
const MyMessage =wm_user+100;
type
TMyMessage=record
s1:pchar;
s2:pchar;
end;
type
basemsg=packed Record
puserid:string;
end;
TfrmDLLForm = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function openform(pbase:basemsg):Thandle;
function save:boolean;stdcall;

var
frmDLLForm: TfrmDLLForm;
aa:string;
implementation

uses Unit1;

{$R *.dfm}

function openform(pbase:basemsg):Thandle;
begin
showmessage(pbase.puserid);

end;



function save:boolean;stdcall;
begin
showmessage('保存!');
end;

end.
现在我在主窗体中如何调用dll中定义的save函数,而如果我在主窗体里定义一个公共变量dll程序里又如何取到这个变量!!等待高手解决问题,谢谢
 
我听说用传消息的方式可以调用和传变量但如何实现请高手指教!谢谢
 
主窗体调用dll函数的问题我已经自己解决了,现在还差一个“在主窗体里定义一个公共变量dll程序里又如何取到这个变量”的问题,我继续等待,这个问题200分!请专家解答谢谢!
 
>>(一个问题一百分决不食言)!!!!

没有了信用,说什么都不会有人相信。。。
 
to godelphi2004
本来老子不想理你这个践人的,你看看老子以前的贴,那个是达到我要的结果我不给分的,我操你你全家,老子也看了你回答的鸟问题全都是他妈冠冕堂皇的话骗积分的,更本就没有解决问题的建设性,你他妈吃饱饭没事干了吗,没事回家干你妈去!!!!

这是老子给分的证据,我操你你全家godelphi2004
http://www.delphibbs.com/delphibbs/listq.asp?type=2&amp;userfrom=雨林18

大家在看看这个欠操的人的回答记录,***全是费话没一点建设性,再奉劝你一句没事回家干你妈去
http://www.delphibbs.com/delphibbs/listq.asp?sort=6&amp;type=2&amp;expert=godelphi2004
 
本来不想骂你这头猪,原来你这头猪喜欢没事回家干你妈去!!!!

就你这素质趁早从这个论坛滚出去!!!!!!!!!
 
两个火气不要这么大嘛
 
帮顶一下,接个分
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3857050
 
to godelphi2004
看来昨晚你是回家干你妈上火了,所以火气那么大不会讲人话!难道你的嘴巴就是用来喷粪的吗?睁开你的屁眼看看老子哪个问题是回答出来后不给分的
http://www.delphibbs.com/delphibbs/listq.asp?type=2&amp;userfrom=雨林18

那些没给分的都是像你一样尽说一些没有建设性的话来赚分的都是一些屁话,怪不得的的嘴巴只会喷粪!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3815531
问题:delphi2007中编译的debug和release有啥区别? ( 积分:100, 回复:8, 阅读:77 )
分类:系统相关 ( 版主:luyear, zyy04 )
来自:ww990, 时间:2007-7-27 8:27:00, ID:3815531 [显示:小字体 | 大字体]

delphi2007中编译的debug和release有啥区别?能否像VC中执行不同的选项,可以在debug中设置调试信息?

来自:godelphi2004, 时间:2007-7-28 9:56:27, ID:3816063
OutputDebugString
屁话,***你的回答有个鸟用给你分的都是大脑有问题的


http://www.delphibbs.com/delphibbs/dispq.asp?lid=3574389
最近使用一个dll读取硬件的信息,在调用dll中的函数是出现了问题,请帮助!
int SDT_ReadBaseMsg (
int iPort,
unsigned char * pucCHMsg,
unsigned int * puiCHMsgLen,
unsigned char * pucPHMsg,
unsigned int * puiPHMsgLen,
int iIfOpen
);
参数说明:
iPort
[in] 整数,表示端口号。参见SDT_ResetSAM。
pucCHMsg
[out] 无符号字符指针,指向读到的文字信息。
puiCHMsgLen
[out] 无符号整型数指针,指向读到的文字信息长度。
pucPHMsg
[out] 无符号字符指针,指向读到的照片信息。
puiPHMsgLen
[out] 无符号整型数指针,指向读到的照片信息长度。
iIfOpen [in] 整数。
现在的问题就是对于无符号字符指针,不知道在d中如何使用。我不太了解!现在的情况如下:
如果我将无符号字符指针,声明为
TIDTextInfo = array[0..1023] of WideChar;
就可以获得信息,但是和人家文档的情况不一致!非常迷茫?如果是Pchar不行啊!还有这个需要分配内存吗?


下面是我的声明部分:
function HS_SDT_ReadBaseMsg(iPort:integer;
var pucCHMsg:TIDTextInfo; var puiCHMsgLen:word;
var pucPHMsg:TIDTextInfo; var puiPHMsgLen:word;
iIfOpen:integer):integer stdcall;
implementation
function HS_SDT_ReadBaseMsg; external 'sdtapi.dll' name 'SDT_ReadBaseMsg';

来自:godelphi2004, 时间:2006-9-17 12:46:04, ID:3574404
就是用PChar,你用的不对,要自己先分配内存的

鸟话,你他妈什么时候给人家过实质性的帮助,说一些鸟话赚分,有本事就帮人家解决实质性的问题,不要老在这喷粪,还有很多我都懒得看了,在这里提问都是想要些真正解决问题的人来回答不是要你这头猪老在这喷粪!!!滚回你家干你妈去!
 
大家到这来的目的,都是想解决问题,何必动气呢!!
 
帮顶一下
 
后退
顶部