工控编程吧
标题:
330上位机VC MFC获得电脑打开的端口和状态
[打印本页]
作者:
qq263946146
时间:
2016-9-21 21:16
标题:
330上位机VC MFC获得电脑打开的端口和状态
(, 下载次数: 0)
上传
点击文件名下载附件
获得打开的端口和状态
功能展示
通讯中的电脑在传递数据时都会打开一个端口,这个端口就是与其他电脑通讯的通道。电脑上已打开的端口不是固定的,我们当前例程实现罗列出电脑已打开的端口及端口的相关信息,效果如图,点击<检测端口>执行的结果就是罗列在列表框中且将检测的结果存入C盘的port.txt文件内;
要点提示
例程通过WinExec()执行DOS SHELL的netstat命令,获得系统中的网络端口信息;
函数原型UINT WinExec( LPCSTR lpCmdLine, UINT uCmdShow );
lpCmdLine String,包含要执行的命令行
nCmdShow Long,定义了以怎样的形式启动程序的常数值。参考ShowWindow函数的nCmdShow参数
调用NETSTAT命令时可以使用重定向功能,将结果存到一文件中,然后在程序中打开此文件,读取信息,就能够获取与显示端口号及相关信息了;
动画的播放我们可以使用MFC类库中的CAnimateCtrl控件,方便快速。该类的主要方法有
Open()方法,此函数用于播放AVI文件,在播放AVI动画前,首先得打开一个AVI文件,OPEN()语法如下
BOOL Open( LPCTSTR lpszFileName ); lpszFileName 为标识 AVI文件名称; BOOL Open( UINT nID ); nID 标识AVI资源ID
播放AVI时用PLAY,语法如下BOOL Play( UINT nFrom, UINT nTo, UINT nRep ); nFrom帧的起始位置,nTo,帧的终止位置,nRep循环资源,-1为始终循环播放;
其他更多方法,可以查阅MSDN;
要注意的是CAnimateCtrl只能播放没有声音的AVI文件,如果播放有声音的AVI,得使用微软公司的ActiveX插件:CAnimation,.
实现功能
1.新建基于对话框的应用程序
2.依照例程界面添加按钮<检测端口>列表框IDC_LIST1,关联按钮的点击函数
#include<io.h>
void CGkbc8Dlg::OnCheck()
{
CListCtrl*pListCtrl =(CListCtrl*)GetDlgItem(IDC_LIST1);
pListCtrl->ModifyStyle(0,LVS_LIST,0);
pListCtrl->DeleteAllItems();
//<>
char buffer[100];
GetWindowsDirectory(buffer,100);
strcat(buffer,"\\system32\\netstat -a -n > c:\\port.txt");
CString strPath;
strPath.Format("Command.com /c %s",buffer);
WinExec(strPath,SW_HIDE);//"Command.com /c netstat -a -n > c:\\port.txt"
while(_access("c:\\port.txt",02)==-1);//直到可写
while(_access("c:\\port.txt",04)==-1);//直到可读
Sleep(1000);
CString str="";
CStdioFile file("c:\\port.txt",CFile::modeRead);
while(NULL!=file.ReadString(str))
{
pListCtrl->InsertItem(0,str);
}/**/
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/320921e8fb15dbbc81021930e2a418cd/0/0/w_19rstiz4od.swf-albumId=6348017409-tvId=6348017409-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4