【997755.com澳门葡京】自动跳过代码,免费短信平台函数表达

997755.com澳门葡京 1

delphi断点无效,自动跳过代码
//定义

//十六进制(S)–>>十进制(I)  [重写:Jey]
function hextoint(s: string): Integer; 
begin           //$代表16进制
  Result:=StrToInt(‘$’+s);
end;

此短信平台,帮衬高卢鸡wavecom短信猫.有VB及DELPHI示例程序

type
PlayerInfo = record //客户端消息
ID: pchar;
GameHwnd: int64; //游戏句柄
ClientHwnd: int64; //dll的窗体句柄
Account: pchar; //账号
PassWord: pchar; //密码
RealmName_1: pchar; //服务器
RealmName_2: pchar;
playername:pchar;
Team:pchar;//队伍
Task:pchar;//功能
CmdCode:pchar;
Gamepath:pchar;
end;
pplayerinfo = ^playerinfo;

//十进制调换为二进制字符串  [重写:Jey]
function inttoBin(i: integer): string;
begin
 while i <>0 do
 begin              //i mod 2取模,再使用format格式化
   result:=Format(‘%d’+result,[i mod 2]);
   i:=i div 2
 end
end;
//二进制(S)–>>十进制(D)    [重写:Jey]
uses Math;
function hextoint(s: string): Double;
begin
  while Length(s) <>0 do
  begin              //2^(长度-1)次方
    if s[1]=’1′ then  Result:=Result+power(2,Length(s)-1);
    s:=Copy(s,2,Length(s));
  end
end;
//十进制(I)–>>十六进制(S)
//D自带函数,Digits长度,一般设4.
function IntToHex(Value: Integer; Digits: Integer): string;

 

var
pplayer: PlayerInfo; {那些将会已指针的法子传送给线程, 它应当是全局的}
T_Event: Cardinal = 0; //事件内核

//数据(S)–>>二进制(S)
//任何数据都以以二进制格局积存的! (转)
function conertde(s:string):string;
var
 i:integer;
begin
 for i:=1 to length(s) do
   result:=result+inttohex(ord(s[i]),2);
end; 

错误表达
0 成功
-1 连接短信平台倒闭
-2 命令实行停业
-3 无可读短信

function LoginGame(ptr: pointer): boolean; stdcall;
//登入游戏的线程
var

一、WSAStartup函数
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
使
用Socket的程序在使用Socket在此之前务必调用WSAStartup函数。该函数的首先个参数指明程序需要使用的Socket版本,个中高位字节指
明副版本、低位字节指明主版本;操作系统利用第3个参数重临央浼的Socket的版本消息。当二个应用程序调用WSAStartup函数时,操作系统依照乞求的Socket版本来寻觅相应的Socket库,然后绑定找到的Socket库到该应用程序中。现在应用程序就能够调用所央浼的Socket库中的另外Socket函数了。该函数施行成功后再次回到0。
例:即使多个主次要运用2.1版本的Socket,那么程序代码如下
wVersionRequested = MAKEWORD( 2, 1 );
err = WSAStartup( wVersionRequested, &wsaData );

function ConnectToServer(aServerName, aLogID, aPass: pchar): integer;
stdcall;
函数表明:
老是平台的后台数据库
参数说明:
aServerName 平台的后台数据库所在的服务器名称
aLogID 登录数据库服务器所需的用户名
aPass 登入数据库服务器所需的密码

i, c: Integer;
num: integer; //ID
hmodule: thandle;

二、WSACleanup函数
int WSACleanup (void);
应用程序在完成对央浼的Socket库的运用后,要调用WSACleanup函数来祛除与Socket库的绑定并且释放Socket库所据有的系统财富。

function DisConnectToServer: integer; stdcall;
函数表明:
断开平台的后台数据库连接

installkeyProc: function(hwindow: hwnd): boolean;
gamehprocess, module: Cardinal;

三、socket函数
SOCKET socket(
int af,
int type,
int protocol
);

用程序调用socket函数来创造一个可见进行网络通讯的套接字。第二个参数内定应用程序使用的通讯协议的协议族,对于TCP/IP协议族,该参数置
PF_INET;第叁个参数钦赐要开创的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三个参数钦定应
用程序所使用的通讯协议。该函数借使调用成功就回去新创造的套接字的描述符,假诺退步就回到INVALID_SOCKET。套接字描述符是三个大背头连串的值。各种进程的进度空间里都有叁个套接字描述符表,该表中寄放着套接字描述符和套接字数据结构的应和关系。该表中有二个字段贮存新创立的套接字的描述符,
另二个字段贮存套接字数据结构的地方,由此依靠套接字描述符就能够找到其对应的套接字数据结构。每种进度在温馨的历程空间里都有三个套接字描述符表不过套
接字数据结构都是在操作系统的内核缓冲里。下边是二个创建流套接字的例子:
struct protoent *ppe;
ppe=getprotobyname(“tcp”);
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

function CreateIniDb: integer; stdcall;
函数表达:
初叶化平台的后台数据库脚本

gameh, childhwnd, filehwnd: int64;
TextFile: TStringList;
filepath: string;
Curp: PlayerInfo; {因为指针参数给的点天天都在变,
需用线程的有的变量存起来}
//临时变量
ID: pchar;
GameHwnd: int64; //游戏句柄
ClientHwnd: int64; //dll的窗体句柄
Account: pchar; //账号
PassWord: pchar; //密码
RealmName_1: pchar; //服务器
RealmName_2: pchar;
playername:pchar;
Team:pchar;//队伍
Task:pchar;//功能
CmdCode:pchar;
Gamepath:pchar;
begin
EnterCriticalSection; //步向临界区
try
result := False;
Curp := pPlayerInfo^;

四、closesocket函数
int closesocket(
SOCKET s
);
closesocket
函数用来关闭多少个陈说符为s套接字。由于每一种进度中都有二个套接字描述符表,表中的每种套接字描述符都对应了贰个位于操作系统缓冲区中的套接字数据结构,
由此有希望有多少个套接字描述符指向同一个套接字数据结构。套接字数据结构中等专门的学问高校门有二个字段贮存该社团的被引述次数,即有多少个套接字描述符指向该组织。当
调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,若是为1,就标识唯有三个套接字描述符指向它,因此操作系统就先把s在
套接字描述符表中对应的那条表项清除,並且释放s对应的套接字数据结构;若是该字段大于1,那么操作系统仅仅清除s在套接字描述符表中的对应表项,而且把
s对应的套接字数据结构的援引次数减1。
closesocket函数倘若施行成功就重回0,不然再次来到SOCKET_ERROR。

