再次提问,对其他窗口的视觉控制(100分)

  • 主题发起人 主题发起人 yeung
  • 开始时间 开始时间
Y

yeung

Unregistered / Unconfirmed
GUEST, unregistred user!
需要对系统中的其他窗口(不是自己的delphi 窗口,而是其他的程序)进行以下控制:
-将之从任务栏和alt-table列表中完全去掉,但是窗口仍然是可见可操作的.-暂时更改其资源比如该程序的图标.

其他进一步的要求就不用了.嘻嘻

原有100分,现在再加100分,谢谢帮忙.
 
好像隐藏自己的程序都没解决呢, 更别说隐藏其他程序了. 应该与EnumWindowsProc
有关
 
?
为什么有面的我看不见??
好象可以发系统消息,让系统以为SCREEN SAVER正在运行,可以去ALT+TAB
其它要求我看不见
 
要在任务列表中隐藏,得调用RegisterServiceProcess()。
这样之后Alt+Tab也看不到的。但您必须知道进程的Handle。
 
那怎么通过一个窗口的handle来获得它所属进程的process_id呢?
把自己的窗口达到这种效果是可以的,而且已经做到了,可是我
不知道对其他的程序如何实现.
 
1.用EnumWindowsProc获得进程中每个窗口的handle.

2.用RegisterServiceProcess()来达到您的要求.
const
RSP_SIMPLE_SERVICE = $00000001;
RSP_UNREGISTER_SERVICE = $00000000;
// Parameter dwProcessId can be 0, same effect as GetCurrentProcessId
// Return Values: True(1) means success
function RegisterServiceProcess(dwProcessId, dwServiceType: DWord): Bool; stdcall;
// Place in "implementation" session
function RegisterServiceProcess; external 'Kernel32.dll' Name 'RegisterServiceProcess';
// Example:
// RegisterServiceProcess(0, RSP_SIMPLE_SERVICE);
// RegisterServiceProcess(0, RSP_UNREGISTER_SERVICE);

ps: 这样也很好呀!
将程序的窗口样式设为TOOL窗口,可避免在任务条上出现
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);

看看<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=93590">这里</a>吧.
 
难度比较大噢,请大虾们各抒己见。
 
yeung:

这个问题已经很长时间没有人参加讨论,为保持版面
整洁,节约网友时间,请提问者采取必要处理措施。
关于本版管理细则,请参见<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这个</a>问题。如两天
内提问者没有响应,我将采取强制措施。

如有管理建议,请到<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这里</a>提出。谢谢!
 
???怎么有两个
 
yeung:

这个问题已经很长时间没有人参加讨论,为保持版面
整洁,节约网友时间,请提问者采取必要处理措施。
关于本版管理细则,请参见<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这个</a>问题。如两天
内提问者没有响应,我将采取强制措施。

如有管理建议,请到<a href="http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=111927">这里</a>提出。谢谢!
 
写一个DLL,用RunDll32去运行他。

Q164787 - INFO: The Windows 95 Rundll and Rundll32 Interface
http://support.microsoft.com/support/kb/articles/q164/7/87.asp
 
对于其他应用程序的窗口比较麻烦,也许可以用Hook试一下。
如果想知道窗口的Process id 可以用GetWindowThreadProcessId()得到,
想要得到process handle可以用OpenProcess().
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
906
SUNSTONE的Delphi笔记
S
S
回复
0
查看
884
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部