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)
忘贴DLL了! 本帖最后由 pusofalse 于 2011-1-23 17:25 编辑
函数名称怎么都是小写字符啊,阅读起来有点麻烦。改过来就告诉你哪里出错了。 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) 这样可以了吗,P版? 本帖最后由 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", ..., ...)。 多谢P版,我先去试下! 两种都试过了!
au3在执行后,直接无响应,不知道为什么!麻烦P版试一下 $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]