function SendASms(aPhone, aContent, aremark: pchar): integer; stdcall;
函数表明:
写短信到平台的后台数据库
参数表达:
aPhone 接收短信的人
aContent 短信的剧情
aremark 备注

//这里开端往下断点无效,会活动跳过
ID:=Curp.ID;
//那几个createthread传递步入的结构体,参数多了,传递的值会出错
ClientHwnd:=Curp.ClientHwnd;
Account:=Curp.Account;
PassWord:=Curp.PassWord;
RealmName_1:=Curp.RealmName_1;
RealmName_2:=Curp.RealmName_2;
playername:=Curp.playername;
Team:=Curp.Team;
task:=Curp.Task;
//直到此处可以下断点,中间这一块全部跳过
cmdcode:=Curp.CmdCode;
Gamepath:=Curp.Gamepath;
Set伊芙nt; //设置触发
filepath := Gamepath + ‘\data\config.ini’;
if FileExists then
begin
//假如文件存在,则开始展览改换和丰盛
TextFile := TStringList.Create;
TextFile.LoadFromFile;
for I := 0 to TextFile.Count – 1 do
begin
if Pos(‘SaveAccount’, TextFile[i]) > 0 then
begin
TextFile.Delete;
TextFile.Insert(i, ‘SaveAccount = ‘ + ‘0’);
end;
end;
TextFile.SaveToFile;
if TextFile <> nil then
begin
TextFile.Free;
TextFile := nil;
end;
end;
//参数一:进程路线
//参数二:命令行
//参数八:子进度专业路径
if createprocess(pchar(gamepath+’\asktao.mod’),
pChar(‘des:’+CmdCode),
nil, nil, False,
0,
nil, gamepath, StartupInfo, ProcessInfo) then
begin
gameh := GetHwndFromProcess(ProcessInfo.dwProcessId);
for c := 0 to 60 do
begin
if gameh = 0 then
begin
Sleep;
gameh := GetHwndFromProcess(ProcessInfo.dwProcessId);
end
else
break;
end;
end;
if gameh > 0 then
begin
if KeyHook then
FormMain.Memo1.Lines.Add(‘dll安装成功’);
//安装到位后,客户端窗体会创设四个DLL窗体,类名字为Tform1
//遍历全体进度,跟进度ID同样,並且窗体类名称叫Tform1
//则象征dll窗体早先化成功,能够发送Data告诉她去登入
for c := 0 to 30 do
begin
childhwnd := GetChildwindows(ProcessInfo.dwProcessId);
if childhwnd > 0 then
begin
Break;
end
else
Sleep;
end;
//成功创造窗口,能够先河发送数据,并让他起来自行登录
//要是child窗口为0,则象征登入败北,或然creatprocess起先是循环
//退步了双重再开一个窗口,记得关闭那几个窗口

五、send函数
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);

论是客户依然服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送诉求,而服务器则常常用send函
数来向客户程序发送应答。该函数的第三个参数钦赐发送端套接字描述符;第三个参数指圣元个存放应用程序要发送数据的缓冲区;第八个参数指明实际要发送的数
据的字节数;第多少个参数一般置0。这里只描述同步Socket的send函数的实行流程。当调用该函数时,send先比较待发送数据的长短len和套接字
s的发送缓冲区的长度,若是len大于s的发送缓冲区的尺寸,该函数重返SOCKET_ERubiconRO哈弗;假若len小于大概等于s的发送缓冲区的长度,那么
send先反省协议是还是不是正在发送s的发送缓冲中的数据,借使是就等候协议把多少发送完,要是协议还未有开始发送s的出殡和埋葬缓冲中的数据依然s的发送缓冲中未有数量,那么send就比较s的发送缓冲区的结余空间和len,借使len大于剩余空间大小send就直接等候协议把s的出殡和埋葬缓冲中的数据发送完,如若len小于剩余空间大小send就单纯把buf中的数据copy到剩余空间里(注意实际不是send把s的出殡和埋葬缓冲中的数据传到连接的另一端的,而是协议传
的,send仅仅是把buf中的数据copy到s的发送缓冲区的盈余空间里)。借使send函数copy数据成功,就回去实际copy的字节数,假使send在copy数据时出现错误,那么send就回来SOCKET_E途乐ROEscort;假若send在守候协议传送数据时网络断开的话,那么send函数也重临SOCKET_E大切诺基RO奥迪Q5。要留神send函数把buf中的数据成功copy到s的出殡缓冲的结余空间里后它就回到了,可是此时那么些数量并不一定立即被
传到连年的另一端。假若协商在连续的传递进度中冒出互联网错误的话,那么下三个Socket函数就能回来SOCKET_ERubiconROCRUISER。(每叁个除send外的
Socket函数在实行的最伊始总要先等待套接字的出殡和埋葬缓冲中的数据被协议传送完结本事持续,假设在等候时出现网络错误,那么该Socket函数就回来
SOCKET_ERROR)
在意:在Unix系统下,若是send在守候协议传送数据时网络断开的话,调用send的历程会收到到叁个SIGPIPE时域信号,进度对该复信号的私下认可管理是经过终止。

function ReadASms(var aPhone, aContent, aSendDateTime: pchar): integer;
stdcall;
函数表达:
从平台的后台数据库中读取一条未读短信
参数表达:
aPhone 发送短信的人
aContent 短信的剧情
aSendDateTime 短信发送的时光

end;result := True;Isloading := false;LeaveCriticalSection; //离开临界区ExitThread;

六、recv函数
int recv(
SOCKET s,
char FAR *buf,
int len,
int flags
);

论是客户依然服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的首先个参数钦命接收端套接字描述符;第一个参数指喜宝个缓冲区,该缓
冲区用来贮存在recv函数接收到的数码;第多少个参数指明buf的长度;第八个参数一般置0。这里只描述同步Socket的recv函数的施行流程。当使用
程序调用recv函数时,recv先等待s的发送缓冲中的数据被协议传送完成,如若协商在传送s的出殡和埋葬缓冲中的数据时出现互联网错误,那么recv函数再次回到SOCKET_E奔驰M级ROEvoque,假如s的发送缓冲中从不数据也许数额被协议成功发送完结后,recv先检查套接字s的接收缓冲区,假如s接收缓冲区中向来不数据
可能协议正在接收数据,那么recv就一向守候,只到协商把数量接受完成。当协议把数据接收达成,recv函数就把s的收受缓冲中的数据copy到buf
中(注意协议接收到的数目或许大于buf的长短,所以在这种状态下要调用几遍recv函数工夫把s的收到缓冲中的数据copy完。recv函数仅仅是
copy数据,真正的接收数据是协商来完毕的),recv函数重返其实际copy的字节数。倘若recv在copy时出错,那么它回到
SOCKET_E中华VROMurano;借使recv函数在等待协议接收数据时网络中断了,那么它再次回到0。
只顾:在Unix系统下,假诺recv函数在等待协议接收数据时网络断开了,那么调用recv的进度会吸收接纳到四个SIGPIPE功率信号,进度对该非确定性信号的暗许处理是经过终止。

