找回密码
 加入
搜索
查看: 4592|回复: 8

[网络通信] VNCDLL.DLL调用出错,麻烦高手相助!

  [复制链接]
发表于 2011-1-23 17:08:42 | 显示全部楼层 |阅读模式
这是delphi的代码
函数,导出函数:
//控制端函数
int PASCAL Listening(int port); 
参数:
  port需要监听的端口
//被控端函数
int PASCAL ConnectServer(char msg[30],int port,int myport);
参数:
msg 控制端的ip地址
port 控制端的端口
myport 被控端自己的端口,默认用0,让系统用随机端口

delphi调用例子:

implementation
 Function Listening(port:integer):integer;stdcall; External 'VncDll.dll';
 Function ConnectServer(msg:pchar;port:integer;myport:integer):integer;stdcall; External 'VncDll.dll';
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//自己控制自己试试
Listening(4444);
ConnectServer('127.0.0.1',4444,0);
end;
这是AU3的,请问哪个环节出错了!
dim $port=3000
dllcall("vncdll.dll","int","Listening","int",$port)

dim $msg="127.0.0.1",$tmsg
dim $port=3000,$myport=0
$tmsg = dllstructcreate("pchar[30]")
dllstructsetdata($tmsg,1,$msg)
dllcall("vncdll.dll","int","ConnectServer","ptr",dllstructgetptr($tmsg),"int",$port,"int",$myport)
 楼主| 发表于 2011-1-23 17:12:08 | 显示全部楼层
忘贴DLL了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-1-23 17:24:18 | 显示全部楼层
本帖最后由 pusofalse 于 2011-1-23 17:25 编辑

函数名称怎么都是小写字符啊,阅读起来有点麻烦。改过来就告诉你哪里出错了。
 楼主| 发表于 2011-1-23 19:31:24 | 显示全部楼层
Dim $port=3000

DllCall("vncdll.dll","int","Listening","int",$port)



Dim $msg="127.0.0.1",$tmsg

Dim $port=3000,$myport=0

$tmsg = dllstructcreate("pchar[30]")

DllStructSetData($tmsg,1,$msg)

DllCall("vncdll.dll","int","ConnectServer","ptr",DllStructGetPtr($tmsg),"int",$port,"int",$myport)
 楼主| 发表于 2011-1-23 19:31:37 | 显示全部楼层
这样可以了吗,P版?
发表于 2011-1-23 20:02:27 | 显示全部楼层
本帖最后由 pusofalse 于 2011-1-23 20:04 编辑

回复 4# 6FINGERS

还有一句都是小写,不过算了。

DllStructCreate那里,结构错了,au3中没有pchar类型的数据,或者这只是你的笔误,应该改成char[30]。
DllStructCreate("char[30]")
DllStructCreate("char pchar[30]")
DllStructCreate("char XXX[30]")
以上3句都是对的,第2句的pchar和第3句中的XXX只是用作结构中成员的名称,可以省去。

其他地方都对了。
或者你也可以不必手动调用DllStructCreate创建char型结构,直接在DllCall中使用"str"来代替"ptr"就行了,如果使用"str",其后的参数不能再是DllStructGetPtr($tmsg),应该直接传递$msg变量或字符串"127.0.0.1",比如DllCall("vncdll.dll", "int", "ConnectServer", "str", "127.0.0.1", ..., ...)。
 楼主| 发表于 2011-1-23 20:40:53 | 显示全部楼层
多谢P版,我先去试下!
 楼主| 发表于 2011-1-23 20:50:14 | 显示全部楼层
两种都试过了!
au3在执行后,直接无响应,不知道为什么!麻烦P版试一下
发表于 2011-1-28 18:04:29 | 显示全部楼层
$dll=@ScriptDir&"\VncDll.dll"
Func _ConnectServer($IpAddr,$Port,$MyPort)
                MsgBox(0,@error,"eun")
        $Stru=DllStructCreate("char msg[30]")
        DllStructSetData($Stru,"msg",$IpAddr)
        DllStructGetPtr($Stru,"msg")

        $re1=DllCall($dll,"int","Listening","int",$Port)
                MsgBox(0,@error,"server")
        $re=DllCall($dll, "int", "ConnectServer", "char",DllStructGetPtr($Stru,"msg"),"int",$Port,"int",$MyPort)
                MsgBox(0,@error,"client")

        
EndFunc

_ConnectServer("192.168.1.100",12035,0)
我调用也是一样,共享的人或许无意提供正确的使用方法!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-16 16:35 , Processed in 0.084513 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表