说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

写小执行程序-Delphi资料

HTML文档下载 WORD文档下载 PDF文档下载
写小执行程序-Delphi资料

首先看看程序头的写法:

program DeskPop;

uses Windows

Messages

ShellAPI

sysutils;

{$R *.RES}

{可以看出本程序比普通的 Delphi 程序用到的 Unit 少的多。 下面声明了全局常量和变量,暂时可以不管他们。}

const AppName = 'DeskTop Hide';

var

x: integer;

tid: TNotifyIconData;

WndClass: array[0..50] of char;

{现在进入程序的主要部分,首先是定义了一批过程,为了能让读者更好地理解,我们先把这些过程跳过去,先说主程序。主程序位于程序的最后,这样做的好处是可以直接使用程序中定义的过程。主程序十分简单:}

begin

WinMain;

end.

{看来所有的工作都由 WinMain 完成了。这个 WinMain 使用标准的 WinAPI 函数进行编程,主要步骤是:先声明一个窗口类,然后创建一个主窗口,最后进入消息循环,直到程序结束。}

procedure WinMain;

var

Wnd: hWnd; {声明窗口句柄(Handle)变量}

Msg: TMsg; {声明消息变量}

cls: TWndClass; {窗口类变量}

begin {Previous instance running ? If so

exit }

{检查是否程序已经运行,如果已经运行则调用 Panic 过程退出}

if FindWindow (AppName

Nil) <> 0 then Panic (AppName + ' is already running.');

{Register the window class}

{这里的注册窗口类程序是例行公事,照抄即可}

FillChar (cls

sizeof (cls)

0); {用这一句将窗口类变量 cls 清零}

cls.lpfnWndProc := @DummyWindowProc; {取回调函数DummyWindowProc的地址}

cls.hInstance := hInstance; {实例句柄}

cls.lpszClassName := AppName; {窗口类名}

RegisterClass (cls); {注册窗口类cls}

{现在可以创建程序的主窗口了-在本程序中是个虚拟窗口}

{Now create the dummy window}

Wnd := CreateWindow (AppName

AppName

ws_OverlappedWindow

cw_UseDefault

cw_UseDefault

cw_UseDefault

cw_UseDefault

0

0

hInstance

Nil);

x:= 0; {变量X其实是个开关变量,记录现在是否已经隐藏了桌面}

{如果窗口创建成功,则显示窗口,并进入消息循环}

if Wnd <> 0 then

begin

ShowWindow (Wnd

sw_Hide);{本例中窗口是隐藏的}

{下面进入消息循环,该循环将不断运行直到 GetMessage 返回0}

while GetMessage (Msg

0

0

0) do

begin

TranslateMessage (Msg);

DispatchMessage (Msg);

end;

end;

end;

{现在看来,程序的主框架很明了,但是它还不能完成任何任务。过程 Panic 将显示一个对话框后退出程序,它在 Winmain 过程的开始部分被调用,其实 Panic 的功能很简单,之所以要写成一个函数的原因恐怕一方面是结构化编程的需要,另一方面借此避开了 String 和 PChar 的转换。}

procedure Panic (szMessage: PChar);

begin

if szMessage <> Nil then MessageBox (0

szMessage

AppName

mb_ok);

Halt (0);

end;