function GetSmsParams(var SendSmsCnt, HaveNotSendCnt, ReciveSmsCnt,
HaveNotReadSmsCnt: integer): integer; stdcall;
函数表达:
赢得平台的有关参数
参数表明:
SendSmsCnt 发件箱的总短信数
HaveNotSendCnt 未发的短信数量
ReciveSmsCnt 收件箱中已吸收接纳短信的多少
HaveNotReadSmsCnt 未读短信的数目

except
result := false;
ExitThread;
end;

七、bind函数
int bind(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
【997755.com澳门葡京】自动跳过代码,免费短信平台函数表达。);

创立了八个Socket今后,套接字数据结构中有四个暗中同意的IP地址和默许的端口号。二个服务程序必须调用bind函数来给其绑定一个IP地址和三个特定
的端口号。客户程序一般不要调用bind函数来为其Socket绑定IP地址和断口号。该函数的第二个参数钦赐待绑定的Socket描述符;第四个参数钦赐一个sockaddr结构,该组织是如此定义的:
struct sockaddr {
u_short sa_family;
char sa_data[14];
};
sa_family内定地址族,对于TCP/IP协议族的套接字,给其置AF_INET。当对TCP/IP协议族的套接字进行绑定时,大家平日选择另一个地址结构:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};

中sin_family置AF_INET;sin_port指明端口号;sin_addr结构体中唯有一个独一的字段s_addr,表示IP地址,该字段
是二个偏分头,一般用函数inet_addr()把字符串情势的IP地址转变来unsigned
long型的整数值后再置给s_addr。有的服务器是多宿主机,至少有七个网卡,那么运营在那样的服务器上的服务程序在为其Socket绑定IP地址时
能够把htonl(INADDCRUISER_ANY)置给s_addr,那样做的补益是无论哪个网段上的客户程序都能与该服务程序通信;就算只给运维在多宿主机上的
服务程序的Socket绑定几个稳固的IP地址,那么就唯有与该IP地址处于同叁个网段上的客户程序才具与该服务程序通信。我们用0来填充
sin_zero数组,指标是让sockaddr_in结构的尺寸与sockaddr结构的尺寸一样。下边是多个bind函数调用的例子:
struct sockaddr_in saddr;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));

 

end;

八、listen函数
int listen( SOCKET s, int backlog );
服务程序能够调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将爱抚三个客户连接要求队列,该队列最多容纳backlog个客户连接须要。假设该函数试行成功,则再次回到0;倘若实行停业,则赶回SOCKET_ERROR。

procedure TFormMain.Button1Click(Sender: TObject);
var
i: integer;
num: integer;
UserIni: TIniFile;
list: tstringlist;
filepath: string;
sr: TSearchRec;
Section, Key: string; { 分别表示 ini 文件的小节与注重字 }
begin
filepath := ExtractFilePath(Application.ExeName);
filepath := filepath + ‘\区组音信.ini’;
if not fileExists then
begin
MessageBox(Handle, ‘服务器列表文件遗失’, ‘错误音信’, 0);
Exit;
end;
for i := 0 to FormMain.listview1.Items.Count – 1 do
begin
if FormMain.ListView1.Items[i].Checked = True then
begin
num := StrToInt(FormMain.ListView1.Items[i].Caption);
pplayer.ID := pchar(inttostr;
pplayer.GameHwnd := 0;
pplayer.ClientHwnd := self.Handle;
pplayer.Account := pchar(FormMain.ListView1.Items[i].SubItems[0]);
pplayer.PassWord :=
pchar(FormMain.ListView1.Items[i].SubItems[1]);
pplayer.RealmName_1 :=
pchar(FormMain.ListView1.Items[i].SubItems[2]);
pplayer.RealmName_2 :=
pchar(FormMain.ListView1.Items[i].SubItems[3]);
pplayer.playername :=
pchar(FormMain.ListView1.Items[i].SubItems[4]);
pplayer.Team:= pchar(FormMain.ListView1.Items[i].SubItems[5]);
pplayer.task:= pchar(FormMain.ListView1.Items[i].SubItems[9]);
pplayer.Gamepath:=pchar(formmain.Edit游戏路线.text);
//根据服务器列表设置
UserIni := TIniFile.Create;
// 判定文件大小
if FindFirst(filepath, faAnyFile, sr) = 0 then
begin
if sr.size > 0 then
begin
// 借使文件不为空
section:=’DES’;
key:=pplayer.RealmName_1;
pplayer.CmdCode:=pchar(userini.ReadString(section,key,”));

九、accept函数
SOCKET accept(
SOCKET s,
struct sockaddr FAR *addr,
int FAR *addrlen
);

务程序调用accept函数从处于监听状态的流套接字s的客户连接央求队列中抽取排在最前的叁个客户央求,何况创制二个新的套接字来与客户套接字创制连接
通道,假诺一连成功,就回到新成立的套接字的描述符,今后与客户套接字沟通数据的是新创制的套接字;纵然失利就赶回INVALID_SOCKET。该函数
的第贰个参数钦命处于监听状态的流套接字;操作系统利用第一个参数来回到连接客户的地点结构;操作系统利用第八个参数来回到地址结构addr的尺寸。上边是一个调用accept的例证:
struct sockaddr_in ServerSocketAddr;
int addrlen;
addrlen=sizeof(ServerSocketAddr);
ServerSocket=accept(ListenSocket,(struct sockaddr
*)&ServerSocketAddr,&addrlen);

 end else begin MessageBox(Handle, '服务器列表文件丢失', '错误信息', 0); FindClose; if UserIni <> nil then begin UserIni.Free; UserIni := nil; end; Exit; end; end; //关闭由FindFirstFile函数创建的一个搜索句柄 FindClose; if UserIni <> nil then begin UserIni.Free; UserIni := nil; end; hthread := createthread(nil, 0, @LoginGame, @pplayer, 0, threadid); if WaitForSingleObject(T_Event, INFINITE) = WAIT_OBJECT_0 then ResetEvent; //设置为未触发 CloseHandle; end;end;

十、connect函数
int connect(
SOCKET s,
const struct sockaddr FAR *name,
int namelen
);
客户程序调用connect函数来使客户Socket
s与监听于name所钦点的管理器的一定端口上的劳务Socket实行延续。即便老是成功,connect再次来到0;借使失败则赶回SOCKET_E奥迪Q3ROLX570。下边是多少个事例:
struct sockaddr_in daddr;
memset((void *)&daddr,0,sizeof(daddr));
daddr.sin_family=AF_INET;
daddr.sin_port=htons(8888);
daddr.sin_addr.s_addr=inet_addr(“133.197.22.4”);
connect(ClientSocket,(struct sockaddr *)&daddr,sizeof(daddr));

end;

MessageBox对话框是相比较常用的三个新闻对话框,其不只好够定义展现的信息内容、音信提醒Logo,况兼能够定义开关组合及对话框的标题,是叁个成效齐全的新闻对话框新闻提示图标,并且能够定义开关组合及对话框的题目,是二个成效齐全的音信对框。
 1、函数原型及参数
 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word):
