2012-11-19 11 views
7

In Delphi 2009 und können Sie diese Zeile zu einem Projekt .dpr fügen Sie den tsaware PE-Flag in Ihrer Anwendung ausführbare Datei zu setzen:Delphi 2007: Wie man TSAWARE einstellt?

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE} 

dachte ich (zu Unrecht), dass diese Syntax nicht in Delphi 2007 unterstützt wird. Ich habe eine Anwendung, die ich von 2007 noch nicht auf eine neuere Version von Delphi portieren kann (die Aufgabe ist im Gange, wird aber in den nächsten Monaten nicht ausgeführt).

Update es war einfach, dass Windows zum Projekt .dpr auch hinzugefügt werden muss.

+2

Die Syntax wird in D2007 unterstützt, und die Konstanten-Deklaration wird in "Windows.pas" um die Zeile 1832 oder so definiert. –

+0

Okay mein Fehler! –

Antwort

3

Meine Vermutung ist, dass Sie die Windows Gerät aus dem .dpr Datei uses-Klausel fehlen. Fügen Sie das hinzu und Sie können schreiben:

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE} 

in Ihrer .dpr-Datei. Obwohl Sie es eindeutig nach der uses-Klausel schreiben müssen.

Das Feature $SetPEOptFlags wurde einige Versionen vor Delphi 2007 hinzugefügt. Und so ist der Fehler, den Sie vermutlich sehen, einfach, dass IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE nicht deklariert ist. Und das wird gelöst, indem sichergestellt wird, dass das Symbol in der .dpr-Datei sichtbar ist. Natürlich können Sie das tun, indem Sie eine Konstante in der .dpr-Datei deklarieren, aber um Doppelungen zu vermeiden, ziehe ich es vor, immer die Windows-Einheit hinzuzufügen.

2

kompiliert unter D7

const 

IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE = $8000; 

{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE} 
+0

Okay mein Fehler! –