{下面是回调 (Callback) 函数 DummyWindowProc,如果说 Winmain 过程是本程序-或者说是本应用或实例的生命,那么这个回调函数可以说是主窗口的灵魂。每一个标准的或者说是规范的 Windows 窗口都有一个回调函数,以处理发给该窗口的消息。所谓“回调”的意思是这个函数不是由程序直接调用的,而是由 Windows 系统调用(还记得我们在窗口类中给 lpfnWndProc 赋过值吗, 这就是事件驱动编程。}

function DummyWindowProc (Wnd: hWnd; Msg

wParam: Word; lParam: LongInt) :LongInt; stdcall;

{注意这里有一个 stdcall; 定义了回调函数}

var

TrayHandle: THandle;

dc: hDC;

i: Integer;

pm: HMenu;

pt: TPoint;

begin

DummyWindowProc := 0;

{下面两句是找到 Win95 任务栏的句柄}

StrPCopy(@WndClass[0]

'Progman');

TrayHandle := FindWindow(@WndClass[0]

nil);

{下面开始处理消息}

case Msg of {收到窗口创建消息 - 在任务栏上显示一个图标}

wm_Create:begin

tid.cbSize := sizeof (tid);

tid.Wnd := Wnd;

tid.uID := 1;

tid.uFlags := nif_Message or nif_Icon or nif_Tip;

tid.uCallBackMessage := wm_User;

tid.hIcon := LoadIcon (hInstance

'MAINICON');

lstrcpy (tid.szTip

'Desktop is on');

Shell_NotifyIcon (nim_Add

@tid);

end;

wm_Destroy: {收到关闭窗口消息时的处理}

begin

Shell_NotifyIcon (nim_Delete

@tid);

PostQuitMessage (0);

ShowWindow(TrayHandle

SW_RESTORE);

end;

wm_Command: {收到菜单消息时调用 HandleCommand 过程,并退出函数}

begin

HandleCommand (Wnd

LoWord (wParam));

Exit;

end;

wm_User: {收到其他用户消息时的处理}

{如果单击了鼠标左键, 则打开或关闭桌面}

if (lParam = wm_LButtonDown) then

begin

if x = 0 then

begin

ShowWindow(TrayHandle

SW_HIDE);

tid.hIcon := LoadIcon (hInstance

'offICON');

lstrcpy (tid.szTip

'Desktop is off');

Shell_NotifyIcon (NIM_MODIFY

@tid);

x:=1

end

else

begin

ShowWindow(TrayHandle

SW_RESTORE);

tid.hIcon := LoadIcon (hInstance

'ONICON');

lstrcpy (tid.szTip

'Desktop is on');

Shell_NotifyIcon (NIM_MODIFY

@tid);

x:= 0;

end;

end {end of if}

else

{如果是鼠标右键,则动态生成一个弹出式菜单}

if (lParam = wm_RButtonDown) then

begin

GetCursorPos (pt);

pm := CreatePopupMenu;

AppendMenu (pm

0

Ord ('A')

'About DeskTop Hide...');

AppendMenu (pm

mf_Separator

0

Nil);

AppendMenu (pm

0

Ord ('E')

'Exit DeskTop Hide');

SetForegroundWindow (Wnd);

dc := GetDC (0);

if TrackPopupMenu (pm

tpm_BottomAlign or tpm_RightAlign

pt.x

GetDeviceCaps(dc

HORZRES){pt.y}

0

Wnd

Nil) then

SetForegroundWindow (Wnd);

DestroyMenu (pm)

end; {end of if}

end; {end of case}

{在处理过消息之后,还要调用默认函数,以完成标准的Windows程序应该执行的任务,所以这一句非常重要}

DummyWindowProc := DefWindowProc (Wnd

Msg

wParam

lParam);

end;

{这个就是处理菜单消息的过程}

procedure HandleCommand (Wnd: hWnd; Cmd: Word);

begin

case Cmd of

Ord ('A'): MessageBox (0

'Freeware brian.slack@strath.ac.uk 1997'

AppName

mb_ok);

Ord ('E'): PostMessage (Wnd

wm_Close

0

0);

end;

end;

至此我们已经完成了这个只有38K的能将 Win95 桌面隐藏起来的程序,只要将本文中所有的函数和过程的顺序倒置,并将主程序放到最后,即可编译通过。

【MDCC 2014】高德LBS大赛闭幕式暨颁奖典礼:下一个50亿应用花落谁家? MDCC 2014移动开发者大会开幕:全生态系统齐聚 开发者成主角 蓝港互动有限公司董事长&amp;amp;首席执行官王峰:移动互联网泛娱乐化趋势 多盟联合创始人&amp;amp;总裁张鹤:多盟DSPAN助力开发者高效变现 创新工场联合创始人汪华:移动互联网时代的跃迁式增长 阿里巴巴集团UC移动事业群总裁俞永福:AMAP Inside——更专业、更开放 《程序员+》移动应用上线 启动“2014 MDCC十大人气应用/产品评选活动” 微软开发体验与平台合作事业部大中华区DX部门总经理Srikanth Raju:基于云的跨平台开发 Facebook平台工程合作部亚太区总经理张博:通过Facebook构建下一代移动应用 Vungle工程副总裁Wayne Chan:移动视频广告的未来 友盟副总裁焦岳:2014移动互联网行业趋势&amp;amp;大数据的行业价值与运营支持 联发科技创意实验室副总裁Marc Naddell:以小博大的可穿戴方案 用友软件股份有限公司高级副总裁谢志华:企业互联网移动化触手可及 【MDCC 2014】英雄会晚宴——厉兵秣马,再上征程 移动开发技术与平台峰会(上):流量优化、数据管理、IM、LBS与跨平台开发 【推广、盈利与投资论坛】探寻推广与盈利新趋势 【企业移动化论坛】翻山越岭,创新突围企业移动化 解读微信与开发者双赢的开放能力 2014年10月操作系统份额:Windows 8.1份额喜人,Linux跌惨了 智能硬件峰会(下):苹果、微信、小米带给移动医疗产品开发的启示 移动游戏峰会(下):从端游转型手游、如何做一款不一样的游戏 移动游戏峰会(上):小团队如何做出大制作、游戏防作弊攻防战 深圳微信开发者大会:拒绝概念 这次只谈“怎么做” AMD应邀出席HPC China 2014,重磅推出新一代Firepro-S系列高性能显卡 你就是主角,MDCC 2014交流对接活动回顾(组图) 解读最具O2O属性—哈根达斯微信企业号的成功之道 值得Java开发者参与贡献的十个开源项目 LokiJS:纯JavaScript实现的轻量级数据库 OpenStack第七次北京Meet Up:谈私有云现状 中国电信携手电商打造跨界O2O联盟 【MDCC 2014】移动开发技术与平台峰会(下):系统演进、应用数据泄露风险 三层开发后的程序分发问题,请进! 請各位幫忙~~~~~~~~! NT4上的500错误怎么解决呀? 哪位认识它:readme.eml(图表是一个打开的信封,白色) 急!!UserControl_Resize()什么时候触发? 如何取得当前的数据集??急急! 如何从网页上下载图片到本机? 哪位认识它:readme.eml(图表是一个打开的信封,白色) 编译提示打不开rc文件.怎么办啊? bitmap和icon什么的还可以在Resoure里编辑. 有无可能向用户隐藏下载文件的地址? DataRowView的问题 我用delphi一年多了,下面是我做的一个小东东,欢迎大家提意见。 硬盘被关闭的问题 请问,做一个dcom程序,怎样注册server端client端, 丢附件的问题 一个加急问题!!!怎样取得这个数组的值??? 如何在TreeView的NodeClick事件里得知当前node的上一级node的text? 我用MFC做了一个报表程序,开始时吧菜单中的“打印预览”删除了,请问我怎样再加入打印预览菜单项而且可以实现原来的功能? 让我们做一对幸福的老鼠[zz] ******请问sybase sql anywhere 7是否就是adaptive server anywhere 7(asa) linux能使用ADSL吗??? 大家来讨论一下多播和组播吧! 请问在深圳要到哪里什么时候报考高级程序员啊? 一个加急问题!!!怎样取得这个数组的值???? 時間問題比較 怎么给wstring赋值? PB与sql server 连接的问题 大虾们,我的这个程序错在哪?就是不出现像要的结果bezier曲线??在线等候!!!! 请教各位大侠,关于SQL与应用程序进行封装的问题 二个简单Access问题 关于更新表中的记录用sql.add该怎末写? 如何修复已经损坏的excel文件?急 请问谁有操作WAB文件的资料,可以给我一份吗? pb 6.5 分布式问题 拉有免费软件的上传空间?????? 使用JBuilder6出现的“找不到数据库驱动”的问题 哪里有中英文的VC书下载? 请帮忙:能传给我C++ primer 电子文档. 急!!UserControl_Resize()什么时候触发? 二个简单Access问题 北京项目管理,系统设计同行 关于ActiveX控件(OCX)的两个问题 ****急*****请教注册码的检验原理 怎样得到98/me/2k/xp下的桌面壁纸? 大家好,我想取消TStringGrid上,点右键出现的popup菜单,请指教 二个简单Access问题 请各位高手指教:怎样用VB读出WORD中指定区域的内容。 查询的表单提交 求多线程SOCK连接程序 二个简单Access问题 关于计算学生人数??? 屈服于命运的例子最好是那动物做的例子 比如燕雀安知鸿鹄之志 燕雀屈服于命运 安守乐窝 没有反抗精神 谁有最新的日本地震受灾地图? 为生物进化提供原始材料的变异一定要可遗传的吗? 河水是怎样结冰的? 日本地震8.8在地图上的位置 我国建国60年的科技发展成就 元素符号的谜语是,有哪些? 日本与中国交界地图地图, 对生物进化有利的是有利变异可遗传变异 哪位高人可以提供给我谜底是标点符号的谜语啊? 超级电容器等效串联电阻怎么计算 变异为生物进化提供了原始材料为什么是可遗传变异 飞机飞行200米大约需1什么 电容的等效串联电阻怎么算· 可遗传变异是生物进化的动力 这句话错在哪里呢? 飞机飞行高度是2500米,上升200米又下降358m,这时飞机的高度是_______. 太阳能发电的原理是什么? 西澳大利亚寒流和东澳大利亚暖流是不是由季风气候造成的 生物的遗传和变异是以细胞内基因的什么为基础的? 一架飞机在海拔8000米高度飞行,在空中测出前下方海岛两侧海岸俯角分别是27°和39计算这个海岛的宽度, 急求中国建国六十年以来的辉煌成就每条要分开 简洁只有一天时间了 关于生物的遗传和变异1.下列有关遗传的各项叙述中,正确的是( )A.1个染色体上只有1个基因B.1对相对性状有一对基因控制C.生男生女有女方决定的D.不同的生物细胞含有相同数目的染色体2.下 名人成功之前所受的挫折,改变自己的道路,最后取得成功的实例 【辉煌60年】下面是某校的“建国60年”展板.当家作主篇(60年前)第一版:________1__一次革命:新民主主义革命一个人物:_____2______\x05改革开放篇(30年前)第二版:富起来一次会议:____3___新 生物遗传和变异http://wenku.baidu.com/link?url=EwIDAiMN9nLeNdLnPPtynjX6c8xw61yF0-4o-FSJRl4AqN3yM0gLo_FdBXpTKSWstpv4vio79dYmzKpFNKJCb-z2bZoR4jKJHcrNs6fSRbm求此套题答案,选择不要了 伽利略斜面实验是理想实验吗 造成我国降水的天气系统有哪几类,形成哪几种降水,他们各自产生了什么样的气象灾害?答案给出重点,最好长点 古今中外有关“做生活的强者”、“不向命运低头”的事例 有朋自远方来(猜一化学名词) 新中国成立六十年里有什么辉煌?新中国成立六十年里有什么辉煌壮举? 在困难面前不低头的事例不要特别有名的一两个即可 猜有关化学的谜语一)以下各打一种化学有机物1.一对亲兄弟,外貌无差异,一个浑淘淘,一个醉醺醺(打两个有机物)2.相加是十八,害虫见了怕3.尝尝甜,不是糖,瓶口敞,难用光,与肥皂,是同胞,寒 新中国60年的辉煌成就要简短的,超急!不用太短,要一段话,要体现出新中国60年来的辉煌成就. 磷酸根和氢离子的反应生成什么呢 1:品德高尚(打三种化学元素)2:五彩缤纷(打五种化学元素)3:金属之冠(打一化学元素)4:下毕围棋(打一化学名词)5:父母出门(打一化学名词)6:屡战屡败(打一化学名词)7: 从世界洋流分布来看,为什末大陆东岸大多为暖流,大陆西岸大多为寒流 海水为什么不易冻结 一道化学谜语各打一个化学元素:黄金被盗.值不值钱全在加两点 低纬度海区,大洋东岸是暖流为什么错? 磷酸中氢离子比上磷酸根离子之比大于3 如图所示为斜齿圆柱齿轮—蜗杆传动,小齿轮1由电机驱动.已知蜗轮4为右旋,其转向如图所示.为使中间轴轴向力互相抵消一部分,试在图上标出 (1) 蜗杆的旋向 (2) 齿轮1、2的旋向及转向 ( 有关化学的几个谜语题贾政寻宝玉 打一微观粒子下毕围棋 打一化学名词金先生的夫人 打一化学元素像钴不是钴,不甜也不苦,不怕酸和碱,点燃蓝火焰 打一化学物质 海水为什么不容易结冰? 为什么渐开线斜齿圆柱齿轮很少采用变位传动,而蜗杆传动则常采用变位传动. 为什么西风漂流在北半球是暖流,在南半球是寒流? 水是导体,那水有没有电阻,它的电阻由什么决定 求个人命运由自己掌握的例子要实用的,顺便能够反驳对方观点的例子! 热气球是怎么飞起来的? 水电阻的原理 读“生命被抛至如此绝境,他们却用自己的方式顽强的抗拒着,不向命运低头.”能联想到那个故事? 热气球能飞起来的原因是什么? 生物的遗传和变异指亲代和子代及____各个体之间举例如:种瓜得瓜,种豆得豆__________;一猪生九仔,连母十个样_________. 太阳能发电原理是什么? 飞机这么重,它是靠什么飞起来的.它的发动机是怎样的,是不是同这些普通发动机一样是烧柴油或汽油. 生物的遗传和变异由什么控制 太阳能发电是什么原理 藏羚羊的特征与其适应高原环境有直接关系的是A 皮毛厚实 B血液中的红细胞较多 C 心脏发达 D雄羊与雌羊的分群活动 你还知道哪些名人战胜命运取得成功的事例: 日本工业区地图 建国六十年我国部分成就在国防(7组),文教(10组),外交(13组)中的成就.很难哦,`加多多得分!`好的追加20-100分哦!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