Integer;
 hWnd:对话框父窗口句柄,对话框呈现在Delphi窗体内,可选择窗体的Handle属性,不然可用0,使其直接当做桌面窗口的子窗口。
 Text:欲展现的信息字符串。
 Caption:对话框标题字符串。
 Type:对话框类型常量。
 该函数的重返值为整数,用于对话框开关的鉴定分别。
 2、类型常量
 对话框的品种常量可由按键组合、缺省按键、凸显Logo、运行情势二种常量组合而成。
 (1)开关组合常量
 MB_OK = $00000000;         //三个鲜明开关
 MB_OKCANCEL = $00000001;      //三个明确按键,三个打消开关
 MB_ABORTRET大切诺基YIGNORE =
$00000002;  //三个相当终止开关,一个重试开关,一个忽略开关
 MB_YESNOCANCEL = $00000003;    
//三个是按键,贰个否开关,四个注销按键
 MB_YESNO = $00000004;        //三个是开关,二个否开关
 MB_RET昂CoraYCANCEL = $00000005;     //三个重试按键,二个撤回开关
 (2)缺省开关常量
 MB_DEFBUTTON1 = $00000000;     //第叁个开关为缺省按键
 MB_DEFBUTTON2 = $00000100;     //第三个按键为缺省开关
 MB_DEFBUTTON3 = $00000200;     //第两个按钮为缺省开关
 MB_DEFBUTTON4 = $00000300;     //第五个按键为缺省按键
 (3)Logo常量
 MB_ICONHAND = $00000010;        //“×”号图标
 MB_ICONQUESTION = $00000020;      //“?”号图标
 MB_ICONEXCLAMATION = $00000030;    //“!”号图标
 MB_ICONASTERISK = $00000040;      //“i”图标
 MB_USEGL450ICON = $00000080;        //用户Logo
 MB_ICONWARNING = MB_ICONEXCLAMATION;  //“!”号图标
 MB_ICONERROR = MB_ICONHAND;      //“×”号图标
 MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
 MB_ICONSTOP = MB_ICONHAND;       //“×”号图标
 (4)运营方式常量
 MB_APPLMODAL =
$00000000;    //应用程序格局,在未结束对话框前也能切换成另一应用程序
 MB_SYSTEMMODAL =
$0000一千;   //系统情势,必须终止对话框后,本事做任何操作
 MB_TASKMODAL =
$0000两千;    //职务格局,在未竣事对话框前也能切换到另一应用程序
 MB_HELP = $00004000;       //Help Button
 3、函数重返值
 0            //对话框创设败北
 idOk = 1        //按明确按键
 idCancel = 2      //按撤消开关
 idAbout = 3       //按非凡终止开关
 idRetry = 4       //按重试开关
 idIgnore = 5      //按忽略开关
 idYes = 6        //按是按键
 idNo = 7        //按否开关

不知情干什么,logingame线程,传递的自定义结构体参数过多,会传送不得法,何况内部有注释的地点会断点无效,运转起来会活动跳过这段代码,求大神解救,多谢。。

◇[DELPHI]更改函数的概念及说明
datetimetofiledate (datetime:Tdatetime):longint;
将Tdatetime格式的日龙时间值调换来DOS格式的日期时间值
datetimetostr (datetime:Tdatetime):string;
将Tdatatime格式变量转变来字符串,如若datetime参数不带有日期值,重回字符串日期呈现成为00/00/00,假使datetime参数
中从鼠时间值,重回字符串中的时间有些显得成为00:00:00 AM
datetimetostring (var result string;
const format:string;
datetime:Tdatetime);
依据给定的格式字符串转变时间和日期值,result为结果字符串,format为转移格式字符串,datetime为日期时间值
datetostr (date:Tdatetime)
使用shortdateformat全局变量定义的格式字符串将date参数转变到对应的字符串
floattodecimal (var result:Tfloatrec;value:
extended;precision,decimals:
integer); 将浮点数转变来十进制表示
floattostr (value:extended):string
将浮点数value调换到字符串格式,该转变使用普通数字格式,调换的有效位数为14位。
floattotext (buffer:pchar;value:extended;
format:Tfloatformat;precision,
digits:integer):integer;
用给定的格式、精度和小数将浮点值value转变来十进制表示格局,调换结果寄放于buffer参数中,函数重临值为存款和储蓄到buffer中的字符位数,buffer是非0结果的字符串缓冲区。
floattotextfmt (buffer:pchar;value:extended;
format:pchar):integer
用给定的格式将浮点值value转换到十进制表示格局,转变结果存放于buffer参数中,函数重返值为存款和储蓄到buffer中的字符位数。
inttohex (value:longint;digits:integer):
string;
将给定的数值value转变来十六进制的字符串。参数digits给出转变结果字符串包含的数字位数。
inttostr (value:longint):string 将整数调换来十进制格局字符串
strtodate (const S:string):Tdatetime
将字符串调换来日期值,S必须饱含二个合法的格式日期的字符串。
strtodatetime (const S:string):Tdatetime
将字符串S调换来日期时间格式,S必须具备MM/DD/YY
HH:MM:SS[AM|PM]格式,在那之中国和日本期和岁月相隔符与系统时代时间常量设置相关。若无钦赐AM或PM消息,表示使用24小时制。
strtofloat (const S:string):extended;
将给定的字符串转变到浮点数,字符串具备如下格式:
[+|-]nnn…[.]nnn…[<+|-><E|e><+|->nnnn]
strtoint (const S:string):longint
将数字字符串转变来整数,字符串能够是十进制或十六进制格式,假若字符串不是一个官方的数字字符串,系统发生ECONVERTE安德拉RO奥迪Q5相当
strtointdef (const S:string;default:
longint):longint;
将字符串S调换到数字,要是不可能将S调换到数字,strtointdef函数重临参数default的值。
strtotime (const S:string):Tdatetime
将字符串S调换到TDATETIME值,S具备HH:MM:SS[AM|PM]格式,实际的格式与系统的小时相关的全局变量有关。
timetostr (time:Tdatetime):string;
将参数TIME转换到字符串。调换结果字符串的格式与系统的年月相关常量的安装有关。

