电子书籍,里面有丰富的文章和精神的营养,

源代码在线查看: 关闭外部应用程序.txt

软件大小: 75 K
上传用户: caim3587
关键词: 电子 书籍
下载地址: 免注册下载 普通下载 VIP

相关代码

				关闭外部应用程序 
				
				
				
				
				
				先利用FindWindow函数找出要关闭的应用程序的主窗口名字,然后发送一个消息即可。
				实例如下:
				
				HWnd HWndCalculator;
				HWndCalculator = Winprocs->FindWindow(nil, "计算器");
				// close the exist Calculator
				if (HWndCalculator)
				SendMessage(HWndCalculator, WM_CLOSE, 0, 0);
				
				
				
				
				
				
				
				
				Windows95/98下怎样隐藏应用程序不让它出现在CTRL-ALT-DEL对话框中? 
				
				
				把你的应用程序从CTRL-ALT-DEL对话框中隐藏的一个简单办法是去应用程序的标题。如果一个程序的主窗口没以标题,Windows95不把它放到CTRL-ALT-DEL对话框中。清除标题属性的最好地方是在WinMain函数里。
				
				WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
				{
				    try
				    {
				         Application->Title = "";
				         Application->Initialize();
				         Application->CreateForm(__classid(TForm1), &Form1);
				         Application->Run();
				    }
				    catch (Exception &exception)
				    {
				         Application->ShowException(&exception);
				    }
				    return 0;
				}
				另一种方法是:调用RegisterServiceProcess API 函数将程序注册成为一个服务模式程序。 RegisterServiceProcess是一个在Kernel32.dll里相关但无正式文件的函数。在MS SDK头文件里没有该函数的原型说明,但在Borland import libraries for C++ Builder里能找到。很显然,这个函数的主要目的是创建一个服务模式程序。之所以说很显然,是因为MSDN里实质上对这个函数没有说什么。
				
				下面的例子代码演示了在Windows95/98下怎样通过使用RegisterServiceProcess来把你的程序从CTRL-ALT-DEL对话框中隐藏起来。
				
				//------------Header file------------------------------
				typedef DWORD (__stdcall *pRegFunction)(DWORD, DWORD);
				 
				class TForm1 : public TForm
				{
				__published:
				    TButton *Button1;
				private:
				    HINSTANCE hKernelLib;
				    pRegFunction RegisterServiceProcess;
				public:
				    __fastcall TForm1(TComponent* Owner);
				    __fastcall ~TForm1();
				};
				 
				 
				//-----------CPP file------------------------------
				#include "Unit1.h"
				 
				#define RSP_SIMPLE_SERVICE     1
				#define RSP_UNREGISTER_SERVICE 0
				 
				__fastcall TForm1::TForm1(TComponent* Owner)
				    : TForm(Owner)
				{
				    hKernelLib = LoadLibrary("kernel32.dll");
				    if(hKernelLib)
				    {
				        RegisterServiceProcess =
				                  (pRegFunction)GetProcAddress(hKernelLib,
				                                               "RegisterServiceProcess");
				 
				        if(RegisterServiceProcess)
				            RegisterServiceProcess(GetCurrentProcessId(),
				                                   RSP_SIMPLE_SERVICE);
				    }
				}
				 
				__fastcall TForm1::~TForm1()
				{
				    if(hKernelLib)
				    {
				        if(RegisterServiceProcess)
				            RegisterServiceProcess(GetCurrentProcessId(),
				                                   RSP_UNREGISTER_SERVICE);
				 
				        FreeLibrary(hKernelLib);
				    }
				}
				//-------------------------------------------------
				 
				
				注: windows NT下没有RegisterServiceProcess函数。
				
				 
				
				
				
				 
				
				
				  
							

相关资源