Windows95/98下怎樣隱藏應用程式不讓它出現在CTRL-ALT-DEL對話方塊中? (轉)

gugu99發表於2008-05-31
Windows95/98下怎樣隱藏應用程式不讓它出現在CTRL-ALT-DEL對話方塊中? (轉)[@more@]

 把你的應用從CTRL-ALT-DEL對話方塊中隱藏的一個簡單辦法是去應用程式的標題。如果一個程式的主視窗沒以標題,95不把它放到CTRL-ALT-DEL對話方塊中。清除標題屬性的最好地方是在WinMain裡。
WIN 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對話方塊中隱藏起來。
file------------------------------
typedef D (__stdcall *pRegFunction)(DWORD, DWORD);
 
class TForm1 : public TForm
{
__published:
  TButton *Button1;
private:
  HINSTANCE hKernelLib;
  pRegFunction RegisterServiceProcess;
public:
  __fastcall TForm1(TComponent* Owner);
  __fastcall ~TForm1();
};
 
 
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);
  }
}

  注: 下沒有RegisterServiceProcess函式。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1004875/,如需轉載,請註明出處,否則將追究法律責任。

相關文章