Delphi 在游戏中创建窗体(吐血的详细)

关于Delphi开发“炸飞机的游戏” 做了这么久开发,一直想做一个小游戏玩玩,回想起上学玩的“炸飞机”的游戏,就拿他开始吧。先说一下游戏的规则:在10×10的方格里,汇制1—5—1—3的形状,方向自选,共三组,每一个飞机不能与其他的飞机有任何的重叠,第一个1为飞机头!玩家根据作标选择位置,系统会告之“炸中,炸毁,炸空”,直至全部炸毁三架飞机为止!程序需求:1.绘制“地图”,10*10的区域,有点象扫雷游戏的布局2.由系统随机生成三架飞机,方向随机,并开始计时3.用户点击时,告知用户是否“炸中,炸毁,炸空”,计算用户的点击次数4.当所有的飞机都被 阅读详情

API函数中有个SetWindowsHookEx,SetWindowsHookEx函数的可以在系统上安装一个HOOK。安装了金山毒霸的系统,会认为这玩意为病毒....不知道为什么,缺点是被监视的目标进程必须有窗口,这样SetWindowsHookEx才能将DLL注入目标进程中。而且,目标程序已经运行了,那么,在窗口创建之前的Api函数就不能被Hook了。接下来就讲一哈嘛:

   可以先准备需要一个用来注入的dll(inhook.dll)及一个调用程序(mir.exe)
    流程:
mir.exe
procedure TestHook;
var pwnd,hChild, hwndInject :hwnd;
    msg:tmsg;
begin
   //通过窗口标题用FindWindow找到要注入的程序的主窗口句柄pwnd
   pwnd := findwindow("Progman",nil);
   //用FindwindowEx(hMain,0,nil,nil)找到要处理的子窗口句柄hChild
   hChild := findWindowEx(pwnd,0,nil,nil);
   //用getwindowThreadProcessid(hChild,nil)找到要注入的线程
   dwThreadID := getwindowThreadProcessid(hChild,nil);
   //调用 inject.dll的SetInjectHook方法
   SetInjectHook(dwThreadID);
   //等待消息返回
   getmessage(msg,0,0,0);
   //找到注入的窗口
   hwndInject:= findwindow(nil,"InjectForm");
   //发送控制消息,将目标窗体的句柄作为wparam,控制参数以lparam传入
   sendMessage( hwndInject, wm_app,hChild,integer(true));
   //关闭注入的窗口
   sendMessage( hwndInject,wm_close,0,0);
   //等待窗口关闭
   sleep(500);
   //检查是否成功关闭
   assert(not iswindow( hwndInject));
   //去掉挂钩
   setDipsHook(0);
end;
//下面说明 Inhook.dll的SetInjectHook的具体*作
在全局定义以下变量
var
   g_hhook :Hhook=0;
   g_dwThreadidInject :dword=0;
   g_hInjectfrm:hwnd;
function SetInjectHook(dwThreadid:DWORD):boolean;
begin
  result := false;
  //如果线程标志为0则用于去掉钩子,否则进行动态库注入
  if dwThreadid<>0 then
  begin
    assert(g_hhook=0);
    //保存当前线程的ID到 g_dwThreadidInject
    g_dwThreadidInject := getCurrentThreadid;
    //下一个GetMessage的钩子到目标线程
    //GetMsgProc是在下面定义的一个函数,在第一次调用时将自定义的form在目标线程中创建出来
    //这样就能通过这个自定义的form对目标线程进行进程内控制了
    g_hhook := setWindowsHookEx(wh_getMessage,GetMsgProc,hInstance,dwThreadid);
    result := g_hhook <> null;
    if result then
      //发一个空的信息以便于立即创建这个自定义form
      result := postThreadMessage(dwThreadid, wm_Null,0,0);
    //等待半秒钟,以保证调用者可以找到这个刚创建的form
    sleep(500);
  end else
  begin
    assert(g_hhook<>0);
    //去掉钩子
    result := unHookWindowsHookEx(g_hhook);
    g_Hhook := 0;
  end;
end;
//定义一个全局的是否第一个消息的标志
var
  fFirstTime:boolean = true;