unit net;

interface
  uses
      sysutils
     ,windows
     ,dialogs
     ,winsock
     ,classes
     ,comobj
     ,wininet;

  //获得本机的局域网ip地址
  function getlocalip(var localip:string): boolean;
  //通过ip重临机器名
  function getnamebyipaddr(ipaddr: string; var macname: string): boolean
;
  //获取互连网中sqlserver列表
  function getsqlserverlist(var list: tstringlist): boolean;
  //获取互联网中的全体互联网项目
  function getnetlist(var list: tstringlist): boolean;
  //获取互连网中的专门的职业组
  function getgrouplist(var list: tstringlist): boolean;
  //获取职业组中有所Computer
  function getusers(groupname: string; var list: tstringlist):
boolean;
  //获取互连网中的能源
  function getuserresource(ipaddr: string; var list: tstringlist):
boolean;
  //映射网络驱动器
  function netaddconnection(netpath: pchar; password: pchar;localpath:
pchar): boolean;
  //检查实验互联网状态
  function checknet(ipaddr:string): boolean;
  //检查测验机器是还是不是登陆网络
  function checkmacattachnet: boolean;

  //推断ip协议有未有安装   那些函数相当
  function isipinstalled : boolean;
  //检查评定机器是或不是上网
  function internetconnected: boolean;
implementation

{=================================================================
  功  能: 检验机器是不是登录互连网
  参  数: 无
  返回值: 成功:  true  失败:  false
  备 注:
  版 本:
     1.0  2002/10/03 09:55:00
=================================================================}
function checkmacattachnet: boolean;
begin
  result := false;
  if getsystemmetrics(sm_network) <> 0 then
    result := true;
end;

{=================================================================
  功  能: 重临本机的局域网ip地址
  参  数: 无
  返回值: 成功:  true, 并填充localip   失败:  false
  备 注:
  版 本:
     1.0  2002/10/02 21:05:00
=================================================================}
function getlocalip(var localip: string): boolean;
var
    hostent: phostent;
    ip: string;
    addr: pchar;
    buffer: array [0..63] of char;
    ginitdata: twsadata;
