Delphi中如何获得本地机上的所有网卡及它们的名称、IP设置等。

xiaong 2004-11-10 03:59:21
望高手指教!
...全文
721 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaong 2004-11-17
  • 打赏
  • 举报
回复
那我怎么样来修改它们呢?比如本机IP,Submask,defautgateway等。
jinjazz 2004-11-11
  • 打赏
  • 举报
回复
用Jedi的开发IP Helper开发包,下载地址
ftp://delphi-jedi.org/api/IpHlpApi.zip,有demo和源代码
hottey 2004-11-10
  • 打赏
  • 举报
回复
2.得到网络适配器的MAC地址

//uses Windows, SysUtils, NB30, 以下为类型定义及函数代码

const sNetBiosError = "NetBIOS错误%d";

type TMACAddress = packed array[0..5] of Byte;

ENetBiosError = class( Exception );

TAStat = record Adapt : TAdapterStatus;

NameBuff : array[0..30] of TNameBuffer;

end;

function GetMacAddress( AdapterNum : Integer ) : TMACAddress;

var

 Ncb : TNCB; uRetCode : Char;

 J : Integer; Adapter : TAStat;

begin

 FillChar( NCB, SizeOf(NCB), 0 );

 with NCB do begin

 ncb_command := Char(NCBRESET);

 ncb_lana_num := Char( AdapterNum );

end;


uRetCode := Netbios( @Ncb );

 if uRetCode <> #0 then raise Exception.CreateFmt( sNetBIOSError, [Ord(uRetCode)] );

  FillChar( NCB, SizeOf(NCB), 0 );

  with NCB do begin

  ncb_command := Char(NCBASTAT);

  ncb_lana_num := Char( AdapterNum );

  StrCopy( ncb_callname, "* " );

  ncb_buffer := @Adapter;

  ncb_length := sizeof(Adapter);

end;

 uRetCode := Netbios( @Ncb );

 if uRetCode <> #0 then raise Exception.CreateFmt( sNetBIOSError, [Ord(uRetCode)] );

 for J := 0 to 5 do

  Result[J] := Ord( Adapter.Adapt.Adapter_address[J] );

 end;



  3.得到当前网络用户的登录名

function GetNetUser : Ansistring;

var

 dwI : Dword;

begin

 dwI := MAX_PATH;

 SetLength (Result, dwI + 1);

 if WNetGetUser (Nil, Pchar (Result), dwI) = NO_ERROR then

 SetLength (Result, StrLen (Pchar (Result)))

else

 SetLength (Result, 0)

end;



  4.获取本地IP地址

uses WinSock, SysUtils;

…… type ESockUtilErr = Class(Exception);

………… function GetLocalIpAddress : string; type pu_long = ^u_long;

 var varTWSAData : TWSAData;

 varPHostEnt : PHostEnt;

 varTInAddr : TInAddr; namebuf : Array[0..255] of char;

 fd : integer; rc : integer;

begin

 result := "";

 rc := WSAStartup(1,varTWSAData);

 if rc <> 0 then raise ESockUtilErr.CreateFmt( "WSA启动错误: %d",[rc] )

else

begin

 gethostname(namebuf,sizeof(namebuf));

 varPHostEnt := gethostbyname(namebuf);

 varTInAddr.S_addr := u_long(pu_long(varPHostEnt^.h_addr_list^)^);

 result := inet_ntoa(varTInAddr);

end;

 fd := WinSock.Socket( PF_INET, SOCK_STREAM, 0 );

 if fd = INVALID_SOCKET then raise ESockUtilErr.CreateFmt( "%d %d: 无效 socket",[fd,WSAGetLastError] );

 WSACleanup;

end;
delphi_wo 2004-11-10
  • 打赏
  • 举报
回复
var
a: array[0..MAX_COMPUTERNAME_LENGTH+1] of Char;
l: Cardinal;
ComputerName: PChar;
size: DWord;
begin
getmem(computername,255);
size:=255;
if getcomputername(computername,size)=false then
begin
freemem(computername);
exit;
end;
g_user_machine_name:=computername;
freemem(computername);
//主机名称
l := MAX_COMPUTERNAME_LENGTH;
GetComputerName(a, l);
//本机IP
g_user_ip := GetIPAddress(a);
end;
就知道这么多
劣势 2004-11-10
  • 打赏
  • 举报