//这个函数用于在收到第一个消息时创建自定义窗体,以便于远程控制
function GetMsgProc(code: Integer; wparam: WPARAM; lparam: LPARAM): LRESULT; stdcall;
begin
  //如果是第一次
  if fFirstTime then
  begin
    fFirstTime := false;
    //创建窗体
    InjectFrm := TinjectFrm.create(nil);
    //保存窗体句柄
    g_hInjectfrm := InjectFrm.handle;
  end;
  //调用默认处理,这一句可不能忘记
  result := callNexthookEx(g_hhook,code,wparam,lparam);
end;

Delphi系统级钩子编程实践教程 本文还有配套的精品资源,点击获取 简介:Delphi是一个基于Pascal语言的集成开发环境,本教程旨在通过Delphi示例程序介绍系统级钩子的概念和实现方法。钩子是一种Windows系统机制,允许开发者拦截和处理特定事件,如键盘输入和鼠标点击。本Demo将详细展示如何使用Delphi语言结合Windows API函数 SetWindowsHookEx 来编写... 阅读详情

相关推荐

Delphi中实现64位系统钩子的完整指南

钩子函数是一种特殊的函数,它们能够监视或修改系统、应用程序中的某些操作行为。在Windows操作系统中,钩子机制允许开发者在系统消息传递过程中插入自定义的处理代码,以实现对键盘、鼠标、窗口消息等系统事件的捕捉和干预。原理上,钩子函数通过API函数设置。该函数将指定的钩子函数安装到系统钩子链表中。当系统中发生特定类型的消息或事件时,相应的钩子函数将被系统调用。在钩子函数中,开发者可以执行各种操作,包括修改消息数据、阻断消息传递、调用其他函数等。

weixin_27645199的博客 1240

delphi dll注入创建子窗口多开_二进制文件打补丁?怎么少得了dll注入

dll注入的方法还是挺多的,dll替换,注册表等等,来说说比较常用的一种吧这个方法不仅适用dll注入,inline Hook同样适用既然是DLL注入,就需要写一个DLL,这个DLL的代码会在被注入的进程中运行,我的代码如下:BOOL 当DLL被加载时,会进行弹窗,仅此而已在开始之前需要先了解一下,关于窗口和进程的知识每个进程都有一个标识,这个我们都知道,特点是每次启动的值都不一样每个窗口也会有一个...

weixin_39883260的博客 397

Delphi编程实现Windows键盘消息Hook技术

本文还有配套的精品资源,点击获取 简介:Hook技术在IT领域用于监控和控制系统或应用程序中的特定事件,如键盘输入。在Delphi 7.0环境下,可以通过Windows API实现键盘Hook。本文深入探讨了如何设置Hook,定义回调函数,安装和卸载Hook,以及处理多线程环境下的问题。这允许开发者在Delphi中拦截和处理键盘消息,以实现系统监控、安全软件或游戏外挂等功能...

weixin_42620563的博客 1360

Delphi 3D开源游戏引擎Castle Game Engine支持Nintendo Switch任天堂游戏掌机

Castle Game Engine现在支持将游戏编译到Nintendo Switch控制台!来自Nintendo的现代,成功,独立友好的控制台。 这是一个完全集成,真正100%的引擎适用于Nintendo Switch。但从开发商角度,你只写用CGE单位跨平台的Pascal代码,然后你可以重新编译使用该应用程序城堡游戏引擎构建工具使用--target=nintendo-switch。 请注意...

Delphi开发局QQ群:32422310 1784

delphi 小游戏

delphi xe 做的小游戏 疯狂的小鸟

五子棋游戏---delphi源码

该游戏实现五子棋联机对战功能,delphi开发。主要用到无连接通信(UDP)技术。游戏界面直观醒目。

Delphi 10.4.1 游戏开发引擎unDelphiX

DelphiX DelphiX游戏引擎是原Borland时代的日本Delphi程序员Hiroyuki Hori开发的一套可视化快速游戏开发组件,著名的网络游戏《热血传奇》就是采用的这套控件开发的。 在我的页面上欢迎使用非官方版本的DelphiX的变体源代码。保留所有权利(单位(或文件)的作者或所有者)。 完整安装DelphiX(仅适用于Unrar)具有DirectX 7驱动的Eric Unger的JEDI DirectX头文件的所有功能,DXR.pas,DXSprite.pas补丁...

Delphi开发局QQ群:32422310 3218

西门子S7-200SMART控制步进电机(五)

