本程序思路是通过定时截取屏幕图形,来作为被控端。源码如下所示 code: option explicitprivate type bitmap bmtype as long bmwidth as long bmheight as long bmwidthbytes as long bmplanes as integer bmbitspixel as integer bmbits as longend typeprivate declare function getobj lib \"gdi32\" alias \"getobjecta\" (byval hobject as long, byval ncount as long, lpobject as any) as longprivate declare function getdesktopwindow lib \"user32\" () as longprivate declare function getdc lib \"user32\" (byval hwnd as long) as longprivate declare function releasedc lib \"user32\" (byval hwnd as long, byval hdc as long) as longprivate declare function bitblt lib \"gdi32\" (byval hdestdc as long, byval x as long, byval y as long, byval nwidth as long, byval nheight as long, byval hsrcdc as long, byvalxsrc as long, byval ysrc as long, byval dwrop as long) as longprivate declare sub copymemory lib \"kernel32\" alias \"rtlmovememory\" (destination as any, source as any, byval length as long)private declare function getbitmapbits lib \"gdi32\" (byval hbitmap as long, byval dwcount as long, lpbits as any) as longprivate declare function setbitmapbits lib \"gdi32\" (byval hbitmap as long, byval dwcount as long, lpbits as any) as longprivate declare function createcompatiblebitmap lib \"gdi32\" (byval hdc as long, byval nwidth as long, byval nheight as long) as longprivate declare function createcompatibledc lib \"gdi32\" (byval hdc as long) as longprivate declare function selectobject lib \"gdi32\" (byval hdc as long, byval hobject as long) as longprivate declare function deletedc lib \"gdi32\" (byval hdc as long) as longprivate declare function deleteobject lib \"gdi32\" (byval hobject as long) as longprivate myhdc1 as long, mybmp1 as long, myoldbmp1 as long, scrw as long, scrh as longprivate startt as singleprivate sub form_load()dim bm as bitmap, bmpsize as longtimer1.enabled = false '间隔时间获取图形me.scalemode = 3scrw = screen.width \ screen.twipsperpixelxscrh = screen.height \ screen.twipsperpixely'这只是方便调试的示例,实用程序中,不用临时dc,可直接取窗体的bmp,会快一些myhdc1 = createcompatibledc(frmclient.hdc)mybmp1 = createcompatiblebitmap(frmclient.hdc, scrw, scrh)myoldbmp1 = selectobject(myhdc1, mybmp1)'ws2为winsock控件,用于发送数据 'ws2.remotehost = inputbox(\"请输入远程服务器ip地址\", \"远程监控测试\", \"127.0.0.1\")'ws2.remoteport = 2345'ws2.connecttimer1.interval = 10000timer1.enabled = trueend subprivate sub form_unload(cancel as integer)'ws2.closeselectobject myhdc1, myoldbmp1deleteobject mybmp1deletedc myhdc1end subprivate sub timer1_timer()dim i as long, d as long, b as long, bm as bitmap, dat() as byte, bmpsize as longstartt = timerd = getdesktopwindowi = getdc(d)bitblt myhdc1, 0, 0, scrw, scrh, i, 0, 0, vbsrccopyreleasedc d, igetobj mybmp1, len(bm), bmbmpsize = bm.bmwidthbytes * bm.bmheightredim dat(bmpsize - 1)getbitmapbits mybmp1, bmpsize, dat(0)redim preserve dat(bmpsize + 1)dat(bmpsize) = 13dat(bmpsize + 1) = 10'startt = timer'ws2.senddata datdebug.print dat 'dat为获取到的屏幕图形数据end subprivate sub ws2_close()statu *** ar1.simpletext = ws2.remotehost & \" disconnected..\"ws2.closeend subprivate sub ws2_connect()statu *** ar1.simpletext = ws2.remotehost & \" connected..\"end subprivate sub ws2_error(byval number as integer, description as string, byval scode as long, byval source as string, byval helpfile as string, byval helpcontext as long, canceldisplay as boolean)on error resume nextstatu *** ar1.simpletext = ws2.remotehost & \" error : \" & descriptionws2.closeend sub'============================================================='项目名称: server (远程屏幕监控端)'窗口名称: frmserver'winsock控件:ws1'statu *** ar控件:statu *** ar1 (注意:statu *** ar1.style = *** rsimple)'=============================================================option explicitprivate type bitmap bmtype as long bmwidth as long bmheight as long bmwidthbytes as long bmplanes as integer bmbitspixel as integer bmbits as longend typeprivate declare function getobj lib \"gdi32\" alias \"getobjecta\" (byval hobject as long, byval ncount as long, lpobject as any) as longprivate declare function getdesktopwindow lib \"user32\" () as longprivate declare function getdc lib \"user32\" (byval hwnd as long) as longprivate declare function releasedc lib \"user32\" (byval hwnd as long, byval hdc as long) as longprivate declare function bitblt lib \"gdi32\" (byval hdestdc as long, byval x as long, byval y as long, byval nwidth as long, byval nheight as long, byval hsrcdc as long, byvalxsrc as long, byval ysrc as long, byval dwrop as long) as longprivate declare sub copymemory lib \"kernel32\" alias \"rtlmovememory\" (destination as any, source as any, byval length as long)private declare function getbitmapbits lib \"gdi32\" (byval hbitmap as long, byval dwcount as long, lpbits as any) as longprivate declare function setbitmapbits lib \"gdi32\" (byval hbitmap as long, byval dwcount as long, lpbits as any) as longprivate declare function createcompatiblebitmap lib \"gdi32\" (byval hdc as long, byval nwidth as long, byval nheight as long) as longprivate declare function createcompatibledc lib \"gdi32\" (byval hdc as long) as longprivate declare function selectobject lib \"gdi32\" (byval hdc as long, byval hobject as long) as longprivate declare function deletedc lib \"gdi32\" (byval hdc as long) as longprivate declare function deleteobject lib \"gdi32\" (byval hobject as long) as longprivate scrw as long, scrh as longprivate myhdc as long, mybmp as long, myoldbmp as long, bmpdat() as byte, revbyte as longprivate startt as singleprivate sub form_load()dim bm as bitmap, bmpsize as longon error goto errloadme.scalemode = 3scrw = screen.width \ screen.twipsperpixelxscrh = screen.height \ screen.twipsperpixely'这只是方便调试的示例,实用程序中,不用临时dc,可直接取窗体的bmp,会快一些myhdc = createcompatibledc(frmserver.hdc)mybmp = createcompatiblebitmap(frmserver.hdc, scrw, scrh)myoldbmp = selectobject(myhdc, mybmp) getobj mybmp, len(bm), bmbmpsize = bm.bmwidthbytes * bm.bmheightredim bmpdat(bmpsize - 1)getbitmapbits mybmp, bmpsize, bmpdat(0)ws1.localport = 2345ws1.listenexit suberrload:msgbox errorend subsub getscreen()end subprivate sub form_unload(cancel as integer)on error resume nextws1.closeselectobject myhdc, myoldbmpdeleteobject mybmpdeletedc myhdcend subprivate sub ws1_close()statu *** ar1.simpletext = ws1.remotehostip & \" disconnected..\"ws1.closeif ws1.state = scklistening then ws1.closeelse ws1.localport = 2345 ws1.listenend ifend subprivate sub ws1_connectionrequest(byval requestid as long)if ws1.state <> sckclosed then ws1.closestatu *** ar1.simpletext = ws1.remotehostip & \" connecting..\"ws1.accept requestidif ws1.state = 7 then statu *** ar1.simpletext = ws1.remotehostip & \" connected..\"end subprivate sub ws1_dataarrival(byval bytestotal as long)dim dat() as byte, i as long, ntime as longon error resume nextws1.getdata dat, vbarray or vbbytei = instrb(1, dat, chrb(13) & chrb(10))if i > 0 then 'startt = timer if i > 1 then copymemory bmpdat(revbyte), dat(0), i - 1 setbitmapbits mybmp, ubound(bmpdat) + 1, bmpdat(0) revbyte = 0 '实用程序中,不用临时dc,下面一步可省 bitblt me.hdc, 0, 0, me.scalewidth, me.scaleheight, myhdc, 0, 0, vbsrccopy ntime = timer - val(me.
在咱们的形象里,“猫池”一般只能运用自身的号码进行电话的拨打,在各大防打扰电话渠道现已能够第一时刻的符号相关号码为营销电话了,算是一种现已“过期”的设备了。 可是,当“改号软件”和“语音机器人”参加之...
今天本文主要给大家分享一则vivo手机微信删除的聊天记...
黑客找什么工作相关问题 黑客英文怎么读相关问题 win7被黑客锁机怎么办 一个人所有社交账号都不更新了(个人所有税合理避税)...
一、哪里可以找到微信黑客(看过的微信视频在手机哪里可以找到)方法总结 1、谁知道浏览过微信后的视频和图片都藏在手机哪里存着?如何。微信浏览过的小视频和图片找出来的方法:打开手机桌面,在桌面上找到一个...
真正的盗QQ号软件是发给别人,直接入侵,想要在家就盗号很难,不要想那么多。 QQ号码被盗或丢失,建议去申诉找回,一定要记得通知自己的QQ好友不要被骗,以免财物损失,同时给自己的电脑和手机查杀木马病毒。...
屈原跳江自尽,是每个中国人都耳熟能详的历史故事,却没有多少人知道他跳的是哪条江,他为什么跳江? 屈原是我国历史上第一位伟大的爱国诗人,公元278年,楚国君主听信奸臣,导致国破人亡,屈原满怀羞愧之...