回复
比较的简单

1、获取本机名称

function LocalIP : string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe : PHostEnt;
pptr : PaPInAddr;
Buffer : array [0..63] of char;
I : Integer;
GInitData : TWSADATA;

begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end;
2、根据本地名称获取本机IP
function GetWIPByHosName(HosName: Pchar): string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
//Buffer: array [0..63] of char;
I: Integer;
GInitData : TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';

phe :=GetHostByName(HosName);
if phe = nil then Exit;

pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do begin
result:=StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;

end;

如果用D7就不用这么麻烦的IdIPWatch控件可以完成
IdIPWatch1.LocalIP

3、获取网络中的机器信息
◇[DELPHI]获取网上邻居
procedure getnethood();//NT做服务器,WIN98上调试通过。
var
a,i:integer;
errcode:integer;
netres:array[0..1023] of netresource;
enumhandle:thandle;
enumentries:dword;
buffersize:dword;
s:string;
mylistitems:tlistitems;
mylistitem:tlistitem;
alldomain:tstrings;
begin //listcomputer is a listview to list all computers;controlcenter is a form.
alldomain:=tstringlist.Create ;
with netres[0] do begin
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_DOMAIN;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=nil;
lpcomment :=nil;
lpprovider :=nil;
end; // 获取所有的域
errcode:=wnetopenenum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],enumhandle);
if errcode=NO_ERROR then begin
enumentries:=1024;
buffersize:=sizeof(netres);
errcode:=wnetenumresource(enumhandle,enumentries,@netres[0],buffersize);
end;
a:=0;
mylistitems :=controlcenter.lstcomputer.Items ;
mylistitems.Clear ;
while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do
begin
alldomain.Add (netres[a].lpremotename);
a:=a+1;
end;
wnetcloseenum(enumhandle);
// 获取所有的计算机
mylistitems :=controlcenter.lstcomputer.Items ;
mylistitems.Clear ;
for i:=0 to alldomain.Count-1 do
begin
with netres[0] do begin
dwscope :=RESOURCE_GLOBALNET;
dwtype :=RESOURCETYPE_ANY;
dwdisplaytype :=RESOURCEDISPLAYTYPE_SERVER;
dwusage :=RESOURCEUSAGE_CONTAINER;
lplocalname :=nil;
lpremotename :=pchar(alldomain[i]);
lpcomment :=nil;
lpprovider :=nil;
end;
ErrCode:=WNetOpenEnum(RESOURCE_GLOBALNET,RESOURCETYPE_ANY,RESOURCEUSAGE_CONTAINER,@netres[0],EnumHandle);
if errcode=NO_ERROR then
begin
EnumEntries:=1024;
BufferSize:=SizeOf(NetRes);
ErrCode:=WNetEnumResource(EnumHandle,EnumEntries,@NetRes[0],BufferSize);
end;
a:=0;
while (string(netres[a].lpprovider)<>'') and (errcode=NO_ERROR) do
begin
mylistitem :=mylistitems.Add ;
mylistitem.ImageIndex :=0;
mylistitem.Caption :=uppercase(stringreplace(string(NetRes[a].lpremotename),'\\','',[rfReplaceAll]));
a:=a+1;
end;
wnetcloseenum(enumhandle);
end;
end;


trainbox 2004-11-10
  • 打赏
  • 举报
回复
tongshang
jackie168 2004-11-10
  • 打赏
  • 举报
回复
Function Getcomputername():string;//電腦名稱
var buffer:array[1..32] of char;
ws_data:Twsadata;
begin
if Wsastartup(2,ws_data)<>0 then
getcomputername:='error';
if gethostname(@buffer[1],32)=0 then
getcomputername:=buffer;
end;
jackie168 2004-11-10
  • 打赏
  • 举报
回复
Function Loacalip:string;//本地ip地址
type
tapinaddr=array[0..10] of pinaddr;
papinaddr=^tapinaddr;
var
phe:phostent;
pptr:papinaddr;
buffer:array[0..63] of char;
i:integer;
ginitdata:twsadata;
begin
result:='';
wsastartup($101,ginitdata);
try
gethostname(buffer,sizeof(buffer));
phe:=gethostbyname(buffer);
if phe<>nil then
begin
pptr:=papinaddr(phe^.h_addr_list);
i:=0;
while pptr^[i] <> nil do
begin
result:=strpas(inet_ntoa(pptr^[i]^));
inc(i);
end;
end;
finally
wsacleanup;
end;
end;
jinjazz 2004-11-10
  • 打赏
  • 举报