前面详细讲述了运动控制向导的配置和运动控制指令的使用方法,接下来要讲的是简单程序的编写和调试。 在编写程序时,需要注意的是自定义的符号和地址不能与运动控制向导分配的存储器冲突。 一、软硬件组成 1、软件:STEP-7-Micro/WIN SMART软件; 2、硬件:西门子S7-200 SMART ST40 PLC、57步进电机和驱动器(DM542)。 二、手动控制步进电机旋转方向和速度 具体步骤...

qq_43134642的博客 2万+

使用Delphi编写棋牌类游戏 – 设计篇(3)

最近几天正在找工作,所以更新BLOG晚了一些。今天在老婆的催促下终于要更新了。 通过以上两篇关于对中心服务器和登录服务器设计的阐述,大家应该对设计它们有了一定的了解。但是中心服务器和登录服务器毕竟是游戏外围的部分,也就是说设计好了它们也还是无法实现编写一款游戏的目的啊。今天我们就来探讨一下如何设计游戏服务器。   通过对QQ游戏、远航、联众等游戏的分析。我们可以发现一些规律: 1:每个已经...

weixin_33759269的博客 431

超声波探伤技术在风电叶片检测中的实战应用(含设备选型指南)

本文深入探讨了超声波探伤技术在风电叶片高空检测中的实战应用,重点分析了相控阵超声、激光超声等技术的选择与挑战。文章提供了详细的设备选型指南,对比了奥林巴斯、GE及国产品牌的优劣,并解读了典型缺陷的超声图谱特征,旨在帮助风电运维工程师安全、高效地完成叶片内部损伤的无损检测与预防性维护。

desk3的博客 885

OPTISYSTEM实战指南:线性调频连续波激光雷达系统仿真设计

本文提供了一份基于OPTISYSTEM软件的线性调频连续波激光雷达系统仿真实战指南。文章详细阐述了从软件界面熟悉、核心参数设置,到发射端、信道模型、相干接收端完整系统搭建的全过程,并介绍了性能优化与高级仿真技巧,旨在帮助读者快速掌握利用OPTISYSTEM进行低成本、高效率激光雷达系统设计与验证的方法。

weixin_29288313的博客 297

Delphi调用WindowsAPI获取窗口进程

Delphi有封装的很好的WindowsAPI,直接调用即可,大体上和C++差不多,有些地方需要额外处理。在object pascal中,@是取地址,和FB一样,和C/Cpp中&作用相当。

m0_47587308的博客 767

aistudio高效解压zip文件的实用技巧

本文详细介绍了在百度AI Studio平台上高效解压ZIP文件的实用技巧。针对深度学习项目数据准备中的常见痛点,重点讲解了使用Python zipfile库和Linux unzip命令两种核心方法,并提供了路径设置、大文件处理、中文乱码等关键问题的解决方案,帮助用户提升数据处理效率。

salt的博客 784

用Delphi + DirectX开发简单RPG游戏

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 775

智能生活中枢:基于 ESP32-S3 的桌面智能助手与日程提醒终端设计与实现

本文完成了基于 ESP32-S3 的桌面智能助手与日程提醒终端的完整设计,实现了时间同步、日程管理、声光提醒、环境监测、本地存储等核心功能。硬件接线简洁、软件逻辑清晰,可直接制作成品使用。硬件方案:以 ESP32-S3 为核心,搭配 OLED、DS3231、DHT11、按键、声光模块,接线标准化、易复刻;软件方案:基于 Arduino 开发,提供标准 Mermaid 软件流程图,代码模块化、可直接编译运行;核心功能:网络授时、本地日程管理、掉电存储、声光提醒、温湿度监测,满足桌面智能助手全场景需求。

weixin_42300449的博客 209

飞腾平台(FT2000/4 D2000/8)配置GPIO引脚

飞腾平台配置CPU的引脚为GPIO工作模式的方式有永久型和暂时型: - 永久型是通过UEFI中的MmioWrite32函数来实现的,该方法可以在UEFI阶段就对复用引脚的工作模式配置为GPIO,并且在进入操作系统后仍然不会发生便会; - 临时型是通过rw工具,在系统下手动修改复用引脚的工作模式,该方法在系统重启后会失效,所以是暂时型的。

qq_30135687的博客 5616

