API声明透明

{API声明}
type
TSetLayeredWindowAttributes
= function(wnd: HWND; crKey: DWORD;
bAlpha: BYTE; dwFlag: DWORD): Boolean; stdcall; const
WS_EX_LAYERED = $;
LWA_ALPHA = ; var
hLibUser32: THandle;
MySetLayeredWindowAttributes:
TSetLayeredWindowAttributes; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);
var
p: Pointer;
begin
hLibUser32 := LoadLibraryA(‘user32.dll');
MySetLayeredWindowAttributes := nil;
if hLibUser32 <> then begin
p:=GetProcAddress(hLibUser32,
‘SetLayeredWindowAttributes');
if p = nil then begin
FreeLibrary(hLibUser32);
hLibUser32 := ;
end else begin
MySetLayeredWindowAttributes :=
TSetLayeredWindowAttributes(p);
end;
end;
if hLibUser32 <> then begin
SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE)
or WS_EX_LAYERED);
ScrollBar1.Position := ScrollBar1.Max;
ScrollBar1Change(Self);
end else begin
ShowMessage(‘该操作系统不支持!');
Application.Terminate;
end;
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
if hLibUser32 <> then begin
FreeLibrary(hLibUser32);
hLibUser32 := ;
end;
end; procedure TForm1.ScrollBar1Change(Sender: TObject);
var
alpha: Integer;
begin
if hLibUser32 <> then begin
alpha := ScrollBar1.Position;
alpha := alpha * div
(ScrollBar1.Max - ScrollBar1.Min);
if alpha < then alpha := ;
if alpha > then alpha := ;
MySetLayeredWindowAttributes
(Handle, , Byte(alpha), LWA_ALPHA);
end;
end;

如何取得系统中的桌面的路径

我们在编写程序的时候,经常会需要得到系统中的一些特殊目录,例如:桌面、收藏夹、历史文件、字体等。在windows98、windows NT、Windows 中他们的位置是不一样的,尤其在windows2000和wodows NT中,他们的位置随着登陆用户的不同而改变。那么我们要如何取得这些特殊目录的具体位置呢?
当然是利用Api函数,现在我介绍两个Api函数,利用他们就可以轻松简单的获取这些特殊系统目录。
Function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer;
var ppidl: PItemIDList): HResult; stdcall;
Function SHGetPathFromIDList(pidl: PItemIDList; pszPath: PChar): BOOL;stdcall;
其中由nFolder参数指定的就是各个特殊系统目录:
CSIDL_DESKTOP:毫无疑问这就是桌面;
CSIDL_DRIVERS:我的电脑;
CSIDL_FAVORITES:收藏夹;
CSIDL_STARTUP:开始菜单;
CSIDL_NETWORK:网上邻居;
还有很多,你可以查阅一下Delphi的Win32 Api函数的帮助文件,不过在帮助文件下的这些参数也不是很全,像收藏夹帮助文件里面就没有,你可以查阅一下它的头文件:shlobj.pas。
下面我就利用这两个函数取得桌面的路径(在win98和win2000下都可以使用):
uses shlobj;
var
pitem:PITEMIDLIST;
s:string;
begin
shGetSpecialFolderLocation(handle,CSIDL_DESKTOP,pitem);
setlength(s,);
shGetPathFromIDList(pitem,pchar(s));
end;
在字符串s中存储的就是桌面的路径值。简单吧!就是这么简单,但要是你不知道,你就得绕一个大圈子。

Delphi重启电脑、关闭计算机、注销(退出当前用户用其它用户重新登录系统)功能的实现代码,在Delphi中算是比较基础的例子了,程序运行后,窗体上有对应的控制按钮,测试时候要注意哦,如果点击关闭或重启,电脑就会执行该项命令,要保存好你需要保存的内容。

unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TMainForm = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
procedure GetPrivilege;
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.GetPrivilege;
var
NewState: TTokenPrivileges;
lpLuid: Int64;
ReturnLength: DWord;
ToKenHandle: Cardinal;
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES
OR TOKEN_ALL_ACCESS
OR STANDARD_RIGHTS_REQUIRED
OR TOKEN_QUERY,ToKenHandle);
LookupPrivilegeValue(nil,'SeShutdownPrivilege',lpLuid);
NewState.PrivilegeCount:=;
NewState.Privileges[].Luid:=lpLuid;
NewState.Privileges[].Attributes:=SE_PRIVILEGE_ENABLED;
ReturnLength:=;
AdjustTokenPrivileges(ToKenHandle,False,NewState,,nil,ReturnLength);
end;
procedure TMainForm.Button1Click(Sender: TObject);
begin
GetPrivilege;
ExitWindowsEx(EWX_REBOOT OR EWX_POWEROFF, );
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
GetPrivilege;
ExitWindowsEx(EWX_SHUTDOWN OR EWX_POWEROFF, );
end;
procedure TMainForm.Button3Click(Sender: TObject);
begin
ExitWindowsEx(EWX_LOGOFF, );
end;
end.

delphi 获取所有应用程序窗口标题 类似任务管理器