回复
ipconfig命令重定向可以

----------------------------------------------------------------------
回复人: aiirii(ari-爱的眼睛) ( ) 信誉:372 2004-10-15 10:47:49 得分: 190
這個可以實現你要的, 看下:
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=199752

管道的例子:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TPipeForm = class(TForm)
Editor: TMemo;
procedure EditorKeyPress(Sender: TObject; var Key: Char);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EditorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EditorMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
CreateOk: Boolean;
WPos: TPoint;
hReadPipe, hWritePipe, hWriteFile, hReadFile: THandle;
processinfo: PROCESS_INFORMATION;
procedure SendCmdToShell(Const CmdStr: String);
function GetCmdStr: string;
public
{ Public declarations }
end;

var
PipeForm: TPipeForm;

implementation

{$R *.dfm}

procedure TPipeForm.EditorKeyPress(Sender: TObject; var Key: Char);
var
ECharPos: TPoint;
begin
if Key = Chr(VK_RETURN) then
begin
// ShowMessage(GetCmdStr);
SendCmdToShell(GetCmdStr);
end else if Key = Chr(VK_BACK) then
begin
ECharPos := Editor.CaretPos;
if ECharPos.X = WPos.X + 1 then
Key := #0;
end;
end;

procedure TPipeForm.SendCmdToShell(Const CmdStr: String);
var
ShellCmdStr: array[0..256] of char;
RBuffer: array[0..25000] of char;
nByteToWrite: DWORD;
nByteWritten: DWORD;
nByteReaden: DWORD;
begin
if CreateOK then
begin
StrPCopy(ShellCmdStr, CmdStr);
nByteToWrite := StrLen(ShellCmdStr);
ShellCmdStr[nByteToWrite] := #13;
ShellCmdStr[nByteToWrite+1] := #10;
ShellCmdStr[nByteToWrite+2] := #0;
Inc(nByteToWrite, 2);
WriteFile(hWriteFile, ShellCmdStr, nByteToWrite, nByteWritten, nil);
Sleep(400);
Editor.Lines.Clear;
FillChar(RBuffer, Sizeof(RBuffer), #0);
ReadFile(hReadFile, RBuffer, 25000, nByteReaden, nil);
Editor.Lines.Add(StrPas(RBuffer));
WPos.Y := Editor.Lines.Count-1;
WPos.X := Length(Editor.Lines[WPos.Y])-1;
end;
end;

procedure TPipeForm.FormDestroy(Sender: TObject);
var
shellexitcode: Cardinal;
begin
if GetExitCodeProcess(processinfo.hProcess, shellexitcode) then
begin
if shellexitcode = STILL_ACTIVE then
TerminateProcess(processinfo.hProcess, 0);
end;
if hWriteFile <> 0 then
CloseHandle(hWriteFile);
if hReadFile <> 0 then
CloseHandle(hReadFile);
end;

procedure TPipeForm.FormCreate(Sender: TObject);
var
Pipeattr: SECURITY_ATTRIBUTES;
ShellStartInfo: STARTUPINFO;
shellstr: array [0..256] of char;
RBuffer: array[0..25000] of char;
I: Integer;
nByteReaden: DWORD;
begin
CreateOK := False;
I := 0;
Editor.ReadOnly := False;
Wpos.X := 0;
WPos.Y := 0;
with Pipeattr do
begin
nLength := Sizeof(SECURITY_ATTRIBUTES);
lpSecurityDescriptor := nil;
bInheritHandle := true;
end;

if CreatePipe(hReadPipe, hWriteFile, @Pipeattr, 0) then
Inc(i);
if CreatePipe(hReadFile, hWritePipe, @pipeattr, 0) then
Inc(i);

GetStartupInfo(ShellStartInfo);
with ShellStartInfo do
begin
dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES;
hStdInput := hReadPipe;
hStdError := hWritePipe;
hStdOutput := hWritePipe;
wShowWindow := SW_HIDE;
end;
GetSystemDirectory(@Shellstr, MAX_PATH+1);
StrCat(@ShellStr, Pchar('\\cmd.exe'));
if CreateProcess(Shellstr, nil, nil, nil, True, 0,
nil, nil, ShellStartInfo, processinfo) then
begin
Inc(i);
end else begin
MessageBox(Handle, Pchar('调用Shell错误!'), Pchar('错误'), (MB_OK or MB_ICONERROR));
end;
if i = 3 then
begin
CreateOK := True;
Editor.Lines.Clear;
sleep(250);
ReadFile(hReadFile, RBuffer, 25000, nByteReaden, nil);
Editor.Lines.Add(StrPas(RBuffer));
WPos.Y := Editor.Lines.Count-1;
WPos.X := Length(Editor.Lines[WPos.Y])-1;
end;
end;

procedure TPipeForm.EditorKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
ECharPos: TPoint;
begin
ECharPos := Editor.CaretPos;
if ECharPos.Y > WPos.Y then
Editor.ReadOnly := False
else if (ECharPos.Y = WPos.Y) and (ECharPos.X > WPos.X) then
begin
Editor.ReadOnly := False;
end else
Editor.ReadOnly := True;
end;

function TPipeForm.GetCmdStr: string;
var
LastLine: Integer;
begin
LastLine := Editor.Lines.Count - 1;
if LastLine > WPos.Y then
begin
result := Editor.Lines[LastLine];
end else if LastLine = WPos.Y then
begin
result := Editor.Lines[LastLine];
result := Copy(result, WPos.X+2, Length(result));
end else
begin
result := ' ';
end;
end;

procedure TPipeForm.EditorMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ECharPos: TPoint;
begin
ECharPos := Editor.CaretPos;
if ECharPos.Y > WPos.Y then
Editor.ReadOnly := False
else if (ECharPos.Y = WPos.Y) and (ECharPos.X > WPos.X) then
Editor.ReadOnly := False
else
Editor.ReadOnly := True;
end;

end.
ppayun 2004-11-10
  • 打赏
  • 举报
回复
windows系统,我觉得比较简单的方法应该是读注册表,至于是哪些键,查一下注册表的资料吧
zwb666 2004-11-10
  • 打赏
  • 举报
回复
网络编成
所有代码在delphi6.0调试通过。1.GetIP(获取IP地址程序)-GetHostByName(使用GetHostByName函数获取IP程序)-WSAAsyncGetHostByName(使用WSAAsyncGetHostByName函数获取IP地址程序)-MultiIP(多IP情况的处理程序)-ReadIP and IP(关于IP地址和实际的地址的区别)2.GetNetMask(Windows NT&98系统获取子网掩码)3.获取计算机名(获取或设置本地机和远程计算机名)4.目在线检测(网络连接情况检测)5.DNS的更改和设置(获取DNS设置)6.MAC Addr(网卡信息的获取)7.FTP-API(使用API函数实现FTP客户端程序)8.FTP服务器(FTP服务器程序,实现了FTP服务的大部分功能)9.HTTPGET(使用HTTP协议下载web服务器上的文件或网页)10.WebProxy(实现了Web代理服务器的程序,可以让多个局域网的计算机通过该代理上网)11.Webserver(Web服务器程序,运行该程序可以建立自己的网页服务器)12.telnet(实现了远程登录的客户端功能,使用它可以上BBS)13.TelnetProxy(实现了telnet代理服务器功能的程序)14.mail2000(实现了收发Email的功能,并且能够分析email信件结构,发送附件等)15.netmon(网络流量统计的程序)16.tcplist(网络连接监控的程序)17.tcpipmon(网络配置和统计的使用实例)18.LanFind(局域网资源搜索程序)19.Modem-client(Modem文件传输的客户端程序)20.Modem-server(Modem文件传输的服务器程序)21.RAS-Code(RAS拨号上网程序)
第1章 窗体与界面设计 1 1.1 菜单应用 2 实例001 在系统菜单添加菜单项 2 实例002 带历史信息的菜单 3 实例003 菜单动态合并 4 实例004 像“开始”菜单一样漂亮的菜单 5 实例005 多彩的菜单 6 实例006 可以拉伸的菜单界面 8 1.2 工具栏设计 9 实例007 带背景的工具栏 9 实例008 浮动工具栏 10 1.3 状态栏设计 11 实例009 在状态栏显示检查框 11 实例010 带进度条的状态栏 12 实例011 状态栏加入图标 13 1.4 导航菜单界面 14 实例012 OutLook界面 14 实例013 带导航菜单的主界面 15 实例014 图形化的导航界面 16 1.5 特色程序界面 18 实例015 类QQ的程序界面 18 实例016 类似Windows XP的程序界面 20 实例017 以图形按钮显示的界面 21 实例018 以树型显示的程序界面 23 实例019 以XPManifest组件显示界面 24 实例020 动态按钮的窗体界面 25 1.6 特殊形状的窗体 26 实例021 非矩形窗体 26 实例022 建立字体形状窗体 28 1.7 多媒体光盘 29 实例023 自动启动的多媒体光盘程序 29 实例024 为触摸屏程序添加虚拟键盘 30 实例025 触摸屏系统 31 1.8 窗体效果 33 实例026 半透明渐显窗体 33 实例027 窗口颜色的渐变 34 实例028 带背景的窗体 35 实例029 为窗体增加边框 36 1.9 窗体动画 37 实例030 窗体的滚动字幕 37 实例031 动画显示窗体 38 实例032 制作闪烁的窗体 39 实例033 直接在窗体上绘图 40 实例034 动画形式的程序界面 41 实例035 以时钟显示界面窗体 42 1.10 标题栏窗体 44 实例036 标题栏上的按钮 45 实例037 使窗体标题栏文字右对齐 47 实例038 没有标题栏但可以改变大小的窗口 48 1.11 设置窗体位置 49 实例039 不可移动的窗体 49 实例040 设置窗体在屏幕的位置 50 实例041 始终在最上面的窗体 51 1.12 设置窗体大小 52 实例042 限制窗体大小 52 实例043 获取桌面大小 53 实例044 组件大小随窗体的改变而改变 53 实例045 在窗口间移动按钮 54 实例046 如何实现Office助手 55 1.13 窗体控制技术 56 实例047 在关闭窗口前加入确认对话框 56 实例048 程序在循环响应界面操作 57 实例049 使用任意组件拖动窗体 58 实例050 动态创建窗体和释放窗体 59 实例051 修改提示字体及颜色 60 1.14 其他技术 61 实例052 窗口融合技术 61 实例053 给MDI窗体加背景 62 实例054 如何关闭MDI类型窗体的子窗体 63 实例055 向提示框添加图标 64 第2章 控件应用 67 2.1 TEdit控件应用典型实例 68 实例056 从右至左输入数据 68 实例057 为TEdit控件添加列表选择框 69 实例058 只允许输入数字的TEdit组件 70 2.2 TSpeedButton控件应用典型实例 71 实例059 在TSpeedButton按钮显示图标 71 实例060 折行显示按钮标题 72 2.3 TMemo控件应用典型实例 73 实例061 设置TMemo组件的边界 73 实例062 TMemo组件的光标定位 74 实例063 得到TMemo的可见行数 75 2.4 TListBox控件应用典型实例 76 实例064 在TListBox组件间交换数据 76 实例065 为TListBox添加水平滚动条 77 实例066 将数据库数据添加到组合框 78 实例067 借助绑定控件实现数据选择录入 79 2.5 TListView控件应用典型实例 80 实例068 TListView列表拒绝添加重复信息 80 实例069 将数据库数据添加到TListView控件 82 实例070 用TListView控件制作导航界面 83 实例071 在TListView控件对数据排序或统计 84 实例072 在TListView组件绘制底纹 86 实例073 在列表视图拖动视图项 87 2.6 TTreeView控件应用典型实例 88 实例074 将数据库数据显示到树视图 88 实例075 用TTreeView控件制作导航界面 90 实例076 TTreeView组件遍历磁盘目录 91 实例077 TTreeView组件在数据库的应用 92 2.7 TStringGrid控件应用典型实例 94 实例078 程序运行时对
Delphi 7 新概念百例》是一本通过讲解Delphi实例,来说明使用Delphi编程时通常采用的编程思路以及具体方法的计算机书籍。通过对每个实例从编程思路和代码实现的详细分析和讲解,力求带领读者快速地提高自己的程序设计水平,并达到举一反三的目的。很多实例的重要部分都做了特别注意和技巧等提示,目的是强调一些技巧的使用或使读者尽量避免一些常见的错误,以使更高效地利用Delphi这个强大的程序开发工具。  该书精选了100多个经典的实例从易到难、由浅入深、由简单到综合地进行讲解,内容涉及面也很广泛,基本上涵盖了用Delphi进行应用程序设计的方方面面,凝聚了作者多年的Delphi编程经验,相信对启发读者的思想并提高读者的编程水平台有很大帮助。  该书主要面向高级读者,但对那些熟悉Object Pascal语法并有一定编程经验的初级读者也很有帮助。本书也可以作为初涉Delphi的实例教材使用。  本文件是《Delphi 7 新概念百例》的配书源代码,包含编译好的可执行文件。内容如下:├─综合应用篇│ ├─87 用TreeView来显示数据库信息│ ├─86 显示彩色数据表格│ ├─85 文件切割器│ ├─84 加密解密器│ ├─83 TButton增加OnMouseLeave事件│ ├─82 将IE收藏夹导出为HTML文件│ ├─81 NT Win2000发送Winpop消息│ ├─80 制作无闪烁的动画│ ├─79 定制自己的幽灵程序│ ├─78 简单的文件查看器│ ├─77 简单的文件夹浏览器│ └─76 实现自己的控制面板├─练习提高篇│ ├─99 获取TRichEdit控件光标所在行号│ ├─98 获取内存信息│ ├─97 获取CPU 信息│ ├─96 获取Windows的版本│ ├─95 临时文件的操作│ ├─94 获取Windows和System目录│ ├─93 将窗体大小限定在一定范围内│ ├─92 闪烁窗口│ ├─91 在窗体客户区用鼠标拖曳窗体│ ├─90 使TMemo组件带边界│ ├─89 给ListBox控件增加水平滚动条│ ├─88 运行时拖动控件│ ├─104 防止程序或系统关闭│ ├─103 设置屏幕分辨率│ ├─102 获取系统和显卡的BIOS信息│ ├─101 使应用程序不出现在任务栏上│ └─100 隐藏或显示桌面上的图标└─基础实例篇 ├─8第八节 数据库技术 │ ├─75 通过注册表在程序增减和修改数据源 │ ├─74 获取BDE的配置信息 │ ├─73 动态建立和使用别名 │ │ ├─在程序动态地建立和使用别名(四) │ │ ├─在程序动态地建立和使用别名(二) │ │ ├─在程序动态地建立和使用别名(三) │ │ └─在程序动态地建立和使用别名(一) │ ├─72 自动检测、建立数据库别名和数据表 │ ├─71 用Delphi进行数据库之间转换 │ ├─70 图像数据的存取 │ ├─69 压缩、反删除dBase或FoxPro数据表 │ ├─68 处理数据库日期型字段的显示与输入 │ │ └─数据库 │ └─67 在数据库存取Word文档 ├─7第七节 网络编程 │ ├─66 动态更改DNS │ ├─65 网络资源树形浏览 │ ├─64 实现网络驱动器的映射和断开 │ ├─63 在网络邻居上得到某台机器的磁盘空间 │ ├─62 在网络邻居获取指定工作组内的所有计算机及其共享资源信息 │ ├─61 在WinNT-2000网络邻居获取所有的工作组 │ ├─60 计算机名与IP地址的互相获取 │ ├─59 实现Ping操作 │ ├─58 网页浏览器 │ └─57 获取本机机器名、IP信息以及网卡的MAC地址 ├─6第六节 多媒体技术 │ ├─56 实现图像之间的平滑过渡 │ ├─55 制作能播放Midi、Wav和Avi文件的播放器 │ ├─54 检测声卡是否安装 │ ├─53 获取Audio-CD的序列号 │ ├─52_关闭CD-ROM │ └─51 检测_设置CD-ROM是否自动运行 ├─5第五节 图像技术 │ ├─50 创建Jpeg图像的缩略图 │ ├─49 实现图像的翻转 │ ├─48 多种渐变色的实现 │ ├─47 TColor与RGB值的互相转换 │ ├─46 将文本转换成图像 │ ├─45 提高对位图象素的访问速度 │ ├─44 将彩色位图转换为灰度图 │ ├─43 将图像从jpg,ico,bmp,wmf格式转换为emf格式 │ ├─42 将图像从jpg,ico,emf,wmf格式转换为bmp格式 │ └─41 将图像从bmp格式转换为Jpg格式 ├─4第四节 VCL分析 │ ├─40 消除在TEdit控件按下回车键时的声音 │ ├─39 在StringGrid设置只读栏 │ ├─38 加速TTreeView控件的填充和清空 │ ├─37 加速TListBox控件的填充和清空 │ ├─36 在TStringGrid控件删除整行 │ ├─35 动态创建主菜单和菜单项 │ ├─34 使程序能在循环响应界面操作 │ ├─33 在TListbox、TCombobox实现自动搜索 │ ├─32 用剪贴板复制和粘贴图像 │ └─31 实现.dfm文件和.txt文件的互相转换 ├─3第三节 Shell研究 │ ├─30 为程序创建快捷方式 │ ├─29 获取Windows的若干特殊文件夹路径(二) │ ├─28 获取Windows的若干特殊文件夹路径(一) │ ├─27 抽取程序关联图标 │ ├─26 磁盘格式化的实现 │ ├─25 将文件加入“开始”菜单的“文档” │ ├─24 文件的拖放 │ ├─23 整个目录的复制、移动、删除 │ ├─22 将指定文件类型设置为与自己的应用程序相关联 │ └─21 文件的自动打开和超链接的实现 ├─2第二节 系统探秘 │ ├─20 操作INI文件 │ ├─19 获取驱动器类型信息 │ ├─18 在自己的程序关闭其它的程序 │ ├─17 使程序开机自动运行 │ ├─16 在自己的程序打开或关闭IE窗口 │ ├─15 模拟鼠标的行为 │ ├─14 限制光标的移动区域 │ ├─13 获取或更改计算机名 │ ├─12 运行程序的单实例 │ └─11 隐藏任务栏 └─1第一节 界面设计 ├─09 在系统菜单上添加自定义菜单项 ├─08 使窗体始终最大化 ├─07 使窗体始终最小化 ├─06 为窗体创建动画光标 ├─05 制作始终位于最上层的窗体 ├─04 制作带背景窗体 ├─03 制作圆形窗体 ├─02 制作无标题栏窗体 ├─10 给窗体边框“镶边” └─01 制作不可移动的窗体
1.1、GetIP(获取IP地址程序)
GetHostByName(使用GetHostByName函数获取IP程序)
WSAAsyncGetHostByName(使用WSAAsyncGetHostByName函数获取IP地址程序)
MultiIP(多IP情况的处理程序)
ReadIP and IP(关于IP地址和实际的地址的区别)
1.2、GetNetMask(Windows NT&98系统获取子网掩码)
1.3、获取计算机名(获取或设置本地机和远程计算机名)
1.4、在线检测(网络连接情况检测)
1.5、DNS的更改和设置(获取DNS设置
1.6、MAC Addr(网卡信息的获取)
3.1、FTP-API(使用API函数实现FTP客户端程序)
3.2、FTP服务器(FTP服务器程序,实现了FTP服务的大部分功能)
4.1、HTTPGET(使用HTTP协议下载web服务器上的文件或网页)
4.2、WebProxy(实现了Web代理服务器的程序,可以让多个局域网的计算机通过该代理上网)
4.3、Webserver(Web服务器程序,运行该程序可以建立自己的网页服务器)
5.1、telnet(实现了远程登录的客户端功能,使用它可以上BBS)
5.2、TelnetProxy(实现了telnet代理服务器功能的程序)
6.1、mail2000(实现了收发Email的功能,并且能够分析email信件结构,发送附件等)
7.1、netmon(网络流量统计的程序)
7.2、tcplist(网络连接监控的程序)
7.3、tcpipmon(网络配置和统计的使用实例)
7.4、LanFind(局域网资源搜索程序)
8.1、Modem-client(Modem文件传输的客户端程序)
8.2、Modem-server(Modem文件传输的服务器程序)
9.1、RAS-Code(RAS拨号上网程序)
10.1、tfax(通过计算机发送传真的程序)

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