6FINGERS 发表于 2011-1-23 17:08:42

VNCDLL.DLL调用出错,麻烦高手相助!

这是delphi的代码函数,导出函数:
//控制端函数
int PASCAL Listening(int port);
参数:
port需要监听的端口
//被控端函数
int PASCAL ConnectServer(char msg,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")
dllstructsetdata($tmsg,1,$msg)
dllcall("vncdll.dll","int","ConnectServer","ptr",dllstructgetptr($tmsg),"int",$port,"int",$myport)



6FINGERS 发表于 2011-1-23 17:12:08

忘贴DLL了!

pusofalse 发表于 2011-1-23 17:24:18

本帖最后由 pusofalse 于 2011-1-23 17:25 编辑

函数名称怎么都是小写字符啊,阅读起来有点麻烦。改过来就告诉你哪里出错了。

6FINGERS 发表于 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")

DllStructSetData($tmsg,1,$msg)

DllCall("vncdll.dll","int","ConnectServer","ptr",DllStructGetPtr($tmsg),"int",$port,"int",$myport)

6FINGERS 发表于 2011-1-23 19:31:37

这样可以了吗,P版?

pusofalse 发表于 2011-1-23 20:02:27

本帖最后由 pusofalse 于 2011-1-23 20:04 编辑

回复 4# 6FINGERS

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

DllStructCreate那里,结构错了,au3中没有pchar类型的数据,或者这只是你的笔误,应该改成char。
DllStructCreate("char")
DllStructCreate("char pchar")
DllStructCreate("char XXX")
以上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", ..., ...)。

6FINGERS 发表于 2011-1-23 20:40:53

多谢P版,我先去试下!

6FINGERS 发表于 2011-1-23 20:50:14

两种都试过了!
au3在执行后,直接无响应,不知道为什么!麻烦P版试一下

cutyourchicken 发表于 2011-1-28 18:04:29

$dll=@ScriptDir&"\VncDll.dll"
Func _ConnectServer($IpAddr,$Port,$MyPort)
                MsgBox(0,@error,"eun")
        $Stru=DllStructCreate("char msg")
        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)我调用也是一样,共享的人或许无意提供正确的使用方法!
页: [1]
查看完整版本: VNCDLL.DLL调用出错,麻烦高手相助!