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

写小执行程序-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 桌面隐藏起来的程序,只要将本文中所有的函数和过程的顺序倒置,并将主程序放到最后,即可编译通过。

Intel首席科学家Randolph Wang:详解Edison AMD Mantle再添新作,引发下代GPU架构猜想 谈DAM决策,自建还是SaaS 证据显示:Linux战争已经转移到OpenStack RestKit:iOS开发必备,告别众多无聊代码 技术新突破:手机和平板可远程控制PC,Chrome Remote Desktop亮相 物联网高速公路上,快数据如何驱动分析 苹果或将使用雅虎的搜索引擎,抛弃谷歌 百万用户规模的系统如何扩展 大数据需要软件定义存储 倒计36小时!2014中国Spark技术峰会即将召开! 设计师专宠,Startup强大的UI设计框架 走进金山云:从技术走向服务 Qt Creator 3.1.0发布,全面支持iOS、Android、WP Google大中华区总裁石博盟与中国大学生畅谈科技与创新 阿里云:从防到攻,深入浅出DDoS 大数据处理分析的六大最好工具 微软:Windows Phone开发者可回复用户评价 不断缩水后的微博上市首日大涨19% 曾一度涨超40% Snapdragon LLVM编译器全新升级 支持骁龙64位处理器 EDP:基于Node.JS与NPM的企业级开发平台 想改变世界,先改变自己——知名Hacker、发明家Mitch Altman专访 《近匠》iHealth,健康大数据助力硬件“破壳” 一周消息树:如何做到每天写代码? 一周热点:微软SQL Server 2014三大新特性 《Make》创始人Dale Dougherty:全民创客 DevOps正在扼杀程序员? OpenStack新版本:新增近350个功能,修复Bug超2900个 【走近讲师】易欢欢:数据对接和后台是互联网金融的技术最难点 最火HTML5 JavaScript游戏引擎:国外篇(二) 挑战最强大脑——来自全球的14个编码社区 怎样在数据窗口中设置打印,要求实现自定义纸张??? 关于初学做练习的问题请教! 实现界面重定义的问题 有关对话框显示前的... 关于photoshop中的问题! 在CXXXApp里如何调用CXXXDoc里的变量? 关于ADO对象的用法? .x文件中animation set中的rotation是弧度,还是? [php版]公告:关于删除 IShellFolder 发贴的通知! 有了seq server基础,想深入学习一下,改怎么做? 请问高手,有关数据导入导出的问题! 高分求《VC技术内幕》第5版 求源码!!!!!! 出大问题了 notes designer的问题(在线等候.....)急!! 关于csdn上的网络道德问题!大家的网络需要大家共同来支持!(每一个真正的程序员都应来声援!) 高分回报:一条简单的SQL语句写法,谢谢各位大侠, asp中寫Response.cookies ("ITEM1")("SUBA")="Standy"在dotnet(C#)中如何讀出 在局域网内。知道一个机器的IP地址。如果获取这台机器的名字 带外数据具体有何用途?(在线等) 加了一个三角,高兴,散分! 请问一个三位重构的问题,哪里有这羊的的示例程序? 显卡显示有阴影??? 有挑战性的翻译,请翻译下列C++名词,并请举例说明 麻烦大哥们看看!关于wab应用中在datagrid中取值的问题 如何实现CSDN这样回答问题的效果? 初级问题,请各位大侠帮忙! 数据结构中关于二叉排序树的生成问题 请教高手:如何在一区域找到找到指定颜色的点?? 一个关于窗口的问题 如何在数据窗口实现编辑、修改等后的撤消、复制、粘贴、剪切功能! exec,sp_executesql语句,中字符串变量的问题 急~~~~(请赐教)! window.showModaldialog()问题 关于Internet Explorer不能打开链接的问题 求助 求购:中国地质大学(京)网络历年考研题复习资料 Longhorn与WINDOWS2003是何关系? applet的执行顺序问题?? 在数组里找到最大值的函数是什么? 没有监听器? VB .NET能用于AutoCAD开发吗? 如何用OnMouseWheel实现Image的放大缩小? 装了Media Player 9.0,怎么没声音? 如何将DataSet中的数据全部写入数据库? 简单问题(关于光标移动) 一个关于java的小问题要请教? 请问delphi中有二~十进制的转换函数吗..... 关于不同页面调用的问题,谢谢 can't open the file"cos.obj" 这里到底怎么了?有人“非典”发作了? 关于STL的问题: dreamwearver mx如何预览asp.net的一些控件>? 补充句子:凡是见过圆明园遗址的人,都 “粮食不卖给八路军” 请在这句话上加些东东,让人觉得这句话是中国人应有的加标点也可以,加一些词也可以 那是什么玩具?原理是什么?前段时间看到小孩玩的玩艺儿,是一种塑料包装的,不大,上面煞有介事的全是英文,我想也就是些三无产品.玩的时候就只接用力击打塑料袋,或者只接用脚跺一下,塑料 初一老师不检查作业?这 这可能吗?! “有粮食不给八路军吃”加逗号让意思改变 以下名言是谁说的1草堂留后世,诗圣著千秋.2 两表酬三顾,一对足千秋 3 犹留正气参天地,永剩丹照古今.4千古诗才,蓬莱文章建安骨.一身傲骨,青莲居士谪仙人.5写鬼写妖高人一等,刺贪刺虐入骨 古希腊悲剧对西方文学的影响如题 从而得之,已欲为我所得. 为倡导和白开水拟一条公益广告 谁有7年级下册 同步练习1+1 (华东师大版)练习册的参考答案?帮帮忙啊``!及需啊 .. 救命啊 .. 快啊.我 急要. 求求大家帮帮忙.~! 詹天佑是那里人 苍鹰有一双什么的翅膀和两条什么的长腿? 所有练习题答案(同步训练和配套练习册),有一门发一门,从后往前发,前边的都写完了,最后2~3单元就行,但语文配套练习册全要! 北京曾是那几个民族,哪几个政权的都城如题 ”赁”的读音怎么念? 延边人民出版社的,要是方便给下册也给我也行啊!..1.许多人类学家认为i,人的始祖是( ) A.两河流域的苏美尔人 B.中国南方古猿 C.非洲南方古猿 D.腊玛古猿 这是第1课 人类的形成的第一题 北京地区曾是哪几个民族、哪几个政权的都城,有何别称? 现在国家规定多大为成年?16还是18? 一个操场如下图,沿着操场跑道跑一圈是多少米? 3包科技书和5包故事书共430本,同样的5包科技书和3包故事书共450本,每包科技书和每包故事书各多少本? 超越离合器的旋转方向为什么是逆时针? 体育场跑道如下,运动员跑了5圈,他跑了多少米?中间是一个长方形长为100米,一边一个半圆圆的半径为25米 写出北京从古至今曾是哪些政权的都城 请问租赁的“租”和“赁”各是什么意思? 中国近代史第一次巨变 4包科技书和5包故事书共430本,6包科技书和6包故事书共570本,每包科技书和每包故事书各多少本?一定要是方程.可用消去法. 赁屋是什么意思? 1、中国近代史上首次打破列强垄断局面的交通行业是? 谢谢~无.急。。 关于寒假、春节的作文集取一个题目 "凭"与"赁"的意思 曹刿论战的中心句和主旨句 智子疑邻从积极方面说,主旨是什么? 工赁什么意思 有人会做吗?,谢谢你的回答,化学, 作文集的题目取什么好?要与这个封面的情调相符合的名字. 借赁的含义 十万个为什么读书笔记不是读后感.只要主要内容和感受体会,不要长篇大论的,100左右就行了. 帮忙设计一下作文集的封面,我的题目是《琉璃星空》,帮帮忙啊.希望大家帮帮忙,如果封面做不好,我会被老师批死的。封面颜色淡雅最好一点,急!!!!!...... 世界闻名的自由女神像的实际高度是46米,底座高47米.世界公园里的自由女神像及其底座模型是按1比10比例建造的,这座模型连底座共有多高? 翻译成英语:1收到礼物2点蜡烛3吹蜡烛4许愿5打开音乐6五快巧克力7两束花8三瓶墨水9取得高分 列举历史上都城在洛阳和南京的政权分别有哪些 37詹天佑杰出在哪 小华调查了全班同学在母亲节送给妈妈礼物的情况,八分之三的同学送鲜花,五分之二的同学送贺卡,其余的同学是上面问题(接着):自己的一张画,送画的占全班的几分之几?若有人解答,感激 什么动物表面温顺而它很凶狠什么动物看起来很温顺,其实他很凶狠 无刷直流电机有位置传感器和无位置传感器区别 小京调查全班同学在母亲节送给妈妈的礼物,1/4的同学送鲜花1/3的同学送糖果其余的同学送自己做的贺卡送贺卡的同学占全班人数的几分之几 有什么动物是平时温顺 但是一旦被激怒就会变得异常凶猛的啊··要是已知的动物 最好是现存的动物··要是帅气的动物·· 无位置传感器无刷直流电机的专用芯片有哪些?我要用单片机来控制,设计一个无刷直流电机的控制系统.麻烦知道的各位大侠帮帮忙~ 母亲节时,五一班全体童鞋都送了礼物,其中送鲜花、贺卡、图画,送鲜花占3分之1、送贺卡占4分之1、送图画的占4分之1,第一个问题送鲜花、贺卡、图画的人数占全班人数的几分之几?第二个问 求二元一次方程2x+3y=20的非负数解 什么是电调?电调和无位置传感器无刷直流电机有什么关系? 初一的作业量一般是几点可以做完或者几小时今年刚初一,作业一般从7:00写到8:30,不知正常不没糊弄~(但也不是太认真). 求二元一次方程2X+3Y=12的非负数解 这个玩具的原理是什么 中国古代朝代表及都城表要有五代十国的,还要有东晋十六国的. 求二元一次方程x+3y=20的非负数解要过程,急!求二元一次方程x+3y=20的非负整数解!!是非负整数! 仿照例句 拟一则宣传保护鸟类的公益广告请仿照下列例句,拟一则宣传保护鸟类的公益广告.(不超过20个字)示例:虽为毫末技艺,都是顶上功夫.(理发店广告) 初一什么课程作业量最大,(人教版的)? 天气十分寒冷,宋濂仍然坚持学习的句子是 这是什么玩具,什么原理 联合国发言人说美国已保证不会对联合国外媒曝美国安局秘密窃取雅虎和谷歌数据墨西哥警察路边与女子发生性关系视频网解放军三大舰队在西太平洋完成三轮实兵孕妇就医多次碰壁 医生:医患关系紧张美国拒绝回应“在北京、上海等地设监听乡镇卫生院腐败高发 卫生院长称不收回富阳法院首推分段倒逼执行机制对付“老新加坡画家上海展示新奇“手机画”外媒对中共三中全会怎么看?问题越来越多 咨询越来越少 自杀干预温州多家典当行集体看走眼 假首饰“骗海上丝绸之路:周边外交的动脉与桥梁强风暴抵达俄罗斯圣彼得堡惊涛拍岸德媒:美在全球设点监控政府通讯澳女公务员出差搞一夜情 拽下台灯砸掉媒体:中国需要制定法律对现有反恐机制美媒爆料国家安全局秘密潜入雅虎、谷歌日本地方政府预测南海海沟若地震恐死1人质事件凸显菲律宾“幼稚政治”浑水卷土重来警示赴美上市中企《初恋橡皮擦》“文艺范”英超三打白骨精泰国新锁定两名爆炸案嫌疑人总有一条信息,你能用得上“武汉伢”王凯助阵《琅琊榜》张琳芃蓝军梦搁浅易游天下 四年醇熟曼联豪赌19岁妖锋曼联豪赌19岁妖锋千人合唱《黄河大合唱》金运激光中标武汉学校 3D设备采购新生入学领导干部集中学新《行政诉讼法》中国女篮63分大胜印度中年男子吸氧过度差点“憋死”女教师睡觉时翻个身便天旋地转中国女篮63分大胜印度武汉还有多少厨界男神全国红色旅游万里行湖北站 从武汉姚家武汉6位90后勇夺俄罗斯最高奖学金烈士墓常年泡在湖水里
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