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

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

RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 BlackBerry 10 策略:用金钱吸引游戏开发者 黑莓10要来了:RIM正式开放应用提交 从RIM与微软达成exFAT授权所想到的 OpenStack中国行来到南京 中兴通讯分享电信行业应用 CSS架构目标:预测、重用、扩展、维护 黑客利用移动浏览器漏洞窃取云计算资源 地位动摇:Windows设备10月销量同比下滑21% 手机QQ浏览器4.0 Android版 极速快感 生存还是毁灭:Facebook惨败真是HTML5的错? OpenStack基金会主席:一年后成熟度超越CloudStack 在线学习新编程 技巧全攻略 “英特尔杯”HTML5程序开发邀请赛侧记 C#编译器组首席工程师Eric Lippert离职 加盟Coverity Testacular:Google开源的JavaScript测试执行过程管理工具 黑莓亚洲开发者大会报道:BB10将敲开亚洲应用市场大门 挑战Google!传Facebook与Yahoo要联手开发搜索引擎 揭秘Android 4.2 开发者的天堂与地狱 11大黄金法则:顶级移动UX设计心髓 库克时代:苹果已经不是苹果 设计师必备:极简风格的Fluid UI快速原型图工具 iPhone 5发布,后乔布斯时代苹果乏善可陈 牛人妙计:HTML5应用也能像原生一样跑得快 移动周报:OpenFeint难逃关闭命运 细数与苹果恩怨史 FlyingDaggers团队专访:不浮躁,用心做真正的原创游戏! IT巨头混战:谷歌、苹果、Facebook以及亚马逊的四国演义 乐视TV:智能电视平台——Android 开发者的新空间 TIOBE 2012年12月编程语言排行榜:Objective-C冲刺卫冕年度语言 11月份浏览器市场份额 IE10已占据0.51% 亚洲高科技公司正在分享惠普、戴尔和IBM的云“午餐” Groupon创业启示:进军海外,请三思 哪里有visual studio.net下载? 那里有sql server 2000企业版下载的 xml的学习??????双儿 怎么比较两个LPTSTR字符串啊??? 语句“rs.Open sql,conn,1,1”中后边的两个数字参数是何意思? 如何获取datawindow中文本框内容? 请教公司大院网络系统设计方案要怎写?会遇到什么问题? 关于clientdataset的返回值问题 关于报表打印的问题!火急。。 这个世界上有多少C/C++程序员? 关于ARP广播域的问题????????????????、 请问什么服务器支持global.jsa 安装oracle数据库出错!!!!!!!!!!!! 如何在对话框的OnPaint()函数中得到该对话框的窗口大小? 一个看似简单却很棘手的问题,不得不请教各位。。。 哪里有将rm文件转换成avi或者mpg格式的软件? 关于ARP广播域的问题?????????????? 请问,,怎么设定mshflexgrid的属性,使其各列的宽度与数据源字段的宽度一致 请问这几个对象是否代表同一个对象? 菜鸟问题:如何跟随鼠标拉出一虚线矩形框?回复就有分! 高分寻Authorware v6.0 注册码 在数据窗口中有“部门”和“员工”两个列,分别采用各自的下拉数据窗口显示。如何使得“部门”改变时,“员工”显示与其对应的人员而不是“员工”表中所有人员。 怎样安装UNIX? 灌水加求救…… T-SQL中SELECT句中可不可以有存储过程。。。。。。。。这样为什么不行呢?(100分酬谢) MS SQL SERVER 有谁知道型号为CDU111-NE 的SONY光驱是多少速的吗? 谁对RTTTL格式文件了解,怎么把它转换成可以发送的二进制格式? 关于ORACLE存贮过程的迷惑,请各位大侠解惑! 请问如何向ActiveX控件发送一个自定义数据结构的指针 有没有好一点的ASP上传组件?? asp调用dll失败!!! 为何用了2个以上的单元有调用窗体就出现 access violat at address XXXXX in module的错误 请问有没有一些用来专门用作软件测试的测试软件? EPSONSTYLUS C20SX 型号的打印机支持NT4吗? 请问哪里有linux操作系统的源代码下载?谢谢 哪几种服务器支持global.jsa 关于数据绑定控件的问题。 关于TIFF文件的处理 DLL动态调用的问题,应注意些什么? 有关错误提示问题的文件存放在哪里呀 vf怎样求2个日期类型的差值?象sqlserver的datediff一样。 一个程控交换问题。 请教各位高手,如何在程序中模拟鼠标点击行为,大大加分!!!!!!!!!!!!!!!! 关于一个消息参数的麻烦………………求救高手! 我在微软的网站上下载了一个DCOM的例子,但不能在两台机器上运行? chinajordan(超飞人)请进!!!!!!!!!!!!!!!!!!!! 如果你是sql语句的高手,请看 请问,有谁知道上海华冠电子设备有限公司怎么样的,谢谢! 怎么把一个控件的坐标转换为它的容器坐标!? Canon4650打印测试正常,软件打印预览正常,打出的字横向压缩50%,挤在左边,右为空。 fruit(水果)是可数名词还是不可数名词 新铅畜电池加入电解液为什么相对密度会下降啊? 在实验室把100克溶质质量分数为百分之九十八的浓硫酸稀释成百分之五的稀硫酸,需用量筒量取————毫升的蒸馏水,稀释时需用的仪器有烧杯和————. 物理人会沉到水中是因为人的密度比水大吗? 保温防火岩棉和防火岩棉一样吗 these 能修饰不可数名词吗?this呢? Hot的中文含义 当河水内的泥沙量增加时,其密度为何会变大? 防火岩棉 密度120和80的混在了一起 怎么区分出来120的 只有两包 堆在里80的里面 不称重的话 怎么把它们找出来 hot stuff的中文意思是什么? 由于长江上游的植被受到破坏,造成水土污染,河水中的泥沙含量增加,使得河水的密度( ),河水对堤坝的压强( )为什麽?说明理由下!谢谢拉! fruit和food是可数名词还是不可数名词,后面要加S吗?There are many fruit and food.fruit和food在这个句子里是可数名词还是不可数名词,后面都要加S吗? hot 中文意思 1.由于长江上游的植物受到破坏,造成水土流失,河水中的泥沙量增加,使河水的密度_,河水的堤坝的压强_2.当过堂风前后窗子打开时,过堂风会把侧面墙上的衣柜门吹开,这是以为衣柜外_,衣柜内_ 铅酸蓄电池电解液要加多少 hoT 的中文意思 由于长江上游植被受到破坏,造成水土严重流失,河水中的泥沙含量增加,使河水的密度( ) ,河水对堤坝的压强( )由于长江上游植被受到破坏,造成水土严重流失,河水中的泥沙含量增加,使河水的 船用启动铅酸蓄电池 有单格电解液密度非常低,不到1.1.是怎么回事.什么原因导致的?怎么解决. 蓄电池在汽车启动后还有哪些作用(请专业人士或相关技术人员回答,具体点) 外墙保温用的玻璃丝棉板,容重应该用多大的?优缺点有哪些?外墙用这么低的会不会脱棉啊?现在的玻璃棉有憎水的,效果好不好? 铅酸蓄电池电解液详细的配制方法?如果用一斤密度为1.5的硫酸,需要加入多少(重)的水.密度才能降到1.28? food fruit等词什么时候作为可数名词什么时候作为不可数名词?包括drink,我需要的是解决这类问题的方法及判断方法 salad,ice cream在什么情况下是可数名词,什么情况下是不可数名词啊比如:我有几个冰激凌是可属还是不可数? 我有几盘沙拉是可属还是不可数? 提问时:Do you like icecream 还是icecreams? 怎么样计算建筑保温层的厚度 fruit是可数名词吗,说什么指水果时不可数指水果时不可数可指有多少种水果时可加S,最好有例句给我看 如果配制汽车用铅蓄电池中溶质质量分数为30%的稀硫酸500g 需要溶质质量分数为98%【密度为1.84g\cm】的浓硫酸多少毫升? 谁知道屋顶保温层厚度该如何计算? fruit、vegetable、food、dessert哪些是可数名词 我急需啊!明天就要用!麻烦了解决了我会再加分的! 汽车、电机车一般要使用铅酸蓄电池.某铅酸蓄电池用的酸溶液是溶质质量分数为30%的稀硫酸,先用1L溶质质量为98%的浓硫酸(密度为1.84g/cm3 保温层厚度怎么计算 说的详细点 有公式吗、‘?就是建筑的外墙的保温 food,vegetable and fruit 是不是可数名词? 请问保温棉是玻璃纤维棉吗,掉身上很痒的那种? 计算保温层厚度相关数学问题D2LN(D2/D1)=0.277514求D2D2=D1+1 汽车的蓄电池可以直接加98%的硫酸吗?汽车的蓄电池可以直接加98%的硫酸吗?汽车的蓄电池可以直接加98%的硫酸吗?汽车的蓄电池可以直接加98%的硫酸吗? 岩棉,玻璃丝棉,玻璃纤维棉 是不是都可以用做保温和吸音材料? 1.dictionary 2.key 3.baseball 4.photo 5.bag 6.banana 7.tomato 8.broccoli 9.pear 10.chicken 哪些是可数名词?哪些是不可数名词?11.my sister likes (salad).对打括号的提问.12.i llike french fries.把主语换成he改写句子 13. 汽车蓄电池的硫酸浓度是多少 英语翻译Compressed packing with PP.16 batts/pack 430mm wide. 油管路中弯头和阀门处的保温体积如何计算,如DN125弯头,150mm厚的岩棉保温,如何计算该处的保温材料体积和外面包的铁皮的面积,急等~ fruit是可数名词吗? 防火岩棉板容重偏差允许是多少?有国家规定吗有规范吗 汽车,电动车一般使用铅酸蓄电池,某铅酸蓄电池用的是28%的稀硫酸,现用1.0KG98%的浓硫酸配制该稀硫酸,下列说法正确的是:A.28%的稀硫酸中溶质与溶剂的质量比为28:100 B.用1.0kg98%的浓硫酸课 河水中的泥沙含量增加,使河水的密度(),河水对堤坝的压强() 理由 ice cream ,salad作为可数名词时的复数是怎样的 broccoli是可数名词吗 泥沙不溶水 为什么河水密度大于水化学题上说饱和食盐水中再加盐 密度不变 因为食盐再不溶解 那泥沙也不溶解在水里 为啥含泥沙的河水密度大于水或者说 再加入了食盐但不溶 密度变了吗 图纸上只写屋面保温材料用5.5厚硬质岩棉板,请问该用多少容重的,需不需要憎水性的岩棉板. 问一下岩棉保温板和泡沫玻璃保温板各有什么优点?价位大约是多少?一般的民用建筑用这两种会不会是大材小用?如果需要的话可不可以向我推荐几家比较好的厂家?如果是外地的要货通过物流 汽车电瓶蒸馏水加多了,对电瓶有没有坏处,蒸馏水和电解液一样吗 岩棉板用在上人屋面上,压缩强度需要达到多少,以及憎水率 岩棉保温板保温板具体定义 电瓶里面有硫酸也有电解液{蒸馏水},但是在加的话哪里圆硫酸?哪里又是加电解液的?电瓶里面的硫酸和电解液是分别加的哪里的?打开那个小盖子后是应该加蒸馏水的吧! 蓄电池在充电时电解液密度如何变化 岩棉做保温板有什么好处? fruit是可数名词还是不可数名词? 汽车蓄电池电解液密度降低了有什么不好 在实验室把100克溶质质量分数为98%的浓硫酸稀释成5%的稀硫酸,需要用量筒量取多少毫升的蒸馏水! fruit是可数还是不可数名词? 25摄氏度的铅酸蓄电池电解液的密度是1.28,那么温度降到10摄氏度的话电解液的密度还会增加吗? 聚氨酯保温板 岩棉保温板哪个好,对身体有害吗?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn