線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1121
推到 Plurk!
推到 Facebook!

WindowsXP關機時的反白畫面,只留下詢問的視窗。

 
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-01 10:32:54 IP:211.22.xxx.xxx 未訂閱
實作的方法是, 一個半透明的 Form 加上另一個正常 ON TOP 的 Form 並且關閉快捷列、alt + tab、alt + esc 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  DLL1 = LoadLibrary("USER32.DLL");
 (FARPROC&)SetLayeredWindowAttributes = 
  GetProcAddress(DLL1,"SetLayeredWindowAttributes");
  // 找到SetLayeredWindowAttributes function的Entry
  SETLAYER *SetLayeredWindowAttributes;
  SetLayeredWindowAttributes =
  (SETLAYER *)GetProcAddress(DLL1, "SetLayeredWindowAttributes");
  if(SetLayeredWindowAttributes == NULL)
  {
    ShowMessage("SetLayeredWindowAttributes Set Error!");
  }
  // 設定為擴充型態Window
  long lStyle;
  lStyle=GetWindowLong(Handle, GWL_EXSTYLE );
  lStyle |= 0x00080000;
  SetWindowLong(Handle, GWL_EXSTYLE, lStyle );
  // 設定半透明, 參數3: 0=全透明 , 255為不透明
  SetLayeredWindowAttributes(Handle,0, 160, 2); 
  //現在設為 150,即半透明狀態
}
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-01 20:03:34 IP:211.76.xxx.xxx 未訂閱
請問 SETLAYER 被定義成甚麼型態?
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-02 11:01:22 IP:211.22.xxx.xxx 未訂閱
抱歉!我要表達的只是實作Win XP 的概念 我修改了一下上面的文章顏色 你只需要用到紅色的地方就可以,使畫面變成半透明 至於使用 user32.dll,是在說明Windows 真的運作的原理 你可以把其他程式碼都拿掉,只留下紅色的部分 所以我重新貼一次!
builder78
初階會員


發表:36
回覆:100
積分:47
註冊:2003-02-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-02 15:20:25 IP:211.76.xxx.xxx 未訂閱
恩~~ 感謝~ 滿有創意的喔~~ 這樣就不必抓桌面的HDC貼圖了 ^^
系統時間:2024-03-29 23:59:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!