游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7112|回复: 12

请教版主与各位高人如何在窗口中运行游戏

[复制链接]

3

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2003-10-30 20:32:00 | 显示全部楼层 |阅读模式
    很多的游戏都是以设备独占方式来运行游戏,请教如何将其限定在窗口中,并且用自己的程序将它包起来,换句话说就是把它作为自己程序的一个子窗口,拦截其所有的消息进行预先处理。

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-10-30 20:44:00 | 显示全部楼层

Re:请教版主与各位高人如何在窗口中运行游戏

有点难度,不过你可以尝试一下用钩子(HOOK)程序将DX图形设备创建的基础函式钩出来,然后用自己的程式去修改入口参数。(我所说的只是纸上谈兵,并无实例) [em1]

21

主题

111

帖子

126

积分

注册会员

Rank: 2

积分
126
QQ
发表于 2003-10-30 20:50:00 | 显示全部楼层

Re:请教版主与各位高人如何在窗口中运行游戏

好象只是个FULL SCREEN模式和WINDOWED模式的区别。

3

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2003-10-30 23:01:00 | 显示全部楼层

Re: 请教版主与各位高人如何在窗口中运行游戏

      谢谢站长的提示,这种方法我也想过,挂取消息以及修改某些函数地址以达到预处理的目的,还没有具体练习过。
      更进一步的想法就是VMWare这种虚拟机是怎么实现的?不用像他那样模拟一个完全的计算机,仅仅模拟一个运行环境。这样是否很难,毕竟只是看到有这样的软件却没看到有这些方面的书籍,没有学习的方向。
      能否给一些提示。 [em14]

16

主题

172

帖子

177

积分

注册会员

Rank: 2

积分
177
QQ
发表于 2003-10-31 01:06:00 | 显示全部楼层

Re:请教版主与各位高人如何在窗口中运行游戏

Delphi
1) 游戏显示在自己的窗口里....

procedure TForm1.Timer1Timer(Sender: TObject);
var
  MuWindow: HWND;
  WindowText: array[0..255] of char;
  ClassText: array[0..255] of char;
begin
  MuWindow := GetForegroundWindow;
  GetClassName(MuWindow, ClassText, 255);
  if ClassText = 'MU' then
  begin
    Windows.SetParent(MuWindow, Handle);
    Timer1.Enabled := False;
  end;
end;

16

主题

172

帖子

177

积分

注册会员

Rank: 2

积分
177
QQ
发表于 2003-10-31 01:10:00 | 显示全部楼层

Re:请教版主与各位高人如何在窗口中运行游戏

2)拦截其所有的消息进行预先处理

主要是使用钩子进行进程注入,先SetWindowsHookEx安装目标窗口
的钩子,一般是用WH_GETMESSAGE钩住GetMessage函数,这样
可以抢先获取消息。再向目标窗口发送任意消息(一般是无意义消
息),就可以触发已经注入目标窗口进程的自己的程序。

[em2]

16

主题

172

帖子

177

积分

注册会员

Rank: 2

积分
177
QQ
发表于 2003-10-31 02:33:00 | 显示全部楼层

Re: Re: 请教版主与各位高人如何在窗口中运行游戏

progame: Re: 请教版主与各位高人如何在窗口中运行游戏

      谢谢站长的提示,这种方法我也想过,挂取消息以及修改某些函数地址以达到预处理的目的,还没有具体练...

必须注入进程实现,你的修改的方法对这样的程序来说太复杂,你的方法只适合搞注册机方面的应用,你修改的起吗?

强烈建议有那时间去 看看 这个...
http://www.gameres.com/bbs/showthread.asp?page=end&threadid=1376

[em22]

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2003-10-31 11:07:00 | 显示全部楼层

Re: 请教版主与各位高人如何在窗口中运行游戏

VM的制作难度与要模拟的机体以及你对机体本身的了解程度有很大的关系,举个例子来说,要模拟一个任天堂模拟器,分为CPU模拟,PPU模拟,PSG模拟,卡带Mapper模拟,几个部分,想达到完全模拟需要对硬体有比较深层的认识(当然离不开详细的硬体资料),如PPU的模拟,如果你对任天堂的硬体结构和原理不是很熟悉的话,就不可能模拟出分裂画面的效果。同样,CPU的模拟,如果你对各条指令的微操作不熟悉的话,会在模拟器中留下隐患。
[em15]

12

主题

92

帖子

97

积分

注册会员

Rank: 2

积分
97
QQ
发表于 2003-10-31 15:37:00 | 显示全部楼层

Re:请教版主与各位高人如何在窗口中运行游戏

呵呵,俺搞过这个,基本上比较清楚。NES都成了模拟器的炼习机了。不过还没深入。nova,做过模拟器吗?

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2003-10-31 15:48:00 | 显示全部楼层

Re: 请教版主与各位高人如何在窗口中运行游戏

几年前做过一个 [em15]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-23 18:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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