|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2004/5/25 9:38:26 |
标题: |
谁纠正一下我的错误,感激不尽!!!! |
浏览:1123 |
|
加入我的收藏 |
楼主: |
初学Delphi,学着人家写了一个远程屏幕截取程序,编译生成可执行文件很顺利,但运行程序的时候告诉我:''is not a void Integer value .我都要死掉了,恳请高手指教一下,不胜感激!!下边是我写的蹩脚的程序: 被截取屏幕的计算机端: procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var m1:tmemorystream; shale,s:String; desk:tcanvas; bitmap:tbitmap; jpg:tjpegimage; begin shale:=Socket.ReceiveText; if shale[1]='1' then//当收到另一端发来的信号后开始截图 begin try m1:=tmemorystream.Create; bitmap:=tbitmap.Create; jpg:=tjpegimage.Create; desk:=tcanvas.Create; //以下代码为取得当前屏幕图象 desk.Handle:=getdc(hwnd_desktop); with bitmap do begin width:=screen.Width; height:=screen.Height; canvas.CopyRect(canvas.cliprect,desk,desk.cliprect); end; jpg.Assign(bitmap); //file ://将图象转成JPG格式 jpg.CompressionQuality:=10;//文件压缩大小设置 //m1.clear; jpg.SaveToStream(m1); //file ://将JPG图象写入流中 jpg.free; m1.Position:=0; s:=inttostr(m1.size); Socket.sendtext(s); //file ://发送图象大小 finally bitmap.free; desk.free; end; end else if shale='okok' then //file ://客户端已准备好接收图象 begin m1.Position:=0; Socket.SendStream(m1); //file ://发送JPG图象 end; end; 接收图象端: procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var m:tmemorystream; buffer:array [0..50000] of byte; //设置接收缓冲区 len:integer; ll:string; j:tjpegimage; begin if c=0 then //C为截图端发送的字节数,全局变量,如果为0表示为尚未开始接收 begin m:=TMemorystream.Create; //建立内存流 ll:=socket.ReceiveText; c:=strtoint(ll); //设置需接收的字节数 Serversocket1.Socket.SendText('okok'); //通知服务端开始发送图象 end else begin //以下为图象数据接收部分 len:=socket.ReceiveLength; //读出包长度 socket.ReceiveBuf(buffer,len); //接收数据包并读入缓冲区内 m.Write(buffer,len); //追加入流M中 if m.Size>=c then //如果流长度大于需接收的字节数,则接收完毕 begin m.Position:=0; j:=tjpegimage.Create; try j.LoadFromStream(m); //将流M中的数据读至JPG图像对象J中 j.SaveToFile('d:\yuan.jpg'); finally //以下为清除工作 j.free; m.Free; c:=0; end; end; end; end;
望高人指点迷津!!!!!!!!!
----------------------------------------------
wubiao |
作者: |
|
2004/5/25 11:26:30 |
2楼: |
先谢谢你!
但是,我还是没搞定,很菜吧,我也是这么认为的。唉! 错误是:socket 没有连接并用sendto发送的时候没有提供地址………… 不可能,我原来用过那个socket来连接聊天的,然后再在聊天的基础上加上远程屏幕截图功能的,为什么不行呢?是不是应该用serversocket在被截图端发送图象流,而用clientsocket接收图象。我是不是因为弄反了,所以不行?
再麻烦你一下了,我也没办法了。
----------------------------------------------
wubiao
|
作者: |
|
2004/5/25 11:31:21 |
3楼: |
快来救我!~@.@~
----------------------------------------------
wubiao
|
作者: |
|
2004/5/25 11:33:42 |
4楼: |
为这个错误,作为菜鸟的我已经搞了两天了,现在很憔悴!
----------------------------------------------
wubiao
|
作者: |
|
2004/5/25 13:07:12 |
6楼: |
谢了!我再看看,还不行的话,就不再麻烦你了,只能说浪费你的时间了。
----------------------------------------------
wubiao
|
|