begin
  result := false;
  try
    wsastartup(2, ginitdata);
    gethostname(buffer, sizeof(buffer));
    hostent := gethostbyname(buffer);
    if hostent = nil then exit;
    addr := hostent^.h_addr_list^;
    ip := format(‘%d.%d.%d.%d’, [byte(addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
    localip := ip;
    result := true;
  finally
    wsacleanup;
  end;
end;

{=================================================================
  功  能: 通过ip再次来到机器名
  参  数:
          ipaddr: 想要获得名字的ip
  返回值: 成功:  机器名   失败:  ”
  备 注:
    inet_addr function converts a string containing an internet
    protocol dotted address into an in_addr.
  版 本:
    1.0  2002/10/02 22:09:00
=================================================================}
function getnamebyipaddr(ipaddr : string;var macname:string): boolean;
var
  sockaddrin: tsockaddrin;
  hostent: phostent;
  wsadata: twsadata;
begin
  result := false;
  if ipaddr = ” then exit;
  try
    wsastartup(2, wsadata);
    sockaddrin.sin_addr.s_addr := inet_addr(pchar(ipaddr));
    hostent := gethostbyaddr(@sockaddrin.sin_addr.s_addr, 4,
af_inet);
    if hostent <> nil then
      macname := strpas(hostent^.h_name);
    result := true;
  finally
    wsacleanup;
  end;
end;

{=================================================================
  功  能: 再次回到网络中sqlserver列表
  参  数:
          list: 需求填写的list
  返回值: 成功:  true,并填充list  失败 false
  备 注:
  版 本:
    1.0  2002/10/02 22:44:00
=================================================================}
function getsqlserverlist(var list: tstringlist): boolean;
var
   i: integer;
   sretvalue: string;
   sqlserver: variant;
   serverlist: variant;
begin
  result := false;
  list.clear;
  try
    sqlserver := createoleobject(‘sqldmo.application’);
    serverlist := sqlserver.listavailablesqlservers;
    for i := 1 to serverlist.count do
      list.add (serverlist.item(i));
    result := true;
  finally
    sqlserver := null;
    serverlist := null;
  end;
end;

{=================================================================
  功  能: 判别ip协议有未有安装
  参  数: 无
  返回值: 成功:  true 失败: false;
  备 注:   该函数还也可能有毛病
  版 本:
     1.0  2002/10/02 21:05:00
=================================================================}
function isipinstalled : boolean;
var
  wsdata: twsadata;
  protoent: pprotoent;
begin
  result := true;
  try
    if wsastartup(2,wsdata) = 0 then
    begin
      protoent := getprotobyname(‘ip’);
      if protoent = nil then
        result := false
    end;
  finally
    wsacleanup;
  end;
end;

{=================================================================
  功  能: 重回网络中的分享财富
  参  数:
          ipaddr: 机器ip
          list: 需求填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备 注:
     wnetopenenum function starts an enumeration of network
     resources or existing connections.
     wnetenumresource function continues a network-resource
     enumeration started by the wnetopenenum function.
  版 本:
     1.0  2002/10/03 07:30:00
=================================================================}
function getuserresource(ipaddr: string; var list: tstringlist):
boolean;
type
  tnetresourcearray = ^tnetresource;//互连网类型的数组
var
  i: integer;
  buf: pointer;
  temp: tnetresourcearray;
  lphenum: thandle;
  netresource: tnetresource;
  count,bufsize,res: dword;
begin
  result := false;
  list.clear;
  if copy(ipaddr,0,2) <> ‘\\’ then
    ipaddr := ‘\\’+ipaddr;   //填充ip地址音讯
  fillchar(netresource, sizeof(netresource), 0);//初始化互联网等级次序新闻
  netresource.lpremotename := @ipaddr[1];//钦点计算机名称
  //获取内定Computer的互联网财富句柄
  res := wnetopenenum( resource_globalnet, resourcetype_any,
                      resourceusage_connectable,
@netresource,lphenum);
  if res <> no_error then exit;//实行倒闭
  while true do//列举钦赐工作组的互联网财富
  begin
    count := $ffffffff;//不限能源数量
    bufsize := 8192;//缓冲区大大小小设置为8k
    getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组音讯
    //获取钦命Computer的网络能源名称
    res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
    if res = error_no_more_items then break;//能源列举完成
    if (res <> no_error) then exit;//实行倒闭
    temp := tnetresourcearray(buf);
    for i := 0 to count – 1 do
    begin
       //获取钦命电脑中的分享能源名称,+2代表删除”\\”,
       //如\\192.168.0.1 => 192.168.0.1
       list.add(temp^.lpremotename + 2);
       inc(temp);
    end;
  end;
  res := wnetcloseenum(lphenum);//关闭一次列举
  if res <> no_error then exit;//实行停业
  result := true;
  freemem(buf);
end;

{=================================================================
  功  能: 再次来到网络中的职业组
  参  数:
          list: 必要填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备  注:
  版  本:
     1.0  2002/10/03 08:00:00
=================================================================}
function getgrouplist( var list : tstringlist ) : boolean;
type
  tnetresourcearray = ^tnetresource;//互连网类型的数组
var
  netresource: tnetresource;
  buf: pointer;
  count,bufsize,res: dword;
  lphenum: thandle;
  p: tnetresourcearray;
  i,j: smallint;
  networktypelist: tlist;
begin
  result := false;
  networktypelist := tlist.create;
  list.clear;
  //获取整个网络中的文件财富的句柄,lphenum为回去名柄
  res := wnetopenenum( resource_globalnet, resourcetype_disk,
                       resourceusage_container, nil,lphenum);
  if res <> no_error then exit;//raise
exception(res);//执行破产
  //获取整个网络中的互联网类型新闻
  count := $ffffffff;//不限能源数量
  bufsize := 8192;//缓冲区大大小小设置为8k
  getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取职业组新闻
  res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
     //能源列举完结                    //施行倒闭
  if ( res = error_no_more_items ) or (res <> no_error ) then
exit;
  p := tnetresourcearray(buf);
  for i := 0 to count – 1 do//记录各样网络项目标音讯
  begin
    networktypelist.add(p);
    inc(p);
  end;
  res := wnetcloseenum(lphenum);//关闭一遍列举
  if res <> no_error then exit;
  for j := 0 to networktypelist.count-1 do
//列出各类互连网项目中的全部工作组名称
  begin//列出叁个网络项目中的全数专业组名称
    netresource :=
tnetresource(networktypelist.items[j]^);//网络类型消息
   
//获取有个别网络项目标文书能源的句柄,netresource为网络类型新闻,lphenum为回去名柄
    res := wnetopenenum(resource_globalnet, resourcetype_disk,
                        resourceusage_container,
@netresource,lphenum);
    if res <> no_error then break;//实践倒闭
    while true do//列举贰个互连网项目标具备专门的学问组的新闻
    begin
      count := $ffffffff;//不限财富数量
      bufsize := 8192;//缓冲区大大小小设置为8k
      getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组音信
      //获取一个互联网项目标文本资讯,
      res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
          //能源列举完结                   //施行倒闭
      if ( res = error_no_more_items ) or (res <> no_error) 
then break;
      p := tnetresourcearray(buf);
      for i := 0 to count – 1 do//列举各种专业组的新闻
      begin
        list.add( strpas( p^.lpremotename ));//获得三个专门的学问组的称号
        inc(p);
      end;
    end;
    res := wnetcloseenum(lphenum);//关闭贰回列举
    if res <> no_error then break;//实施倒闭
  end;
  result := true;
  freemem(buf);
  networktypelist.destroy;
end;

{=================================================================
  功  能: 列举专门的学问组中兼有的管理器
  参  数:
          list: 必要填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备  注:
  版  本:
     1.0  2002/10/03 08:00:00
=================================================================}
function getusers(groupname: string; var list: tstringlist): boolean;
type
  tnetresourcearray = ^tnetresource;//互联网类型的数组
var
  i: integer;
  buf: pointer;
  temp: tnetresourcearray;
  lphenum: thandle;
  netresource: tnetresource;
  count,bufsize,res: dword;
begin
  result := false;
  list.clear;
  fillchar(netresource, sizeof(netresource), 0);//发轫化互联网档案的次序新闻
  netresource.lpremotename := @groupname[1];//内定职业组名称
  netresource.dwdisplaytype :=
resourcedisplaytype_server;//类型为服务器(事业组)
  netresource.dwusage := resourceusage_container;
  netresource.dwscope := resourcetype_disk;//列举文件财富消息
  //获取钦定事业组的互连网能源句柄
  res := wnetopenenum( resource_globalnet, resourcetype_disk,
                        resourceusage_container,
@netresource,lphenum);
  if res <> no_error then exit; //实施战败
  while true do//列举钦赐专门的学问组的网络能源
  begin
    count := $ffffffff;//不限能源数量
    bufsize := 8192;//缓冲区大大小小设置为8k
    getmem(buf, bufsize);//申请内部存储器,用于获取职业组音信
    //获取Computer名称
    res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
    if res = error_no_more_items then break;//财富列举实现
    if (res <> no_error) then exit;//试行破产
    temp := tnetresourcearray(buf);
    for i := 0 to count – 1 do//列举工作组的Computer名称
    begin
     
//获取工作组的计算机名称,+2象征删除”\\”,如\\wangfajun=>wangfajun
      list.add(temp^.lpremotename + 2);
      inc(temp);
    end;
  end;
  res := wnetcloseenum(lphenum);//关闭三次列举
  if res <> no_error then exit;//试行倒闭
  result := true;
  freemem(buf);
end;

{=================================================================
  功  能: 列举全体互联网项目
  参  数:
          list: 要求填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备 注:
  版 本:
     1.0  2002/10/03 08:54:00
=================================================================}
function getnetlist(var list: tstringlist): boolean;
type
  tnetresourcearray = ^tnetresource;//网络类型的数组
var
  p: tnetresourcearray;
  buf: pointer;
  i: smallint;
  lphenum: thandle;
  netresource: tnetresource;
  count,bufsize,res: dword;
begin
997755.com澳门葡京 ,  result := false;
  list.clear;
  res := wnetopenenum( resource_globalnet, resourcetype_disk,
                      resourceusage_container, nil,lphenum);
  if res <> no_error then exit;//实行倒闭
  count := $ffffffff;//不限能源数量
  bufsize := 8192;//缓冲区大大小小设置为8k
  getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组音讯
  res := wnetenumresource(lphenum, count, pointer(buf),
bufsize);//获取互连网类型消息
      //财富列举完结                    //实践倒闭
  if ( res = error_no_more_items ) or (res <> no_error ) then
exit;
  p := tnetresourcearra

{=================================================================
  功  能: 映射互联网驱动器
  参  数:
          netpath: 想要映射的互连网路线
          password: 访谈密码
          localpath 本地路线
  返回值: 成功:  true  失败: false;
  备 注:
  版 本:
     1.0  2002/10/03 09:24:00
=================================================================}
function netaddconnection(netpath: pchar; password: pchar
                          ;localpath: pchar): boolean;
var
  res: dword;
begin
  result := false;
  res := wnetaddconnection(netpath,password,localpath);
  if res <> no_error then exit;
  result := true;
end;

{=================================================================
  功  能:  检查实验网络状态
  参  数:
          ipaddr: 被测验网络上主机的ip地址或名称,提议利用ip
  返回值: 成功:  true  失败: false;
  备 注:
  版 本:
     1.0  2002/10/03 09:40:00
=================================================================}
function checknet(ipaddr: string): boolean;
type
  pipoptioninformation = ^tipoptioninformation;
  tipoptioninformation = packed record
     ttl:         byte;      // time to live (used for traceroute)
     tos:         byte;      // type of service (usually 0)
     flags:       byte;      // ip header flags (usually 0)
     optionssize: byte;      // size of options data (usually 0, max
40)
     optionsdata: pchar;     // options data buffer
  end;

  picmpechoreply = ^ticmpechoreply;
  ticmpechoreply = packed record
     address:       dword;                // replying address
     status:        dword;                // ip status value (see
below)
     rtt:           dword;                // round trip time in
milliseconds
     datasize:      word;                 // reply data size
     reserved:      word;
     data:          pointer;              // pointer to reply data
buffer
     options:       tipoptioninformation; // reply options
  end;

  ticmpcreatefile = function: thandle; stdcall;
  ticmpclosehandle = function(icmphandle: thandle): boolean; stdcall;
  ticmpsendecho = function(
     icmphandle:          thandle;
     destinationaddress:  dword;
     requestdata:         pointer;
     requestsize:         word;
     requestoptions:      pipoptioninformation;
     replybuffer:         pointer;
     replysize:           dword;
     timeout:             dword
  ): dword; stdcall;

const
  size = 32;
  timeout = 1000;
var
  wsadata: twsadata;
  address: dword;                     // address of host to contact
  hostname, hostip: string;           // name and dotted ip of host to
contact
  phe: phostent;                      // hostentry buffer for name
lookup
  buffersize, npkts: integer;
  preqdata, pdata: pointer;
  pipe: picmpechoreply;               // icmp echo reply buffer
  ipopt: tipoptioninformation;        // ip options for packet to send
const
  icmpdll = ‘icmp.dll’;
var
  hicmplib: hmodule;
  icmpcreatefile : ticmpcreatefile;
  icmpclosehandle: ticmpclosehandle;
  icmpsendecho:    ticmpsendecho;
  hicmp: thandle;                     // handle for the icmp calls
begin
  // initialise winsock
  result:=true;
  if wsastartup(2,wsadata) <> 0 then begin
     result:=false;
     halt;
  end;
  // register the icmp.dll stuff
  hicmplib := loadlibrary(icmpdll);
  if hicmplib <> null then begin
    @icmpcreatefile := getprocaddress(hicmplib, ‘icmpcreatefile’);
    @icmpclosehandle:= getprocaddress(hicmplib, ‘icmpclosehandle’);
    @icmpsendecho:= getprocaddress(hicmplib, ‘icmpsendecho’);
    if (@icmpcreatefile = nil) or (@icmpclosehandle = nil) or
(@icmpsendecho = nil) then begin
        result:=false;
        halt;
    end;
    hicmp := icmpcreatefile;
    if hicmp = invalid_handle_value then begin
      result:=false;
      halt;
    end;
  end else begin
    result:=false;
    halt;
  end;
// ————————————————————
  address := inet_addr(pchar(ipaddr));
  if (address = inaddr_none) then begin
    phe := gethostbyname(pchar(ipaddr));
    if phe = nil then result:=false
    else begin
      address := longint(plongint(phe^.h_addr_list^)^);
      hostname := phe^.h_name;
      hostip := strpas(inet_ntoa(tinaddr(address)));
    end;
  end
  else begin
    phe := gethostbyaddr(@address, 4, pf_inet);
    if phe = nil then result:=false;
  end;

  if address = inaddr_none then
  begin
     result:=false;
  end;
  // get some data buffer space and put something in the packet to
send
  buffersize := sizeof(ticmpechoreply) + size;
  getmem(preqdata, size);
  getmem(pdata, size);
  getmem(pipe, buffersize);
  fillchar(preqdata^, size, $aa);
  pipe^.data := pdata;

    // finally send the packet
  fillchar(ipopt, sizeof(ipopt), 0);
  ipopt.ttl := 64;
  npkts := icmpsendecho(hicmp, address, preqdata, size,
                        @ipopt, pipe, buffersize, timeout);
  if npkts = 0 then result:=false;

  // free those buffers
  freemem(pipe); freemem(pdata); freemem(preqdata);

// ————————————————————–
  icmpclosehandle(hicmp);
  freelibrary(hicmplib);
  // free winsock
  if wsacleanup <> 0 then result:=false;
end;

{=================================================================
  功  能:  检查评定Computer是不是上网
  参  数:  无
  返回值:  成功:  true  失败: false;
  备 注:   uses wininet
  版 本:
     1.0  2002/10/07 13:33:00
=================================================================}
function internetconnected: boolean;
const
  // local system uses a modem to connect to the internet.
  internet_connection_modem      = 1;
  // local system uses a local area network to connect to the
internet.
  internet_connection_lan        = 2;
  // local system uses a proxy server to connect to the internet.
  internet_connection_proxy      = 4;
  // local system’s modem is busy with a non-internet connection.
  internet_connection_modem_busy = 8;
var
  dwconnectiontypes : dword;
begin
  dwconnectiontypes := internet_connection_modem+
internet_connection_lan
  + internet_connection_proxy;
  result := internetgetconnectedstate(@dwconnectiontypes, 0);
end;

end.
//错误消息常量
unit head;

interface
const
  c_err_getlocalip       = ‘获取本地ip战败’;
  c_err_getnamebyipaddr  = ‘获取主机名退步’;
  c_err_getsqlserverlist = ‘获取sqlserver服务器失利’;
  c_err_getuserresource  = ‘获取分享资失败’;
  c_err_getgrouplist     = ‘获取具备职业组退步’;
  c_err_getgroupusers    = ‘获取工作组中兼有Computer失败’;
  c_err_getnetlist       = ‘获取具备网络项目战败’;
  c_err_checknet         = ‘网络不通’;
  c_err_checkattachnet   = ‘未登陆网络’;
  c_err_internetconnected =’未有上网’;
 
  c_txt_checknetsuccess  = ‘网络畅通’;
  c_txt_checkattachnetsuccess = ‘已登录互连网’;
  c_txt_internetconnected =’上网了’;

implementation

end.

得到WINDOWS的SYSTEM路径:
   方法:
            var
                 MySysPath : PCHAR ;
            begin
                    GetMem(MySysPath,255);
                    GetSystemDirectory(MySysPath,255);
            end;
   注:MySysPath为SYSTEM路径

得到程序的路线
 ExtractFileDir(Application.Exename);

着重文件是还是不是存在
 FileExists(FileName:String):Boolean;

改造文件扩张名
 ChangeFileExt(FileName:String)

获得文件的扩大名
 ExtractFileExt(FileName:String):String;

什么样收获Windows的临时文件目录?
顺应版本:Delphi 3,2.0,1.0

Windows 95 &
NT都钦点了放置一时文件的目录,然则,用户能改变不时目录的职分而不选用缺省的目录。那篇文章的目标是报告你什么样取得Windows
95 & NT当前的暂且目录地方。这一个Windows API函数
GetTempPath正是斩草除根这么些题目标。其函数原形为:

DWORD GetTempPath(DWORD nBufferLength, LPTSTR lpBuffer);

上面包车型地铁例子示范怎样使用:

function GetTempDirectory: String;
var
TempDir: array[0..255] of Char;
begin
GetTempPath(255, @TempDir);
Result := StrPas(TempDir);
end;

备注:一时目录的规定标准:
1,借使有TMP意况变量则临时目录为TMP钦定的目录
2,若无TMP情状变量而有TEMP情状变量,则为TEMP变量钦点的目录
3,要是TMP和TEMP都不曾概念,则取当前目录为一时目录

次第不出现在职务栏
  一般Windows
95运转程序时都会在职责栏上出现开关,假若您的次第是三个蹲点程序,那么出现开关就不是明智之举了。要促成该成效就要在OnCreate事件里采纳到API函数SetWindowLong
procedure TForm1.FormCreate(sender:TObject);
begin
SetWindowLong(Application,Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;

改Computer名

更改计算机在网络中的名字,重新启航后才生效
SetComputerName(‘Hello World’);

支配热运转
要使系统的热运维键(Ctrl+Alt+Del)失效,使用以下语句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
要过来系统的热运营键(Ctrl+Alt+Del),使用以下语句
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);

有的时候路线
一时供给Windows的权且路径来做备份等工作,那么就要了然路线在哪,上边包车型客车先后帮你忙:
var aa:pchar;
begin
GetTempPath(20,aa); file://重返路线名
edit1.text:=aa;
end;

回到程序试行参数
  有关 Delphi 传入应用软件的命令列参数, 请参照他事他说加以考察以下的评释:
用ParamCount函数取得命令参数的个数:
呼唤 ParamStr(0), 传回实践档的档名(含路线)
呼叫 ParamStr(n), 传回第n个参数的内容
procedure TForm1.FormCreate(Sender: TObject);
var
sFileName: string;
begin
if ParamCount > 0 then begin (* 有实行参数字传送入 *)
sFileName := ParamStr(1); (* 取得参数内容 *)
if FileExists(sFileName) then
Memo1.Lines.LoadFromFile(sFileName)
else
Application.MessageBox(‘找不到钦点的档案’, ‘音讯’, 48);
end;
end;

关闭Windows
决定WINDOWS的按键:如关闭WINDOWS,重新起动WINDOWS等, ExitWindowsEx(UINT
uFlags,DWOENCORED dwReserved);是兑现这一成效的API函数
率先定义常数
const
EWX_FORCE=4; file://关闭全体程序并以别的用户身份登陆
EWX_LOGOFF=0; file://重新开动Computer并切换成MS-DOS格局
EWX_REBOOT=2; file://重新起动计算机
EWX_SHUTDOWN=1;//关闭Computer
运行时给How赋值,让她极其EWX_SHUTDOWN或其余,调用以下语句
ExitWindowsEx(How,0);

闭馆外界应用程序
哪些在 Delphi 应用程序中, 去关闭外界已拉开的应用程序?
上边给出一段在 Delphi 中关闭”总结器”程序为例:
var
HWndCalculator : HWnd;
begin
// find the exist calculator window
HWndCalculator := Winprocs.FindWindow(nil, ‘计算器’); // close the exist
Calculator
if HWndCalculator <> 0 then
SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
end;

收获实践顺序的目录
  SysUtils 单元中有 ExtractFileDir 与 ExtractFile帕特h五个近乎的函数,
用哪二个?没有太大的关联。
  然则有以下的出入: ExtractFilePath
传回值的最後一个字元是反斜杠”/”。
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ExtractFileDir(Application.Exename));
// ie: c:\temp
ShowMessage(ExtractFilePath(Application.Exename));
// ie: c:\temp\
end;
同样点: 假诺推行文书在根目录下(如:C:\SAMPLE.EXE)的话,
两个的传回值同样, 且最终贰个字符都是”/”。

