共200分。。。几个问题。(200分)

  • 主题发起人 主题发起人 入侵
  • 开始时间 开始时间

入侵

Unregistered / Unconfirmed
GUEST, unregistred user!
1、程序如何自杀:
2、如何判断windows版本
3、程序任务栏缩放效果。(注:并非将图标加入任务样。只是在打开程序和关闭程序是有一个缩放准备果。
4、根据域名得到IP地址
 
1、程序如何自杀:
procedure TForm1.killme;
var
f:textfile;
begin
assignfile(f,'./killme.bat'); //在程序目录下建一个 bat 文件
rewrite(f); //开始向 bat 文件中写入内容
writeln(f,'@echo off');
writeln(f,':loop');
writeln(f,'del "'+application.exename+'"');
writeln(f,'if exist ./progect1.exe goto loop');
writeln(f,'del killme.bat');
closefile(f);
winexec('./killme.bat',SW_HIDE);
close;
end;

---------------------------------------

2、如何判断windows版本
procedure TForm1.Button1Click(Sender: TObject);
var VersionInfo: TOSVersionInfo;
begin
VersionInfo.dwOSVersionInfoSize := Sizeof(TOSVersionInfo);
GetVersionEx(VersionInfo);
Case VersionInfo.dwPlatformID of
VER_PLATFORM_WIN32S: edit1.Text :='';
VER_PLATFORM_WIN32_WINDOWS: edit1.Text :='Wdinwos9X';
VER_PLATFORM_WIN32_NT: edit1.Text :='WindowsNT';
End;
end;

-----------------------------------------------

3、程序任务栏缩放效果
unit Unit1;

interface

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

type
TZoomAction = (zaMinimize, zaMaximize);
TForm1 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);

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

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure ZoomEffect(theForm: TForm; theOperation: TZoomAction);
var
rcStart: TRect;
rcEnd: TRect;
rcTray: TRect;
hwndTray : hWnd;
hwndChild: hWnd;
begin
{ 获取系统的Tray区域的边界矩形 }
hwndTray := FindWindow('Shell_TrayWnd', nil);
hwndChild := FindWindowEx(hwndTray, 0, 'TrayNotifyWnd', nil);
GetWindowRect(hwndChild, rcTray);

{ 检查最大化/最小化状态以交换开始/结束矩形 }
if theOperation = zaMinimize then
begin
rcStart := theForm.BoundsRect;
rcEnd := rcTray;
end
else
begin
rcEnd := theForm.BoundsRect;
rcStart := rcTray;
end;

{ 这里会发生一些奇妙的事... }
DrawAnimatedRects(theForm.Handle, IDANI_CAPTION, rcStart, rcEnd)
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ZoomEffect(Self, zaMinimize);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
ZoomEffect(Self, zaMaximize);
end;

end.

-------------------------------------------------

4、根据域名得到IP地址
function nametoip(name:string):string;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
result:='';
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(name));
if HostEnt <> nil then
begin
with HostEnt^ do
result:= Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
end;
 
接受答案了.
 
后退
顶部