各位我说的不是 TopLevel 和 TopMost 而是下面的情况:首先打开我自己的程序(也就是我想让它一直在最前面显示的程序,取名为A吧),然后我打开另一个程序(取名为B吧),B程序是全屏运行的,B运行时,A不会在B的上面,我通过热键调出A,B自动最小化了,如何使A出现时B不会最小化呢?
解决方案 »
- winfrom 生成一个cookie 要怎么做?
- 怎么在一个C#应用程序中打开媒体播放器并播放音乐呢
- 这个问题无法描述。。。可能跟session有关
- AudioVideoPlayback做的播放程序,如何控制音量(我只要静音功能就行)
- 向各位大侠请教xmlhttp的一个问题
- 关于Process类中的TotalProcessorTime和MainModule方法的问题
- 请教一个有关数据库的问题。
- 疑问:非托管资源dispose问题。
- C# 动态编译时能否设置断点跟踪?怎样实现啊
- 我在WEB自定义控件中加入一个按钮,为什么不能执行内部的事件呢
- VS2005 C#编的程序在别的机器上运行要下载什么?
- 请问一下,工具箱中引进自定义组件后为什么出现errorprovider,应该怎么解决呢
不可能,全屏程序与窗口程序不可能在屏幕上并存的
除非是假全屏(一个没有边框的大小与屏幕一样的窗口)
viena(维也纳N02)
一般游戏外挂都可以这样,在游戏的时间可以调出,只是我不知道怎么实现.
如果两个程序相互很独立,又都是TopMost,那可能就很难做到的,
尤其是一个程序还是全屏……
[DllImport("User32.dll")]
public static extern bool SetWindowPos(int hWnd,int hWndInsertAfter,int x,int y,int cx,int cy,int wFlags);
SetWindowPos(this.Handle.ToInt32(),-1,0,0,0,0,1);
一般游戏外挂都可以这样,在游戏的时间可以调出,只是我不知道怎么实现.游戏外挂是采用注入钩子的方法实现的。
Avoid(好象又涨分了)
请问,C#如何实现啊
这个问题可以和热键问题一并解决:众所周知,Windows是一个消息驱动的32位操作系统。在Windows中,所有正在运的进程都有一个独立的2GB的虚拟地址空间,进程之间相互不可见。Windows的绝大多数API与消息是不能跨越进程的。 “Hook”在Windows中主要是用来截取消息的,形象说,就是用来“钩” 消息的。Hook实际上是一个处理消息的程序段,每当特定的消息发出,在没有到达目的窗口前,Hook函数就先捕获该消息,即Hook函数先得到处理消息的控制权。而且如果你把Hook实现在DLL文件中,那么Hook函数将会自动被系统映射到会处理那个特定消息的窗口所在的进程虚拟地址空间中。例如,你可以用Hook来捕获系统中所有的键盘输入消息(WM_KEYDOWN)来实现对电脑使用者的输入进行记录(关于Windows进程管理与Hook 的详细用法,请参阅MSDN与相关资料)。 微软的 DirectX 为Windows下的游戏带来了华丽的声光效果。但是由于DirectX采用直接访问硬件的方法提高多媒体与游戏程序的速度,因此导致了人们误以为在DirectX(确切地说是DirectDraw)下不能显示普通的Windows对话框。 幸运的是,DirectX 是支持GDI的,也就是说游戏程序可以用常规的方法在DirectX下显示对话框(在微软 DirectX 8 SDK 中有名为“FullScreenDialog”的例子)。所以现在我们的问题变为:如上所述,如何让我们的程序进入游戏的程序的内部并显示对话框。 这似乎是一个很棘手的问题。但是,有了上面所讲的Hook情况就大为不同了。我们知道既然Hook可以映射到别的进程内部,那么只要将显示对话框的函数以及对话框资源包括在Hook DLL 中不就可以调用DialogBox() 了吗?完全正确!我们用 SetWindowsHookEx() 为系统设置一个键盘消息Hook,系统会自动将这个DLL映射到游戏的进程中。每当有键盘消息,我们只要判断是不是我们所设定的热键,如果是就调用 DialogBox() 显示对话框即可。 (SE: 还有一种方法可以把 DLL 插入别的进程,那就是利用 RemoteThread 远线程,具体程序请参阅上文提到的 PauseProcess 程序。) 您可以参阅我的TestPopup程序,就演示了在DirectX下弹出界面、暂停游戏、热键等功能。
楼主可以在下面的论坛获取更多信息http://hack.gameres.com/showthread.asp?threadid=75739