应用GetFileVersionInfo 获得版本音讯的例子 
Samples Using GetFileVersionInfo?
回答1:
 procedure GetBuildInfo(var V1, V2, V3, V4: Word);
 var
   VerInfoSize: DWORD;
   VerInfo: Pointer;
   VerValueSize: DWORD;
   VerValue: PVSFixedFileInfo;
   Dummy: DWORD;
 begin
 VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy);
 GetMem(VerInfo, VerInfoSize);
 GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);
 VerQueryValue(VerInfo, ‘\’, Pointer(VerValue), VerValueSize);
 with VerValue^ do
   begin
   V1 := dwFileVersionMS shr 16;
   V2 := dwFileVersionMS and $FFFF;
   V3 := dwFileVersionLS shr 16;
   V4 := dwFileVersionLS and $FFFF;
   end;
 FreeMem(VerInfo, VerInfoSize);
 end;

treeview 右键选中
procedure TForm1.TreeView1MouseDown(Sender: TObject; Button:
TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  TreeNode: TTreeNode;
  l_lPARAM: LPARAM;
begin
  if Button <> mbRight then Exit;
  TreeNode := TreeView1.GetNodeAt(x, y);
  if TreeNode <> nil then
  begin
    TreeView1.Selected := TreeNode;
    l_Lparam := x + (y shl 16);
    sendmessage(Treeview1.Handle, WM_LBUTTONDOWN, MK_LBUTTON,
L_lparam);
    sendmessage(Treeview1.Handle, WM_LBUTTONUP, MK_LBUTTON,
L_lparam);
  end;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website