飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3368|回复: 4

[Delphi] Windows API一日一练—Delphi版本 第一个应用程序

[复制链接]
  • TA的每日心情
    奋斗
    2017-4-20 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-6-3 09:37:44 | 显示全部楼层 |阅读模式
    一直都想着在Delphi中用使用纯SDK API来写一些东西,但是一直没有做过或者做的非常少,看了版主的Windows API一日一练的相关帖子。于是决定在我的能力之内,将他的相关内容用Delphi来实现一下。目的也是告诉那些只用Delphi常规开发的人,原来Delphi还可以这么用,也告诉纠正那些认为Delphi只用来写数据库程序的误解。
        先来看看第一个应用程序,这里参考Windows API一日一练 第一个应用程序。在此之前,我们先了解一下纯WIn SDK编程的方式,一般用过C的人,都知道C的入口函数为main(),这里有一个入口函数,而Win32编程中,也有一个入口,这个入口函数为WinMain。可是这个入口函数,我们在Delphi中看不到。如果有人看过Delphi的dpr工程文件中的代码就会发现,Delphi的入口实现为:
    1. begin
    2.   Application.Initialize;
    3.   Application.CreateForm(TForm4, Form4);
    4.   Application.Run;
    5. end.
    复制代码
    根本没见到所谓的WinMain函数,不过,实际上这个函数是存在的,只是Delphi对他做了智能处理,将其隐藏在Delphi编译器的实现之中,所以我们看不到这个东西,但是我们不能说他不存在。Delphi会进入winmain入口,然后转到工程的begin..end之间来执行代码。所以,咱就可以在这里将工程文件的begin这里作为入口。
    那么,对应Windows API一日一练 第一个应用程序这个帖子,我们的代码就可以很简单的实现为:

    1. program Project1;
    2. uses
    3.   Windows;
    4. begin
    5.   MessageBox(GetDesktopWindow,'第一个应用程序','例子',64)
    6. end.
    复制代码
    怎么样,这个代码很简单吧。
    可见,基本上来说,这个代码与VC实现起来的差别不大,唯一的一个差别就是在入口上,VC的是转为了_twinmain,Delphi是编译器做了一个魔法处理直接转到工程的开头了。其他方面都做一样的处理!

    评分

    参与人数 1威望 +20 收起 理由
    whypro + 20 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2017-4-20 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2010-6-3 09:41:08 | 显示全部楼层
    莫非现在论坛中毒了,怎么自动在我文章的后面加了一个

    中国飘云阁如何脱Visual Protect -> Visage的壳啊

    这样的连接?
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-3-12 17:25
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2010-6-3 13:59:52 | 显示全部楼层
    我也不太清楚问问飘云大大吧!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-6-3 18:16:46 | 显示全部楼层
    多谢楼主。

    对这个好像有点了解了。
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2010-8-6 11:23:51 | 显示全部楼层
    :loveliness:学习了,希望继续提供好文,delphi
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表