delphi 获取所有应用程序窗口标题 类似任务管理器
procedure TForm1.Button1Click(Sender: TObject);
var
hCurWindow:HWnd;
WinText:array[..] of char;
begin
memo1.Lines.Clear;
hCurWindow:=GetWindow(Handle,GW_HWNDFirst);
while hCurWindow<> do
begin
if (GetWindowText(hCurWindow,@WinText,)>) and (IsWindowVisible(hcurwindow))
and(StrPas(@WinText)<>'Program Manager')and(StrPas(@WinText)<>self.Caption) then
//if GetWindowText(hCurWindow,@WinText,255)>0 then 此可获得所有窗口標題(可找到系統程序)
Memo1.Lines.Add(StrPas(@WinText));
hCurWindow:=GetWindow(hCurWindow,GW_HWNDNEXT); //查找下个程序窗口句柄.
end;
end;

重启计算机:

procedure TForm1.RebootSystem;
var
osVerInfo: TOSVersionInfo;
rl: Cardinal;
hToken: Cardinal;
tkp: TOKEN_PRIVILEGES;
begin
if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken) then
begin
osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
case osVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT: // Windows NT/2000/XP
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or
TOKEN_QUERY, hToken);
if LookupPrivilegeValue(nil, 'SeShutdownPrivilege',
tkp.Privileges[].Luid) then
begin
tkp.Privileges[].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := ;
AdjustTokenPrivileges(hToken, False, tkp, , nil, rl);
end;
// ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0); //关闭计算机
ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启
end;
VER_PLATFORM_WIN32_WINDOWS: // Windows 95/98/98SE/Me
begin
// ExitWindowsEx(EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF, 0); //关闭计算机
ExitWindowsEx(EWX_REBOOT, $FFFF); // 重启 end;
end;
end;
end;

API应用实例的更多相关文章

  1. Google Map JavaScript API V3 实例大全

    Google Map JavaScript API V3 实例大全 基础知识 简单的例子 地理位置 语言 位置 坐标 简单的投影 事件 简单事件 关闭事件 多次添加事件 事件属性 控制 php禁用ui ...

  2. [Python][flask][flask-login]关于flask-login中各种API使用实例

    本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...

  3. [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程

    简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...

  4. The MySQL C API 编程实例

    在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有 ...

  5. 腾讯QQAndroid API调用实例(QQ分享无需登录)

    腾讯QQAndroid API调用实例(QQ分享无需登录)   主要分为两个步骤: 配置Androidmanifest.xml 修改activity里边代码 具体修改如下:   1.Activity代 ...

  6. 微信WeixinJSBridge API使用实例

    http://www.jb51.net/article/66642.htm 这篇文章主要介绍了微信WeixinJSBridge API使用实例,本文直接给出HTML代码,代码中包含了很多实用功能,如图 ...

  7. javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)

    引言: JavaMai下载地址l jar包:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  8. javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  9. 关于操作 ASP.NET Web API的实例

    WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...

  10. [转帖]关于flask-login中各种API使用实例

    原贴:http://www.cnblogs.com/alima/p/5796298.html 简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(I ...

随机推荐

  1. Python--字符编码、文字处理、函数

    了解字符编码的知识储备 我们日常用到的文本编辑器有nodepad++,pycharm,word等等,用他们存取文件的过程大致类似,需要知道打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编 ...

  2. [CSP-S模拟测试]:卡常题/b(基环树+DP)

    题目描述 $ρ$有一个二分连通无向图,$X$方点.$Y$方点均为$n$个(编号为$1\sim n$).这个二分图比较特殊,每一个$Y$方点的度为$2$,一条黑色边,一条白色边.所有黑色边权值均为$a$ ...

  3. [CSP-S模拟测试]:简单的玄学(数学)

    题目描述 有$m$个在$[0,2^n)$内均匀随机取值的整型变量,球至少有两个变量取值相同的概率.为了避免精度误差,假设你的答案可以表示成$\frac{a}{b}$的形式,(其中$(a,b)=1$), ...

  4. 探索Redis设计与实现8:连接底层与表面的数据结构robj

    本文转自互联网 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial ...

  5. CSS入门之盒模型(六分之四)

    盒模型要点知识 务必注意看,这可是前端面试 必定会遇到 的问题. box-sizing 盒模型的主要CSS属性,除继承外有两个值: content-box 这里不再细说历史原因,只说其作用. cont ...

  6. #define学习

    C语言中数据有常量和变量,其中定义常量主要有两种方法,这里主要学习#define定义常量的方法. 1.#define定义数字宏常量 例子如下: 1 2 3 4 5 6 7 8 9 10 #includ ...

  7. 51、tf-idf值提取关键词

    import testWord2vec2 as tw import tensorflow_util as tu import numpy as np model = tw.load_model() n ...

  8. IIS日志如何记录X-Forwarded-For

    起因 最近因为某个站点的流量异常,需要统计一下服务器的来源IP,本来开一下IIS日志就能搞定的事儿,但不幸的是生产服务器使用F5做了负载均衡,IIS日志无法记录到真实IP,真实的IP在"x- ...

  9. thymeleaf时间戳转换

    <span th:text="${#dates.format(curDate, 'yyyy-MM-dd HH:mm:ss')}"></span> <t ...

  10. shell编程2:数组的运用

    Shell 数组 定义数组 在Shell中,用括号来表示数组,数组元素用"空格"符号分割开.定义数组的一般形式为: name=(name1 name2 name3) 复制代码 还可 ...