2013-04-23 120 views
-1

我已經在Delphi 10 Lite中創建了一個屏幕保護程序,使用關於此問題的不同描述,可以在網上獲得。現在,屏幕保護程序運行良好,缺少一件事:屏幕保護程序設置對話框中的預覽工作良好。它如何被創建?我讀過這個描述:how to make a screen saver preview in Delphi? 但我想要更具體的東西,也許有一個例子。我正在使用Windows 7 Ultimate SP1。 謝謝。在Delphi中創建一個屏幕保護程序預覽

+1

如何你的屏幕保護程序的實施,到底? – OnTheFly 2013-04-23 16:53:13

+2

關於另一個問題的說明還不清楚嗎?你必須實現'/ p'命令行參數來接受'HWND'作爲輸入。如果提供了,您只需簡單地使用該HWND作爲屏幕保護程序的UI的父窗口來呈現屏幕保護程序,否則您可以創建自己的全屏「HWND」作爲父窗口。 – 2013-04-23 17:34:09

+2

有沒有這樣的事情,德爾福10精簡版。你真的在用什麼版本的德爾福? – 2013-04-23 17:50:09

回答

4

英巴卡迪諾網站提供了一個功能齊全的屏幕保護程序示例,其中包括正常執行(預覽),預覽,密碼設置等。試試這篇文章Random Images Screen Saver - a complete screen saver example,源代碼可以從here下載。

+0

我不知道發生了什麼,但無法正常打開源代碼:顯示不同的錯誤消息。現在我將看看網站,看看我能否找到有用的東西。不管怎樣,謝謝你。 – 2013-04-23 19:36:45

+0

@LaszloBalazs - 我確認。像往常一樣,Embarcadero網站被破壞(連接超時)。 – Ampere 2017-09-22 08:52:34

+0

替代鏈接:http://cc.embarcadero.com/item/15504 – Ampere 2017-09-22 13:21:05

0

這是我在做my little scrub screen saver test(做多看少它是一個拋光的工作原理更多):

窗口句柄是/ P開關時傳遞的窗口ID。我操作了一些東西(屏幕保護程序只是用不同的顏色定義文本,並在它們之間有一個明確的延遲),以便屏幕保護程序可以對窗口句柄起作用,所以我不必重複屏幕保護程序代碼本身。 SS_Init初始化屏幕保護程序的事情,SS_Start完成它的一個步驟,SS_End包裝事物。

if program_state = Preview then // code before indicates /P was passed 
    begin 
    { spindle off messages until window is visible } 
    while not IsWindowVisible(WinHandle) do 
     Application.ProcessMessages; 
    { initialize and do screen saver draw } 
    start_time := WinMSSinceStart; // timeGetTime 
    SS_Init(WinHandle); 
    while IsWindowVisible(Winhandle) do 
     begin 
     if (WinMSSinceStart - Start_Time) >= config_rec.Delay then 
      begin 
      SS_Start(WinHandle); 
      start_time := WinMSSinceStart; 
      end; 
     Application.ProcessMessages; 
     sleep(10); 
     end; 
    SS_End(Winhandle); 
end; 

這裏是你如何設置的TCanvas畫上傳遞的窗口句柄(這是SS_Init(但不是整個事情)MyCanvas是我在行定義與此代碼的屬性。

{ get window dimensions and set up TCanvas } 
    GetClientRect(WinHandle, WinRect); 
    MyCanvas := TCanvas.Create; 
    MyCanvas.Handle := GetDC(Winhandle); 

然後,當你完成(這是我的整個SS_End功能):

ReleaseDC(WinHandle, MyCanvas.Handle); 
    MyCanvas.Free; 

希望幫助了

+0

謝謝,我會看看,並會回來。 – 2013-04-23 19:38:13

相關問題