永发信息网

Delphi编一个本地IP查找的问题

答案:1  悬赏:80  手机版
解决时间 2021-07-31 03:26

这是我程序的代码,为什么不能挪动窗口?

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, StdCtrls, Winsock, Clipbrd;

type
TForm1 = class(TForm)
Label1: TLabel;
Timer1: TTimer;
PopupMenu1: TPopupMenu;
IP1:TMenuItem;
N1:TMenuItem;
Label2: TLabel;
procedure IP1Click(Sender:TObject);
procedure FormCreate(Sender:TObject);
procedure Timer1Timer(Sender:TObject);
procedure N1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

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;

procedure TForm1.FormCreate(Sender:TObject);
var
FullRgn,CllientRgn,ButtonRgn:THandle;
Margin,X,Y:integer;
begin
top:=screen.Height-50;
left:=screen.Width-120;
height:=Label1.Height;
width:=Label1.Width;
Margin:=(Width-ClientWidth)div 2;
FullRgn:=CreateRectRgn(0,0,Width,Height);
X:=Margin;
Y:=Height-ClientHEight-Margin;
CllientRgn:=CreateRectRgn(X,Y,X+ClientWidth,Y+Label1.Height);
CombineRgn(FullRgn,FullRgn,CllientRgn,RGN_DIFF);
X:=X+Label1.Left;
Y:=Y+Label1.Top;
ButtonRgn:=CreateRectRgn(X,Y,X+Label1.Width,Y+Label1.Height);
CombineRgn(FullRgn,FullRgn,ButtonRgn,RGN_OR);
SetWindowRgn(Handle,FullRgn,True);
ShowWindow(Application.Handle,SW_HIDE);
SetWindowlong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle,GWL_EXSTYLE)
or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

ShowWindow(Application.Handle,SW_SHOW);
end;
procedure TForm1.Timer1Timer(Sender:TObject);
begin
Timer1.Interval:=1000*100;
Label1.Caption:='IP:'+LocalIP;
end;

procedure TForm1.N1Click(Sender:TObject);
begin
application.Terminate;
end;

procedure TForm1.IP1Click(Sender:TObject);
begin
Clipboard.SetTextBuf(Pchar(copy(Label1.caption,4,255)));
end;

end.

最佳答案
我觉得取个IP没有必要在FormCreate事件了弄一堆没用的东西。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
苹果那里最多?
栾川县洛阳兴盛租赁站(016乡道)这个地址在什
柯南变新一的都有那几集?与黑暗组织对决的都
虐杀原形 我晕死
二线制压力变送器如何接入仪表
梦幻能交易孩子么?
调色工程师具体是干什么的啊?
现在的黄金价位是多少?
假列推迟第五天的早上用验孕纸能查出是否怀孕
怎样识别电脑硬件的好坏
龙江县齐齐哈尔诚信豆油行哪位知道具体地址啊
甲乙两城之间计划修筑一条40km长的公路设计路
地下城与勇士哪个G不会封号又可以去PK的
怎样轻松提高英语成绩?
冬天吃什么东西皮肤不会干燥?
推荐资讯
基金,融通深100转换的难题
东宝区荆门市保险行业协会怎么去啊,谁知道地
鄂城区鄂州黄浦驾校报名处哪位知道具体地址啊
西工区洛阳五贝子植物烫染专家西工旗舰店在什
非黄钻怎么装扮空间?
这种情况下能留下宝宝吗?
天龙八部种植问题,我的种植2级了怎么种不了2
为什么我一点QQ上的校友图标,进入网站,会弹
沈阳哪里能买到 夜读灯0
关于拼搏的诗歌汪国真,汪国真有哪些较经典的
解放区焦作通灵珠宝(解放中路)地址在哪里啊
手机没有了流量,我不知道要等到什么时候才有
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?