財神娛樂首存即享優惠回饋唷~詳情請進👉

Windows 7登錄屏幕珍愛法江南娛樂式在Delphi

捕 魚 達人-大型 機 台 打 魚 完美移植

當使用Delphi運用法式作為
Wind六合彩玩法ows 7登錄屏幕珍愛法式(32位以及64位Windows)時,我碰到成績.縱然空缺的運用法式(新項目沒有任何額定的代碼)會引起過錯.

Delphi 7運用法式拋出“內存沒法讀取”過錯,Delphi 2010運用法式拋出“運用法式中產生未知軟件異樣異樣”,然后“運轉時過錯217”.此過錯產生在任何表單初始化以及異樣處置法式的任何初始化之前.
將notepad.exe配置為登錄屏幕珍愛法式事情正常.
有甚么設法嗎?

正如我在談論中所說的那樣,它不是“隱形代碼”,只是一些單位的初始化部門中的代碼致使了成績.我已經經想法追究禍首罪魁(最少有一個 – 可能還有其余人).

當您使用窗體單位時,它會依靠于類單位.
初始化部門挪用InitThreadSynchronization,個中包含如下內容:

SyncEvent := CreateEvent(nil,True,False,”);
if SyncEvent = 0 then
RaiseLastOSError;

在登錄屏幕中挪用API API挪用CreateEvent掉敗.可憐的是,我不確定登錄屏幕是否:(a)禁止CreateEvent齊全(b)必要CreateEven地下539中4碼多少錢tEx,或者(c)將使用恰當的lpEventAttributes參數.我已經經發布了一個更詳細的成績,但愿可以或許找出:CreateEvent from Windows-7 Logon Screen
您可以使用如下節制臺運用法式驗證成績:

program TestLoginScreensaver;

{$APPTYPE CONSOLE}

uses
Windows,SysUtils;

var
SyncEvent: THandle;

begin
try
SyncEvent := CreateEvent(nil,”);
if SyncEvent = 0 then
香港六合彩资料 RaiseLastOSError;
CloseHandle(SyncEvent); //So handle is closed if it was created (e.g. while logged in)
except
on E:Exception do
Writeln(E.Classname,’: ‘,E.Message);
end;
Readln;
end.

SyncEvent的目的是使TThread實例可以或許同步到主線程.以是若是你編寫一個線程化的運用法式,或者使用TThread之外的其余線程創立你的線程,那末現實上并不必要/使用SyncEvent.

SIDE-RANT: This is a prime example of the problem with using the initialization section. Merely 六合彩結果統計including a unit has the potential to introduce unnecessary side-effects. They’re Mostly Harmless,but not in this case. Now you may argue that Classes.pas is bloated,a電競運彩玩法nd I won’t argue. But the point is that if Classes initialization were called explicitly from the DPR,this problem would have been easier to identify and find a workaround for.

編纂:新辦理方案
正如雷米·雷博在另一個成績中指出的那樣.行:

SyncEvent := CreateEvent(nil,”);

必需變動為:

SyncEvent := CreateEvent(nil,nil);

因為這個辦理方案觸及從新編譯VCL單位,以是您可能想要相識這個成績上的幾個previous questions
作為獨一的轉變(在D2009中編譯),我可以或許在登錄屏幕上勝利顯示一個空缺表單.然則,請記住,因為登錄屏幕上的寧靜限定,您平日但愿可以或許履行的某些操作將被禁用.

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。