Delphi-x2d 网络游戏引擎

Delphi-x2d网络游戏引擎说明: 一、简介     一套代码,同时支持PC和ANDROID。集成各类基本函数、声音功能、网络功能、图片工具、动画工具、UI工具(非必须)。纯NDK开发模式,最大程度地封装了ANDROID的各类接口功能,让开发者彻底脱离JAVA或C,只需使用DELPHI,即可飞速开发网络游戏或应用程序。除了运行期跨平台,本引擎还在开发上跨语言(除了DELPHI版,还有VC版

delphi-x2d 2946

基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)

TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。简单来说就是:一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。这也就是TF-IDF的含义。

m0_64336780的博客 1万+

使用Delphi编写棋牌类游戏 -- 基础篇(3)

想要实现很炫的棋牌类游戏的效果,一定要用很好的开发工具。DELPHIX自然是很不错的选择,但是使用起来比较麻烦。而使用Asphyre来开发则会方便很多 下面我们来探讨一下如何使用Asphyre3.10开发棋牌类游戏的客户端、以及如何实现粒子效果的问题。 1:使用Asphyre开发游戏。 安装Asphyre。 Asphyre3.10可以安装在DELPHI7下。和其它的第三方控件一样,安装完成...

weixin_33713350的博客 336

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3174

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C++ HOOK PC微信实现无限制多开,理论支持所有版本,本文使用微信 3.0.0.47

一个程序,如果想做单例,无非就是遍历进程,mutex 微信这里使用的就是mutex 互斥 微信启动的时候 会调用 CreateMutexW 来创建一个互斥句柄 具体的代码如下 CreateMutexW(0, FALSE, L"_WeChat_App_Instance_Identity_Mutex_Name"); ; 想要做破解这个也挺简单的 我这里做的是打开微信的时候,注入我自己的DLL,通过修改(_WeChat_App_Instance_Identity_Mutex_N...

Hellmessage 4918

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Delphi:龟兔赛跑游戏(Timer、Button、Editor控件的综合应用)

游戏介绍 继续学习delphi ,今天学习delphi一些常用控件的学习。今天通过龟兔赛跑小程序的编写对Timer、Button、Editor 等控件的学习 对Delphi的相关语法进行学习。 用户可以自定义 乌龟和兔子的速度,游戏可以中途暂停,比赛完毕可以重新开始比赛。 效果展示 核心代码 //游戏开始 procedure TForm1.judgeClick(Sender: T

重庆李四 553

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

用Delphi + DirectX开发简单RPG游戏 转

    TDXDraw DirectDraw 和 Direct3D 组件   TDXDIB 容纳DIB(设备无关位图,Device Independent Bitmap)的组件   TDXImageList 图片列表组件   TDX3D Direct3D 组件 (和TDXDraw一起使用)   TDXSound DirectSound 组件   TDXWave 容纳 Wave(波形音频

gaoyifeng99的专栏 661

delphi 遍历所有窗口

遍历窗口

yygyyygy1233的博客 1053

钩子(HOOK)机制的使用

转自:优快云 钩子(HOOK)机制的使用 作者:e梦缘 SetwindowsHookEx函数提供15种不同的消息监视类型,也就是15中不同的钩子。 分别用于捕获某一特定类型或某一范围的消息(如:键盘消息,鼠标消息等)。 我们这里仅以鼠标钩子的使用为例,讨论在DELPHI下怎样编写DLL程序和怎样在自己的程序中安装使用鼠标钩子函数。 Windows提供API函数SetwindowsHookEx来建

thinkray的专栏 1006

用Delphi+DirectX开发简单RPG游戏

提到 rpg (角色扮演游戏,role play game),在座各位恐怕没有不熟悉的。从古老经典的 dos 版《仙剑奇侠传》到新潮花哨的《轩辕剑》系列,无不以曲折优美的故事情节,美丽可人的主角,悦耳动情的背景音乐,震撼了每一个玩家的心灵。而说到 rpg,就不能不提 directx,因为 pc 上大部分的 rpg 都是用这个冬冬开发的。早在《轩辕剑叁外传——天之痕》推出的时候,我就曾想过用 dir

sasa123as的专栏 1910
上一篇: delphi外挂制作介绍篇
下一篇: delphi的treeview(收集)
yesloo
博客等级 码龄21年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值