的IP地址或主机名。
如何知道有哪些计算机与自己的电脑连接 const
MaxNetArrayItems = 512;
type
TSessionInfo50 = packed record
sesi50_cname: PChar; //remote computer name (connection id in Netware)
sesi50_username: PChar;
sesi50_key: DWORD; // used to delete session (not used in Netware)
sesi50_num_conns: Word;
sesi50_num_opens: Word; //not available in Netware
sesi50_time: DWORD;
sesi50_idle_time: DWORD; //not available in Netware
sesi50_protocol: Char;
padl: Char;
end;
TNetSessionEnum = function (const pszServer: PChar; sLevel: SmallInt;
pbBuffer: Pointer; cbBuffer: Word; var pcEntriesRead: Word;
var pcTotalAvail: Word): DWORD; stdcall;
procedure GetNetSessions(ComputerNames: TStrings);
var
SessionInfo: array[0..MaxNetArrayItems] of TSessionInfo50;
EntriesRead, TotalAvail: Word;
I: Integer;
Str: string;
NetSessionEnum: TNetSessionEnum;
LibHandle: THandle;
begin
ComputerNames.Clear;
LibHandle := LoadLibrary('SVRAPI.DLL');
if LibHandle <> 0 then
begin
try
@NetSessionEnum := GetProcAddress(LibHandle, 'NetSessionEnum');
if (@NetSessionEnum <> nil) then
if NetSessionEnum(nil, 50, @SessionInfo, Sizeof(SessionInfo), EntriesRead, TotalAvail) = 0 then
begin
for I := 0 to EntriesRead - 1 do
with SessionInfo[I] do
begin
SetString(Str, sesi50_cname, StrLen(sesi50_cname));
ComputerNames.Add(Str);
end;
end;
finally
FreeLibrary(LibHandle);
end;
end;
end;
连接的
计算机名存放在 ComputerNames 中,可以在 Win9x 下使用。
在网络上进行摄像头视频通讯
文章分类:
网络、视频,聊天
文章作者:廖长科
(请注明
原创作者)
笔者序:也许在写这编文章时,有很多朋友正被老板要求做类似QQ一样的视频聊天软件,在这里,我把自己的一些经验和代码写出来与大家一起分享,高手不要笑我哈!看了这编文章后,你也可以自己做一个简单的网络视频通讯
软件,如
果自己家里上了网,就可以在公司和家人进行可视通讯了,多爽,不用给电话费了。
本例子使用的是简的老技术(VFW),开发起来相对简单,以下是Delphi代码,你需要先加入 VFW.PAS 文件,没有这个文件你可以在网上找一下。作者从Delphi4就开始编程,其实
Delphi可以做很多事情,只是太多Delphi程序员没有深专技术和思想,没有超越自己,Delphi只是一个开发工具,代码思想是的
设计的精髓。
下面让我们一起来讲解一下:
在程序的开始,你需要用capCreateCaptureWindow来创建一个摄像头句柄,
CapWnd := capCreateCaptureWindow('预览窗口',WS_VISIBLE or WS_CHILD,0,0,320,240,PrevWnd,1);
在后面的参数:PrevWnd代表预览窗口的句柄,你可以指定一个Panel的句柄;320和240代表了窗口的长宽。
if CapWnd = 0 then exit;
capDriverConnect(CapWnd,0); //连接摄像头设备
capDlgVideoFormat(CapWnd); //显示视频设置对话框,进行配置视频的大小、颜色位数等。
capGetVideoFormat(CapWnd,@BmpInInfo,sizeof(BITMAPINFO)); //取得视频图像数据头,后面压缩时需要用到
capPreviewRate(CapWnd, 33); //设置预览视频的频率,33代表第秒30帧。
capPreview(CapWnd, TRUE);
capSetCallbackOnFrame(CapWnd,FrameCallBack);
InitCaptureParams;
最后一句是设置视频
压缩参数, 后面会进行说明。其中的capSetCallbackOnFrame(CapWnd,FrameCallBack)是设置每帧视频数据的回调函数,我们就可以将回调时的视频数据通过网络进行传输,这样的就实现了视频聊天的核心了。
回调函数如下的格式:
function FrameCallBack(hWnd: HWND; lpVHdr: PVIDEOHDR): DWORD; stdcall;
var
bKeyFrame : BOOL ;
Buf : PBYTE;
VideoDa