jedi-apilib-wscl-svn Mailing List for JEDI API Library & Security Code Library (Page 41)
Brought to you by:
dezipaitor,
rweijnen
You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(44) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(94) |
Feb
(95) |
Mar
(30) |
Apr
(62) |
May
(73) |
Jun
(56) |
Jul
(41) |
Aug
(25) |
Sep
(24) |
Oct
(22) |
Nov
(6) |
Dec
(9) |
2009 |
Jan
(43) |
Feb
(27) |
Mar
(26) |
Apr
(8) |
May
(10) |
Jun
(2) |
Jul
(5) |
Aug
(11) |
Sep
(7) |
Oct
(3) |
Nov
(7) |
Dec
(7) |
2010 |
Jan
(42) |
Feb
(35) |
Mar
(27) |
Apr
(5) |
May
(3) |
Jun
(18) |
Jul
(30) |
Aug
(19) |
Sep
(8) |
Oct
(18) |
Nov
(44) |
Dec
(9) |
2011 |
Jan
|
Feb
(2) |
Mar
|
Apr
(2) |
May
(2) |
Jun
(1) |
Jul
|
Aug
(2) |
Sep
(6) |
Oct
(1) |
Nov
(2) |
Dec
(2) |
2012 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: <dez...@us...> - 2007-12-18 19:34:01
|
Revision: 95 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=95&view=rev Author: dezipaitor Date: 2007-12-18 11:33:55 -0800 (Tue, 18 Dec 2007) Log Message: ----------- xp elevation with desktop Added Paths: ----------- jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.dfm jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.pas jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.dfm jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.pas Added: jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.dfm =================================================================== --- jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.dfm (rev 0) +++ jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.dfm 2007-12-18 19:33:55 UTC (rev 95) @@ -0,0 +1,187 @@ +object FormCredentials: TFormCredentials + Left = 2049 + Top = 274 + BorderStyle = bsSingle + Caption = 'FormCredentials' + ClientHeight = 334 + ClientWidth = 515 + Color = clBtnFace + DefaultMonitor = dmDesktop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + Position = poDefault + OnClose = FormClose + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object JvBevel1: TJvBevel + Left = 16 + Top = 80 + Width = 482 + Height = 80 + Style = bsCustomStyle + Inner = bvRaised + VerticalLines.Bold = True + end + object Image2: TImage + Left = 24 + Top = 179 + Width = 64 + Height = 64 + Transparent = True + end + object Label1: TLabel + Left = 120 + Top = 91 + Width = 369 + Height = 20 + AutoSize = False + Caption = 'Label1' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object Image1: TImage + Left = 24 + Top = 88 + Width = 64 + Height = 64 + Transparent = True + end + object ButtonDefaultUser: TJvTransparentButton + Left = 8 + Top = 72 + Width = 497 + Height = 93 + GroupIndex = 1 + HotTrack = True + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'MS Sans Serif' + HotTrackFont.Style = [] + FrameStyle = fsLight + OnClick = ButtonDefaultUserClick + end + object JvBevel2: TJvBevel + Left = 16 + Top = 171 + Width = 482 + Height = 80 + Style = bsCustomStyle + Inner = bvRaised + VerticalLines.Bold = True + end + object ButtonUser: TJvTransparentButton + Left = 8 + Top = 165 + Width = 497 + Height = 93 + GroupIndex = 1 + HotTrack = True + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'MS Sans Serif' + HotTrackFont.Style = [] + FrameStyle = fsLight + OnClick = ButtonUserClick + end + object EditPassword2: TEdit + Left = 120 + Top = 214 + Width = 365 + Height = 28 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + PasswordChar = #7 + TabOrder = 2 + OnChange = EditPassword2Change + end + object BitBtn1: TBitBtn + Left = 400 + Top = 288 + Width = 107 + Height = 25 + TabOrder = 4 + Kind = bkCancel + end + object BitBtn2: TBitBtn + Left = 296 + Top = 288 + Width = 99 + Height = 25 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Kind = bkOK + end + object EditPassword1: TEdit + Left = 120 + Top = 120 + Width = 365 + Height = 28 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + PasswordChar = #7 + TabOrder = 0 + OnChange = EditPassword1Change + end + object UsersComboBox: TComboBox + Left = 120 + Top = 181 + Width = 366 + Height = 28 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ItemHeight = 20 + ParentFont = False + Sorted = True + TabOrder = 1 + Text = 'UsersComboBox' + OnChange = UsersComboBoxChange + Items.Strings = ( + '1' + '2' + '3') + end + object CheckBoxSaveLogon: TCheckBox + Left = 8 + Top = 278 + Width = 193 + Height = 21 + Caption = 'Save logon credentials' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 5 + OnClick = CheckBoxSaveLogonClick + end +end Added: jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.pas =================================================================== --- jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.pas (rev 0) +++ jwscl/branches/XPElevation_2/Ask Credentials Code/CredentialsForm.pas 2007-12-18 19:33:55 UTC (rev 95) @@ -0,0 +1,194 @@ +unit CredentialsForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, Buttons, ExtCtrls, JwsclStrings, JvExControls, + JvLookOut, JvExExtCtrls, JvBevel, JvButton, JvTransparentButton; + +type + TFormCredentials = class(TForm) + BitBtn1: TBitBtn; + BitBtn2: TBitBtn; + Image1: TImage; + Label1: TLabel; + EditPassword1: TEdit; + Image2: TImage; + EditPassword2: TEdit; + UsersComboBox: TComboBox; + CheckBoxSaveLogon: TCheckBox; + ButtonDefaultUser: TJvTransparentButton; + JvBevel1: TJvBevel; + JvBevel2: TJvBevel; + ButtonUser: TJvTransparentButton; + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure EditPassword1Change(Sender: TObject); + procedure EditPassword2Change(Sender: TObject); + procedure ButtonDefaultUserClick(Sender: TObject); + procedure ButtonUserClick(Sender: TObject); + procedure UsersComboBoxChange(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure CheckBoxSaveLogonClick(Sender: TObject); + private + { Private-Deklarationen } + fSaveLogon : Boolean; + fUserName, + fPassword : TJwString; + internalMsg : Boolean; + public + procedure CenterInMonitor(const i : Integer); + { Public-Deklarationen } + property SaveLogon : Boolean read fSaveLogon write fSaveLogon; + property UserName : TJwString read fUserName write fUserName; + property Password : TJwString read fPassword write fPassword; + end; + +var + FormCredentials: TFormCredentials; + +implementation + +{$R *.dfm} + +procedure TFormCredentials.FormClose(Sender: TObject; + var Action: TCloseAction); +begin + SaveLogon := CheckBoxSaveLogon.Checked; +// UserName := + + + + Application.Terminate; +end; + +procedure TFormCredentials.FormCloseQuery(Sender: TObject; + var CanClose: Boolean); +var bButtons, + bDefaultUserPassword, + bUser : Boolean; +begin + CanClose := true; + if ModalResult = mrOk then + begin + try + bButtons := (ButtonDefaultUser.Down xor ButtonUser.Down); + bDefaultUserPassword := + ButtonDefaultUser.Down and (Length(Trim(EditPassword1.Text)) > 0); + bUser := ButtonUser.Down and (Length(Trim(UsersComboBox.Text)) > 0) and + (Length(Trim(EditPassword2.Text)) > 0); + + CanClose := bButtons and (bDefaultUserPassword or bUser); + finally + //if not CanClose then + //Do info here + end; + + if CanClose then + begin + fSaveLogon := CheckBoxSaveLogon.Checked; + if ButtonUser.Down then + begin + fUserName := UsersComboBox.Text; + fPassword := EditPassword2.Text; + end + else + fPassword := EditPassword1.Text; + end; + end; +end; + +procedure TFormCredentials.EditPassword1Change(Sender: TObject); +begin + if internalMsg then + exit; + internalMsg := true; + begin + ButtonDefaultUser.Click; + end; + internalMsg := false; +end; + +procedure TFormCredentials.EditPassword2Change(Sender: TObject); +begin + if internalMsg then + exit; + internalMsg := true; + begin + ButtonUser.Click; + end; + internalMsg := false; +end; + +procedure TFormCredentials.ButtonDefaultUserClick(Sender: TObject); +begin + if internalMsg then + exit; + internalMsg := true; + begin + EditPassword1.SetFocus; + end; + internalMsg := false; +end; + +procedure TFormCredentials.ButtonUserClick(Sender: TObject); +begin + if internalMsg then + exit; + internalMsg := true; + begin + if Length(Trim(UsersComboBox.Text)) = 0 then + UsersComboBox.SetFocus + else + EditPassword2.SetFocus; + end; + internalMsg := false; +end; + +procedure TFormCredentials.UsersComboBoxChange(Sender: TObject); +begin + if internalMsg then + exit; + internalMsg := true; + begin + ButtonUser.Click; + end; + internalMsg := false; +end; + +procedure TFormCredentials.FormCreate(Sender: TObject); +begin + internalMsg := false; +end; + +procedure TFormCredentials.CenterInMonitor(const i : Integer); +var SX, SY : Integer; +begin + SX := abs(abs(Screen.Monitors[I].BoundsRect.Right) - abs(Screen.Monitors[I].BoundsRect.Left)); + Left := Screen.Monitors[I].Left + ((SX div 2) - (Width div 2)); + + SY := abs(abs(Screen.Monitors[I].BoundsRect.Bottom) - abs(Screen.Monitors[I].BoundsRect.Top)); + Top := Screen.Monitors[I].Top + ((SY div 2) - (Height div 2)); + + exit; + SY := Screen.Monitors[I].BoundsRect.Top - Screen.Monitors[I].BoundsRect.Bottom; + SetBounds(Screen.Monitors[I].Left + SX, //+ ((SX - Width) div 2), + Top, + //(((Screen.Monitors[I].BoundsRect.Bottom - Screen.Monitors[I].BoundsRect.Top)- Height) div 2), + Width, Height); +// Left := 0; +end; + +procedure TFormCredentials.CheckBoxSaveLogonClick(Sender: TObject); +begin + {if CheckBoxSaveLogon.Checked then + MakeFullyVisible(Screen.Monitors[1]) + else + MakeFullyVisible(Screen.Monitors[0]); + DefaultMonitor := dmPrimary; + Position := poScreenCenter; } + +end; + +end. Added: jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.dfm =================================================================== --- jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.dfm (rev 0) +++ jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.dfm 2007-12-18 19:33:55 UTC (rev 95) @@ -0,0 +1,663 @@ +object FormMain: TFormMain + Left = 2027 + Top = 234 + BorderIcons = [] + BorderStyle = bsNone + Caption = 'FormMain' + ClientHeight = 467 + ClientWidth = 617 + Color = clBtnFace + DefaultMonitor = dmDesktop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 8 + Top = 8 + Width = 225 + Height = 177 + end + object JvTransparentButton1: TJvTransparentButton + Left = 32 + Top = 208 + Width = 89 + Height = 81 + AutoGray = False + GroupIndex = 1 + HotTrack = True + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'MS Sans Serif' + HotTrackFont.Style = [] + ShowPressed = False + Transparent = False + Visible = False + OnClick = JvTransparentButton1Click + Glyph.Data = { + 36240000424D3624000000000000360000002800000030000000300000000100 + 20000000000000240000232E0000232E00000000000001000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8F8FFECECECFFE2E2E2FFD7D6 + D7FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFD1D1D1FFE2E2E2FFECEC + ECFFF8F8F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8F8F8FFE8E6E6FFCACACAFFA8A9A9FF999A99FF7C7C + 7DFF707070FF707070FF707070FF707070FF707070FF7C7C7DFF89898BFFA8A9 + A9FFC3C3C3FFD9DDE0FFF4F4F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F8F8F8FFE8E6E6FFC3C3C3FF8FA1A6FF7892A5FF739FBEFF78B7E1FF7EC5 + F6FF7EC5F6FF7EC5F6FF7EC5F6FF7EC5F6FF7DBFEDFF6D9DBFFF748593FF6568 + 69FF707070FF999A99FFC3C3C3FFE2E2E2FFF8F8F8FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8F8 + F8FFD1D1D1FFA8A9A9FF7DA4B9FF7DBFEDFF7EC5F6FF7EC5F6FF7EC5F6FFA4D6 + F9FFC3E4FBFFD8EEFCFFEEF8FEFFF4FAFEFFEEF8FEFFDDF0FDFFCEE9FCFFB8DF + FAFF87A3B6FF5E6162FF707070FF999A99FFCACACAFFECECECFFFBFBFBFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFDFEFFF1F1F1FFC3C3 + C3FF85A8C1FF7DBFEDFF7EC5F6FF7EC5F6FF90CDF7FFC8E7FBFFF4FAFEFFFFFF + FFFFFBFDFEFFF8FCFFFFF4FAFEFFEEF8FEFFEEF8FEFFE8F5FDFFE3F4FEFFE3F4 + FEFFDDF0FDFFCEE9FCFF91A1ACFF5E6162FF7C7C7DFFB7B7B8FFDCDCDCFFF8F8 + F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FDFEFFFFECECECFFB7B7B8FF7EB3 + D7FF7EC5F6FF7EC5F6FF7EC5F6FFBDE2FBFFF8FCFFFFFFFFFFFFFFFFFFFFFDFE + FFFFF8FCFFFFF4FAFEFFF4FAFEFFEEF8FEFFE8F5FDFFE8F5FDFFE3F4FEFFDDF0 + FDFFDDF0FDFFD8EEFCFFD8EEFCFFC0D3E3FF6E7B88FF656869FF999A99FFD7D6 + D7FFF8F8F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00ECECECFFA8B8BDFF7DBFEDFF7EC5 + F6FF7EC5F6FF90CDF7FFE8F5FDFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFFFBFD + FEFFF8FCFFFFF4FAFEFFEEF8FEFFEEF8FEFFE8F5FDFFE3F4FEFFE3F4FEFFDDF0 + FDFFD8EEFCFFD8EEFCFFD3EBFCFFD3EBFCFFCEE9FCFF91A1ACFF5E6162FF999A + 99FFD1D1D1FFF8F8F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F1F1F1FFB1C4CFFF7DBFEDFF7EC5F6FF7EC5 + F6FF97D0F9FFF8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFFF8FC + FFFFF4FAFEFFF4FAFEFFEEF8FEFFE8F5FDFFE8F5FDFFE3F4FEFFDDF0FDFFDDF0 + FDFFD8EEFCFFD8EEFCFFD3EBFCFFCEE9FCFFCEE9FCFFC8E7FBFF95A5BBFF5E61 + 62FF999A99FFD7D6D7FFF8F8F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8F8F8FFC4CAD8FF7DBFEDFF7EC5F6FF7EC5F6FF97D0 + F9FFF8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFFFBFDFEFFE8DB + D6FFC6928BFFA85D5CFF983D36FF983D36FF983D36FF983D36FFA3514CFFB681 + 7DFFC7C1CBFFD3EBFCFFD3EBFCFFCEE9FCFFC8E7FBFFC8E7FBFFBFDEF4FF7485 + 93FF5E6162FF999A99FFE2E2E2FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FBFDFEFFD9DDE0FF83BDE4FF7EC5F6FF7EC5F6FF97D0F9FFF8FC + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1CDCCFFB06A69FF983D + 36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D + 36FF983D36FFA85D5CFFBCBCCAFFC8E7FBFFC8E7FBFFC8E7FBFFA9B9CDFF9AAF + BCFF748593FF656869FFB7B7B8FFECECECFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F1F1F1FF96BAD8FF7EC5F6FF7EC5F6FF88C9F7FFEEF8FEFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6928BFF983D36FF983D36FF9B42 + 3DFF9B423DFF9C4541FF9C4541FF9C4541FF9C4541FF9C4541FF9B423DFF9B42 + 3DFF983D36FF983D36FF983D36FFAD8F94FFC3E4FBFFB7D6ECFF9AAFBCFF9AAF + BCFF9AAFBCFF5E6162FF7C7C7DFFD1D1D1FFF8F8F8FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F8FCFFFFC4CAD8FF7EC5F6FF7EC5F6FF7EC5F6FFD8EEFCFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF4F4F4FFAD6359FF983D36FF9B423DFF9C4541FF9F49 + 45FFA14D4AFFA14D4AFFA14D4AFFA14D4AFFA14D4AFFA14D4AFF9F4945FF9F49 + 45FF9C4541FF9C4541FF983D36FF983D36FFA5777EFFA1C1CFFF9AAFBCFF9AAF + BCFF9AAFBCFF94AEC0FF656869FF999A99FFE8E6E6FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00ECECECFF88C4EDFF7EC5F6FF7EC5F6FF9DD3F9FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFBF6F0FFAD6359FF9B423DFF9C4541FF9F4945FFA14D4AFFA453 + 51FFA45351FFA55755FFAD6359FFB87255FFB87255FFB87255FFAD6359FFA351 + 4CFFA14D4AFF9F4945FF9F4945FF9B423DFF9B423DFF936C6CFF94AEC0FF9AAF + BCFF9ABAC6FFB2DCFAFF7892A5FF7C7C7DFFCACACAFFF8F8F8FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFB + FBFFB7CDE5FF7EC5F6FF7EC5F6FF7EC5F6FFEEF8FEFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFB67774FF9B423DFF9F4945FFA14D4AFFA45351FFA55755FFA75A + 59FFC27F42FFDAAF29FFF0C138FFF2C652FFF2C652FFF4CC71FFF4CC71FFE6BA + 7AFFC3856DFFA45351FFA14D4AFF9F4945FF884E49FF884E49FF978285FF9AAF + BCFFB0D7F2FFB2DCFAFFA5D1EEFF5E6162FFA8A9A9FFECECECFFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F1F1 + F1FF88C4EDFF7EC5F6FF88C9F7FFB2DCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFCBAAA9FF9C4541FF9F4945FFA3514CFFA55755FFA75A59FFB56C4AFFE4B1 + 15FFEFBD19FFF0C138FFF2C652FFF2C652FFF4CC71FFF4CC71FFF5D286FFF5D2 + 86FFF6D798FFE6C796FFAD6359FF975756FF87514CFF87514CFF884E49FFA1C1 + CFFFB2DCFAFFB2DCFAFFABD9FAFF748593FF89898BFFD7D6D7FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CFDE + E9FF88C9F7FF88C9F7FF88C9F7FFEEF8FEFFFFFFFFFFFFFFFFFFFDFEFFFFE8E6 + E6FFA3514CFF9F4945FFA3514CFFA55755FFA85D5CFFC4803EFFEEB804FFEFBD + 19FFF0BF26FFF0C138FFF2C652FFF2C652FFF4CC71FFF5D286FFF5D286FFF6D7 + 98FFF6D798FFF7DCA5FFEFD4A7FF936C6CFF8B5652FF8B5652FF904B46FFAB64 + 65FFB2DCFAFFB2DCFAFFABD9FAFF96BAD8FF707070FFC3C3C3FFF8F8F8FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFBFBFFA8CA + E5FF88C9F7FF88C9F7FFA4D6F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC692 + 8BFF9C4541FFA3514CFFA55755FFAA5F60FFBE7A4EFFEEB804FFEEB804FFEFBD + 19FFF0BF26FFF0C138FFF2C652FFDEC076FFC7B897FFD0C19DFFE6C796FFF6D7 + 98FFF7DCA5FFF7DFB0FFE1C4ABFFBDAF98FF8E5F5CFF8B5652FFA14D4AFF9B42 + 3DFFA8CAE5FFB2D9F5FFABD9FAFFA4D6F9FF656869FFA8A9A9FFECECECFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4F4F4FF88C9 + F7FF88C9F7FF88C9F7FFD3EBFCFFFFFFFFFFFFFFFFFFFFFFFFFFF3EAE7FF9F49 + 45FFA14D4AFFA55755FFA85D5CFFB26A5AFFEAB209FFEEB804FFEEBA0CFFEFBD + 19FFF0BF26FFCDAD70FF7087CDFF4D83F2FF5A8DF4FF6898F5FF77A3F6FF9AB7 + E5FFDBD1BCFFF7DFB0FFC7B897FFC7B897FFC6928BFFA55755FFA14D4AFF9F49 + 45FF9D7D89FFABD9FAFFA4D6F9FFABD9FAFF748593FF89898BFFDCDCDCFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00CFDEE9FF90CD + F7FF88C9F7FF90CDF7FFF8FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6928BFFA14D + 4AFFA45351FFA75A59FFAB6465FFD99E27FFEEB804FFEEB804FFEEBA0CFFEFBD + 19FF999A99FF3772EDFF447DF1FF4D83F2FF6898F5FF6898F5FF77A3F6FF88B1 + F6FF98B9F7FFB7B7B8FFBDAF98FFBBB3A4FFE8DBD6FFB6817DFFA45351FFA14D + 4AFF9E4E4CFFABD9FAFFABD9FAFFA4D6F9FF85A8C1FF7C7C7DFFD1D1D1FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B7D6ECFF90CD + F7FF90CDF7FFABD9FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA85D5CFFA14D + 4AFFA75A59FFAA5F60FFBE7A4EFFEEB804FFEEB804FFEEB804FFEEBA0CFF9897 + 74FF316DEFFF3C77F0FF447DF1FF5A8DF4FF6898F5FF77A3F6FF88B1F6FF98B9 + F7FF9FC0F6FF95A5BBFFBBB3A4FFDBD1BCFFFCF3E0FFE1C4ABFFA75A59FFA351 + 4CFF9F4945FF99B2D4FFA4D6F9FFA4D6F9FF9BCDF0FF707070FFCACACAFFFBFB + FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A5D1EEFF90CD + F7FF90CDF7FFC8E7FBFFFFFFFFFFFFFFFFFFFFFFFFFFE8DBD6FF9F4945FFA453 + 51FFA85D5CFFAB6465FFD99E27FFEEB804FFEEB804FFEEB804FFDAAF29FF316D + EFFF316DEFFF3C77F0FF4D83F2FF5A8DF4FF6898F5FF77A3F6FF88B1F6FF98B9 + F7FF99B2D4FF95A5BBFFA9B9CDFFFAEDD1FFFCF3E0FFFBF6F0FFB06A69FFA453 + 51FFA14D4AFFAD8F94FF9DD3F9FFA4D6F9FF9DD3F9FF656869FFC3C3C3FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009BCDF0FF94CE + F7FF94CEF7FFDDF0FDFFFFFFFFFFFFFFFFFFFBFBFBFFCBAAA9FFA14D4AFFA557 + 55FFAA5F60FFB06A69FFEEB804FFEEB804FFEEB804FFEEB804FF6C86A9FF316D + EFFF316DEFFF3C77F0FF4D83F2FF5A8DF4FF6CA8F6FF7FBAF7FF90C1F8FF9AB7 + E5FF95A5BBFFA3ACBEFFD2E0F5FFF3EAE7FFFCF3E0FFFBF6F0FFC6928BFFA557 + 55FFA14D4AFFA5777EFFA4D6F9FF9DD3F9FF9DD3F9FF6E7B88FFB7B7B8FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0094CEF7FF97D0 + F9FF97D0F9FFEEF8FEFFFDFEFFFFFFFFFFFFFFFFFFFFB6817DFFA3514CFFA75A + 59FFAA5F60FFC4824CFFEEB804FFEEB804FFEEB804FFDAAF29FF316DEFFF316D + EFFF316DEFFF3C77F0FF4D83F2FF5AC5F6FF76E2F9FF95E8FAFFA7ECFBFFA1C1 + CFFF95A5BBFFB7CDE5FFD8E5FBFFF1F1F1FFFCF3E0FFFCF3E0FFCBAAA9FFA75A + 59FFA3514CFFA06C71FF9DD3F9FF9DD3F9FF9DD3F9FF6E7B88FFB7B7B8FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0097D0F9FF97D0 + F9FF97D0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB67774FFA3514CFFA75A + 59FFAB6465FFD19335FFEEB804FFEEB804FFEEB804FFA79C5CFF316DEFFF316D + EFFF316DEFFF3C77F0FF4EACF4FF61DEF8FF76E2F9FF95E8FAFFAAE0EBFFA8B8 + BDFFB1C4CFFFC0D4FBFFD1E1FDFFD8E5FBFFFAEDD1FFFAEDD1FFE8CCB9FFA85D + 5CFFA45351FFAB6465FF9DD3F9FF9DD3F9FF9DD3F9FF6E7B88FFB7B7B8FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0097D0F9FF9DD3 + F9FF9DD3F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F4945FFA45351FFA75A + 59FFAB6465FFD99E27FFEEB804FFEEB804FFEEB804FF89898BFF316DEFFF316D + EFFF316DEFFF3C77F0FF5AC5F6FF61DEF8FF76E2F9FF95E8FAFF9ABAC6FFB1C4 + CFFFE3F4FEFFB3CFFBFFC0D4FBFFD1E1FDFFFAEDD1FFFAEDD1FFE8CCB9FFA85D + 5CFFA45351FF9F4945FF9DD3F9FF9DD3F9FF97D0F9FF6E7B88FFB7B7B8FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009DD3F9FF9DD3 + F9FFA4D6F9FFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFF9F4945FFA45351FFA85D + 5CFFAB6465FFDEA41DFFEEB804FFEEB804FFEEB804FF6080B4FF316DEFFF316D + EFFF316DEFFF3772EDFF5EDDF8FF5EDDF8FF76E2F9FFA1C1CFFF8FA1A6FFBDEE + F8FFDDF0FDFFA9C3F9FFB3CFFBFFB3CFFBFFF9E5BDFFF9E5BDFFE1C4ABFFAA5F + 60FFA45351FF9F4945FF9DD3F9FF97D0F9FF9DD3F9FF6E7B88FFB7B7B8FFF4F4 + F4FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009DD3F9FF9DD3 + F9FFB8DFFAFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFFFF9F4945FFA45351FFA85D + 5CFFAB6465FFDEA41DFFEEB804FFEEB804FFEEB804FF6080B4FF316DEFFF316D + EFFF316DEFFF316DEFFF61DEF8FF5EDDF8FF76E2F9FF8E5F5CFFCBAAA9FFA8B8 + BDFFBDEEF8FF90C1F8FF9FC0F6FFA9C3F9FFF7DFB0FFF9E5BDFFE5BF9BFFAA5F + 60FFA45351FFA06C71FF9DD3F9FF97D0F9FF94CEF7FF6E7B88FFB7B7B8FFF8F8 + F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009DD3F9FFA4D6 + F9FFABD9FAFFFFFFFFFFFFFFFFFFFDFEFFFFF8FCFFFF9F4945FFA3514CFFA75A + 59FFAB6465FFDEA41DFFEEB804FFEEB804FFEEB804FF6080B4FF316DEFFF316D + EFFF316DEFFF316DEFFF61DEF8FF5EDDF8FF61DEF8FF79C2D3FF7F3936FFCBAA + A9FFAA99A6FF88A9EBFF98B9F7FF98B9F7FFF7DCA5FFF7DFB0FFE5BF9BFFA85D + 5CFFA45351FFA06C71FF97D0F9FF97D0F9FF94CEF7FF748593FFCACACAFFFBFB + FBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A4D6F9FFA4D6 + F9FFA4D6F9FFFFFFFFFFFFFFFFFFFBFDFEFFF8FCFFFF9C4541FFA3514CFFA75A + 59FFAA5F60FFDEA41DFFEEB804FFEEB804FFEEB804FF989774FF316DEFFF316D + EFFF316DEFFF316DEFFF4EACF4FF61DEF8FF5EDDF8FF61DEF8FF7DA4B9FF853B + 37FFAD8F94FFCBAAA9FF7F86B8FF96BAD8FFF6D798FFF7DCA5FFC6928BFFA85D + 5CFFA3514CFF9D7D89FF9DD3F9FF94CEF7FF94CEF7FF7C7C7DFFD1D1D1FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00A4D6F9FFA4D6 + F9FFABD9FAFFFFFFFFFFFDFEFFFFF8FCFFFFF4FAFEFFB67774FFA14D4AFFA557 + 55FFAA5F60FFD19335FFEEB804FFEEB804FFEEB804FFB3A14DFF316DEFFF316D + EFFF316DEFFF316DEFFF3772EDFF5AC5F6FF5EDDF8FF5EDDF8FF5EDDF8FF7F6B + 7BFF853B37FFB6817DFFE1CDCCFFAA7D6FFFEDCB8BFFF6D798FFC3856DFFA557 + 55FFA3514CFF8E91A7FF97D0F9FF94CEF7FF88C4EDFF89898BFFDCDCDCFFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B2D9F5FFABD9 + FAFFABD9FAFFF4FAFEFFFBFDFEFFF8FCFFFFF4FAFEFFB6817DFF9F4945FFA453 + 51FFA85D5CFFC4803EFFEEB804FFEEB804FFEEB804FFEEB804FF3772EDFF316D + EFFF316DEFFF316DEFFF316DEFFF3772EDFF4896F3FF4EACF4FF4896F3FF547D + E1FF935362FF853B37FF975756FFF3EAE7FFB6817DFFCDAD70FFAB6465FFA453 + 51FFA14D4AFF96BAD8FF97D0F9FF90CDF7FF82B0CFFF999A99FFE8E6E6FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00BFDEF4FFABD9 + FAFFABD9FAFFE8F5FDFFF8FCFFFFF4FAFEFFF4FAFEFFCBAAA9FF9F4945FFA351 + 4CFFA55755FFB26A5AFFEEB804FFEEB804FFEEB804FFEEB804FF989774FF316D + EFFF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF3772EDFF3C77F0FF447D + F1FF547DE1FF994E53FF7F3936FF884E49FFE8DBD6FFAD8F94FF7473B8FF6F72 + C6FF6F72C6FF7A95F1FF88B1F6FF90CDF7FF6C86A9FF999A99FFD7D6D7FFF8F8 + F8FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D3EBFCFFB2DC + FAFFB2DCFAFFD3EBFCFFF8FCFFFFF4FAFEFFEEF8FEFFD7D6D7FF9C4541FFA14D + 4AFFA45351FFA85D5CFFDEA41DFFEEB804FFEEB804FFEEB804FFEEB804FF6080 + B4FF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF3772 + EDFF3C77F0FF7C7C7DFF9F4945FF7F3936FF6B4972FF546DEBFF5E77EBFF6780 + ECFF708AEEFF708AEEFF7990F1FF89A2F3FF6E7B88FF5E6162FFA8A9A9FFE8E6 + E6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4FAFEFFB2DC + FAFFB2DCFAFFC8E7FBFFF4FAFEFFF4FAFEFFEEF8FEFFE8F5FDFFA55755FF9C45 + 41FFA3514CFFA55755FFC4803EFFEEB804FFEEB804FFEEB804FFEEB804FFE4B1 + 15FF6080B4FF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF316DEFFF316D + EFFF8E91A7FFF2C652FFC27F42FF94484DFF4455CCFF3F4CBCFF6780ECFF708A + EEFF7990F1FF7A95F1FF89A2F3FF89A2F3FF95ADF5FF7F86B8FF89898BFFDCDC + DCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B8DF + FAFFB2DCFAFFB8DFFAFFF4FAFEFFEEF8FEFFEEF8FEFFE8F5FDFFCBAAA9FF9B42 + 3DFF9F4945FFA45351FFA55755FFDEA41DFFEEB804FFEEB804FFEEB804FFEEB8 + 04FFEEB804FFA79C5CFF6080B4FF316DEFFF316DEFFF316DEFFF6C86A9FFC0AA + 53FFF0BF26FFF0C138FFF0C138FF936C6CFF4E66EBFF4455CCFF3F4CBCFF708A + EEFF849FF2FF89A2F3FF95ADF5FF95ADF5FFA6B8F6FF6F72C6FF89898BFFDCDC + DCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D8EE + FCFFB8DFFAFFB8DFFAFFDDF0FDFFEEF8FEFFE8F5FDFFE8F5FDFFDEE8F1FF9F49 + 45FF9C4541FFA14D4AFFA3514CFFB56C4AFFEAB209FFEEB804FFEEB804FFEEB8 + 04FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEFBD + 19FFEFBD19FFEFBD19FFF0BF26FF978285FF546DEBFF546DEBFF546DEBFF3F4C + BCFF7B92E9FF95ADF5FFA6B8F6FFA9C3F9FFB7C6F8FF556DCAFF7C7C7DFFD1D1 + D1FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFD + FEFFB8DFFAFFBDE2FBFFCEE9FCFFEEF8FEFFE8F5FDFFE3F4FEFFE3F4FEFFAD8F + 94FF9B423DFF9C4541FF9F4945FFA45351FFC07A37FFEEB804FFEEB804FFEEB8 + 04FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB8 + 04FFEEB804FFEEBA0CFFC4803EFF935362FF5E77EBFF5E77EBFF5E77EBFF5E77 + EBFF4455CCFF7E8CD7FFB7C6F8FFC0D4FBFFC9D8FBFF3F4CBCFF656869FFA8A9 + A9FFE2E2E2FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00D3EBFCFFBDE2FBFFC3E4FBFFE3F4FEFFE8F5FDFFE3F4FEFFDDF0FDFFDDF0 + FDFFA85D5CFF983D36FF9C4541FF9F4945FF9E4E4CFFB86D37FFEAB209FFEEB8 + 04FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB8 + 04FFEAB209FFC07A37FFA3514CFF9F4945FF6C77E7FF6780ECFF6780ECFF6780 + ECFF6780ECFF556DCAFF7087CDFFD1E1FDFFE4E8F7FF3D44D0FF5A627EFF7070 + 70FFA8A9A9FFE2E2E2FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F4FAFEFFC3E4FBFFC3E4FBFFD3EBFCFFE3F4FEFFE3F4FEFFDDF0FDFFD8EE + FCFFC4CAD8FF9F4945FF983D36FF9B423DFF9F4945FF9F4945FFA3514CFFD291 + 20FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFEEB804FFD291 + 20FFA3514CFFA14D4AFF9F4945FF9B423DFF7473B8FF708AEEFF708AEEFF708A + EEFF708AEEFF708AEEFF6780ECFF7E8CD7FFD3D6F6FF4550E6FF89A2F3FF5A62 + 7EFF707070FFA8A9A9FFE2E2E2FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00DDF0FDFFC8E7FBFFC8E7FBFFDDF0FDFFDDF0FDFFDDF0FDFFD8EE + FCFFD8EEFCFFC4CAD8FF9C4541FF983D36FF9B423DFF9B423DFF9F4945FF9F49 + 45FFA3514CFFB86D37FFC78327FFC78327FFC78327FFB86D37FFA3514CFF9F49 + 45FF9C4541FF9C4541FF9B423DFF9C4541FF8EA1D1FF7A95F1FF7A95F1FF7A95 + F1FF7A95F1FF7A95F1FF7A95F1FF7A95F1FF4455CCFF4550E6FF95ADF5FFA6B8 + F6FF748593FF7C7C7DFFA8A9A9FFE2E2E2FFFBFBFBFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00CEE9FCFFCEE9FCFFCEE9FCFFDDF0FDFFD8EEFCFFD8EE + FCFFD3EBFCFFCEE9FCFFC4CAD8FF9C4541FF983D36FF983D36FF983D36FF9B42 + 3DFF9B423DFF9C4541FF9C4541FF9C4541FF9C4541FF9C4541FF9C4541FF9B42 + 3DFF983D36FF983D36FF975756FF99B2D4FF97D0F9FF88B1F6FF849FF2FF89A2 + F3FF849FF2FF89A2F3FF89A2F3FF89A2F3FF4550E6FF3D44D0FF353DE3FF6780 + ECFFB7C6F8FFA3ACBEFF999A99FFCACACAFFF1F1F1FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00F8FCFFFFCEE9FCFFCEE9FCFFD8EEFCFFD8EEFCFFD8EE + FCFFD3EBFCFFCEE9FCFFC8E7FBFFC0D3E3FFAB6465FF983D36FF983D36FF983D + 36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D + 36FF983D36FF9D7D89FF9BC6E8FF97D0F9FF94CEF7FF90CDF7FF95ADF5FF95AD + F5FF95ADF5FF95ADF5FF95ADF5FF7990F1FF3D44D0FFB7B7B8FFE4E8F7FFA9AB + E2FF546DEBFF6C77E7FFC4CAD8FFDCDCDCFFF4F4F4FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00F4FAFEFFD3EBFCFFD3EBFCFFD8EEFCFFD3EB + FCFFCEE9FCFFCEE9FCFFC8E7FBFFC8E7FBFFC3E4FBFFBCBCCAFFA06C71FF983D + 36FF983D36FF983D36FF983D36FF983D36FF983D36FF983D36FF9C4541FF9D7D + 89FF9BC6E8FF9DD3F9FF97D0F9FF97D0F9FF94CEF7FF90CDF7FF96BAD8FFA6B8 + F6FFA6B8F6FFA6B8F6FFA6B8F6FF4550E6FF8E91A7FFE2E2E2FFFBFDFEFFFFFF + FF00FFFFFF00FFFFFF00B7C6F8FFF4F4F4FFFBFBFBFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4FAFEFFD8EEFCFFD8EEFCFFD3EB + FCFFCEE9FCFFC8E7FBFFC8E7FBFFC3E4FBFFC3E4FBFFBDE2FBFFB8DFFAFFB7D6 + ECFFA9B9CDFFAA99A6FFAD8F94FFAD8F94FF91A1ACFFA9B9CDFFA4D6F9FF9DD3 + F9FF9DD3F9FF9DD3F9FF97D0F9FF97D0F9FF94CEF7FF96BAD8FFDCDCDCFFDAE2 + F5FFB7C6F8FFB7C6F8FFA6B8F6FF565AB1FFCACACAFFF8F8F8FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00F4FAFEFFDDF0FDFFDDF0 + FDFFD3EBFCFFC8E7FBFFC8E7FBFFC3E4FBFFBDE2FBFFBDE2FBFFB8DFFAFFB8DF + FAFFB2DCFAFFB2DCFAFFABD9FAFFABD9FAFFA4D6F9FFA4D6F9FFA4D6F9FF9DD3 + F9FF9DD3F9FF97D0F9FF97D0F9FF94CEF7FFA1C1CFFFE8E6E6FFFBFBFBFFFFFF + FF00DAE2F5FFC9D8FBFF6C77E7FFB7B7B8FFECECECFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FBFDFEFFE8F5 + FDFFE3F4FEFFD8EEFCFFC8E7FBFFC3E4FBFFBDE2FBFFBDE2FBFFB8DFFAFFB2DC + FAFFB2DCFAFFB2DCFAFFABD9FAFFABD9FAFFA4D6F9FFA4D6F9FF9DD3F9FF9DD3 + F9FF9DD3F9FF97D0F9FF9BC6E8FFC9D4DBFFF1F1F1FFFBFDFEFFFFFFFF00FFFF + FF00FBFBFBFFC0D4FBFFA9ABE2FFECECECFFFBFBFBFFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00F4FAFEFFE8F5FDFFE3F4FEFFD3EBFCFFBDE2FBFFB8DFFAFFB8DFFAFFB2DC + FAFFB2DCFAFFABD9FAFFABD9FAFFA4D6F9FFA4D6F9FF9DD3F9FF9DD3F9FF9DD3 + F9FF9BCDF0FFC0D3E3FFECECECFFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00F1F3FBFFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FBFDFEFFF1F3FBFFE8F5FDFFD8EEFCFFC3E4FBFFB2DC + FAFFB2DCFAFFABD9FAFFABD9FAFFA4D6F9FFA4D6F9FFA9D4F1FFB7D6ECFFCFDE + E9FFF1F1F1FFFBFBFBFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00} + end + object JvTransparentButton2: TJvTransparentButton + Left = 32 + Top = 344 + Width = 73 + Height = 57 + AutoGray = False + GroupIndex = 1 + HotTrack = True + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'MS Sans Serif' + HotTrackFont.Style = [] + ShowPressed = False + Transparent = False + Visible = False + Glyph.Data = { + 36240000424D3624000000000000360000002800000030000000300000000100 + 20000000000000240000232E0000232E00000000000001000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FF000000FF0000 + 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000FF000000FF000000FF000000FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FF808080FF808080FF808080FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 00FF000080FF000080FF000080FF000080FF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFF808080FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FF0000FFFF00FFFFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFFC0C0C0FF808080FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFF808080FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFFC0C0C0FF808080FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF000000FF0000 + 00FF000000FF000000FF000000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00000000FF000000FF000000FF800000FF800000FF8000 + 00FF800000FF800000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00000000FF000000FF800000FF800000FF800000FF800000FF800000FF8000 + 00FF800000FF800000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF000000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF0000 + 00FF000000FF800000FF800000FF800000FF800000FF800000FF800000FF8000 + 00FF800000FF800000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF800000FF800000FF000000FF000000FFFFFFFF00FFFFFF000000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF008000FF0080 + 00FF008000FF000000FF000000FF800000FF800000FFFF0000FF800000FFFF00 + 00FF800000FFFF0000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF000000FF800000FF800000FF800000FF000000FFFFFFFF000000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF008000FF008000FF0080 + 00FF008000FF008000FF008000FF000000FF800000FF000000FFFF0000FF8000 + 00FFFF0000FF800000FFFF0000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF008000FF000000FF800000FF800000FF800000FF000000FF0000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000FF008000FF008000FF00FF00FF0080 + 00FF008000FF008000FF008000FF008000FF000000FF008000FF000000FFFF00 + 00FF800000FFFF0000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF008000FF000000FF800000FF800000FF800000FF800000FF0000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00008000FF00FF00FF008000FF00FF00FF008000FF00FF + 00FF008000FF00FF00FF008000FF008000FF008000FF008000FF000000FF8000 + 00FFFF0000FF800000FFFF0000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF00FF00FF000000FF800000FF800000FF800000FF000000FF0000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00008000FF00FF00FF008000FF00FF00FF008000FF00FF00FF0080 + 00FF00FF00FF008000FF00FF00FF008000FF008000FF008000FF000000FFFF00 + 00FF800000FFFF0000FF800000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF8080 + 80FF000000FF008000FF800000FF800000FF800000FF000000FF008000FF0000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00008000FF008000FF00FF00FF008000FF00FF00FF008000FF00FF + 00FF008000FF00FF00FF008000FF00FF00FF008000FF008000FF000000FF8000 + 00FFFF0000FF800000FF000000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FFC0C0 + C0FF808080FF000000FF800000FF000000FF000000FF008000FF000000FF0000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00008000FF008000FF00FF00FF008000FF00FF00FF008000FF00FF00FF0080 + 00FF00FF00FF008000FF00FF00FF008000FF00FF00FF008000FF008000FF0000 + 00FF000000FF000000FF808080FFC0C0C0FFFFFFFFFFC0C0C0FFC0C0C0FFC0C0 + C0FFC0C0C0FF808080FF000000FF008000FF008000FF008000FF008000FF0000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00008000FF00FF00FF00FF00FF00FF00FF008000FF00FF00FF008000FF00FF + 00FF008000FF00FF00FF008000FF00FF00FF008000FF008000FF008000FF0080 + 00FF808080FF808080FFC0C0C0FFFFFFFFFFC0C0C0FFC0C0C0FFC0C0C0FFC0C0 + C0FFFFFFFFFFC0C0C0FF808080FF000000FF008000FF008000FF008000FF0000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000080 + 00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080 + 00FF00FF00FF008000FF00FF00FF008000FF00FF00FF008000FF008000FF0080 + 00FF808080FFC0C0C0FFFFFFFFFFC0C0C0FF808080FF000000FF000000FF8080 + 80FFC0C0C0FFFFFFFFFFC0C0C0FF000000FF008000FF008000FF008000FF0000 + 80FF00FFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000080 + 00FF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF008000FF00FF + 00FF008000FF00FF00FF008000FF00FF00FF008000FF008000FF008000FF8080 + 80FFC0C0C0FFFFFFFFFFC0C0C0FF808080FF000000FF008000FF008000FF0000 + 00FF808080FFC0C0C0FFFFFFFFFFC0C0C0FF000000FF008000FF008000FF0000 + 80FFFFFFFFFF0000FFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000080 + 00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0080 + 00FF00FF00FF008000FF00FF00FF008000FF008000FF008000FF008000FF8080 + 80FFFFFFFFFFC0C0C0FF808080FF000000FF800000FF008000FF00FF00FF0080 + 00FF000000FF808080FFFFFFFFFFC0C0C0FF000000FF008000FF008000FF0000 + 80FF00FFFFFF00FFFFFF0000FFFF0000FFFF000080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00008000FFFFFF + FFFF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF + 00FF00FF00FF00FF00FF008000FFFF0000FF008000FFFF0000FF008000FF8080 + 80FFFFFFFFFFC0C0C0FF808080FF000000FFFF0000FF008000FFC0C0C0FF00FF + 00FF000000FF808080FFFFFFFFFFC0C0C0FF000000FF00FF00FF008000FF0080 + 00FF000080FFFFFFFFFF00FFFFFF00FFFFFF000080FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00008000FFFFFF + FFFFFFFFFFFF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF + 00FF00FF00FF008000FFFF0000FF808000FFFF0000FF808000FFFF0000FF8080 + 80FFFFFFFFFFC0C0C0FF808080FF000000FFFF0000FF008000FF00FF00FFC0C0 + C0FF000000FF808080FFFFFFFFFFC0C0C0FF000000FF008000FF00FF00FF0080 + 00FF000080FF000080FF000080FF000080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00008000FFFFFF + FFFF00FF00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FFFFFF + FFFF008000FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FF8080 + 80FFFFFFFFFFC0C0C0FFC0C0C0FF808080FF000000FF008000FFC0C0C0FF0000 + 00FF808080FFC0C0C0FFFFFFFFFFC0C0C0FF000000FF00FF00FF008000FF0080 + 00FF000000FFFFFFFFFFC0C0C0FF808080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FF0080 + 00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FFFFFFFFFF00FF + 00FFFFFFFFFF008000FFFF0000FF808000FFFF0000FF808000FFFF0000FF8080 + 00FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF808080FF000000FF000000FF8080 + 80FFC0C0C0FFFFFFFFFFC0C0C0FF000000FF00FF00FF008000FF00FF00FF0080 + 00FF000000FFFFFFFFFFC0C0C0FF808080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FFC0C0 + C0FF008000FFFFFFFFFF00FF00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FF0080 + 00FF008000FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FFFF00 + 00FFFF0000FF808080FFFFFFFFFFC0C0C0FFC0C0C0FF000000FF808080FFC0C0 + C0FFFFFFFFFFC0C0C0FF000000FF00FF00FF008000FF00FF00FF008000FF00FF + 00FF000000FFFFFFFFFFC0C0C0FF808080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FFFFFF + 00FFC0C0C0FF008000FFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF008000FFFFFF + 00FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FFFF0000FFFF00 + 00FFFF0000FFFF0000FF808080FFFFFFFFFFC0C0C0FF000000FF808080FFFFFF + FFFFC0C0C0FF000000FF00FF00FFC0C0C0FF00FF00FF008000FF00FF00FF0080 + 00FF000000FFFFFFFFFFC0C0C0FF808080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FFC0C0 + C0FFFFFFFFFFC0C0C0FF008000FFC0C0C0FFFFFFFFFF008000FFFFFF00FFFF00 + 00FF808000FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FFFF00 + 00FFFF0000FFFF0000FFFF0000FF808080FF808080FF000000FF808080FF8080 + 80FF808080FF000000FFC0C0C0FF00FF00FFC0C0C0FF00FF00FF008000FF00FF + 00FF000000FFFFFFFFFFC0C0C0FF808080FF000000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000FF808080FFFFFF + FFFFC0C0C0FFFFFF00FFC0C0C0FF008000FF008000FFFFFF00FFFF0000FFFFFF + 00FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FFFF0000FF8080 + 00FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF008000FFFF0000FF8080 + 80FF808080FF808080FF000000FFC0C0C0FF00FF00FF008000FF00FF00FF0000 + 00FF808080FFFFFFFFFFC0C0C0FF808080FF808080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FF000000FF808080FFC0C0 + C0FFFFFFFFFFC0C0C0FFFFFF00FFFFFF00FFFFFF00FF808000FFFFFF00FFFF00 + 00FF808000FFFF0000FF808000FFFF0000FF808000FFFF0000FF808000FFFF00 + 00FFFF0000FFFF0000FF008000FF000000FFFF0000FFFF0000FFFF0000FF8080 + 80FFFFFFFFFF808080FF000000FF008000FFC0C0C0FF00FF00FF000000FF8080 + 80FFFFFFFFFFC0C0C0FFC0C0C0FFC0C0C0FF808080FF000000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00000000FFC0C0C0FF000000FFFFFFFF008080 + 80FFC0C0C0FFFFFFFFFFC0C0C0FFFFFF00FF808000FFFFFF00FF808000FFFFFF + 00FFFF0000FF008000FFFF0000FF808000FFFF0000FF808000FFFF0000FF8080 + 00FFFF0000FF008000FF00FF00FF008000FF000000FFFF0000FF008000FF8080 + 80FFFFFFFFFFC0C0C0FF808080FF000000FF000000FF000000FF808080FFFFFF + FFFFC0C0C0FFC0C0C0FFC0C0C0FF808080FFC0C0C0FF808080FF000000FF0000 + 00FF000000FF000000FF000000FF808080FFC0C0C0FF000000FFFFFFFF008080 + 80FFFFFFFFFFC0C0C0FFFFFF00FFC0C0C0FFFFFF00FF808000FFFFFF00FF8080 + 00FF008000FF008000FF008000FFFF0000FF808000FFFF0000FF808000FFFF00 + 00FF808000FF008000FF00FF00FF00FF00FFFF0000FF008000FF00FF00FF8080 + 80FFFFFFFFFFC0C0C0FFC0C0C0FF808080FF808080FF808080FFC0C0C0FFC0C0 + C0FFC0C0C0FFC0C0C0FF808080FFC0C0C0FF808080FFC0C0C0FF808080FF8080 + 80FF808080FF808080FF808080FFC0C0C0FFC0C0C0FF000000FFFFFFFF008080 + 80FFC0C0C0FFFFFFFFFFC0C0C0FFFFFF00FFC0C0C0FFFFFF00FF808000FF0080 + 00FF00FF00FF008000FF008000FF008000FFFF0000FF808000FFFF0000FF8080 + 00FFFF0000FF808000FF008000FF008000FFFF0000FF008000FF00FF00FF8080 + 80FFFFFFFFFFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0 + C0FFC0C0C0FFC0C0C0FFC0C0C0FF808080FFC0C0C0FF808080FFC0C0C0FF8080 + 80FFC0C0C0FF808080FFC0C0C0FFFFFFFFFF000000FFFFFFFF00FFFFFF00FFFF + FF00808080FFC0C0C0FFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FF008000FF00FF + 00FF008000FF00FF00FF008000FF008000FF808000FFFF0000FF808000FFFF00 + 00FF808000FFFF0000FF808000FFFF0000FFFF0000FFFF0000FF008000FF8080 + 80FFFFFFFFFFC0C0C0FFC0C0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0C0 + C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FF808080FFC0C0C0FF808080FFC0C0 + C0FF808080FFC0C0C0FFC0C0C0FFFFFFFFFF000000FFFFFFFF00FFFFFF00FFFF + FF00808080FFFFFFFFFFC0C0C0FFFFFF00FF008000FF008000FF00FF00FFFFFF + FFFF00FF00FF00FF00FF00FF00FF008000FFFF0000FF808000FFFF0000FF8080 + 00FFFF0000FF808000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF8080 + 80FFFFFFFFFFC0C0C0FFFFFFFFFF808080FF808080FF808080FFFFFFFFFFFFFF + FFFFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0C0FFC0C0 + C0FFC0C0C0FFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00808080FFFFFFFFFF008000FFFFFFFFFF00FF00FFFFFFFFFF00FF + 00FFFFFFFFFF00FF00FF008000FF008000FF008000FFFF0000FF808000FFFF00 + 00FF808000FFFF0000FF808000FFFF0000FFFF0000FFFF0000FFFF0000FF8080 + 80FFFFFFFFFFFFFFFFFF808080FFFF0000FF800000FFFF0000FF808080FFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF000000FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00808080FF008000FF808080FF00FF00FFFFFFFFFF00FF00FFFFFF + FFFF00FF00FF00FF00FF00FF00FF008000FF008000FF008000FFFF0000FF8080 + 00FFFF0000FF808000FFFF0000FF008000FFFF0000FF808000FFFF0000FFFF00 + 00FF808080FF808080FFFF0000FF800000FFFF0000FF800000FF800000FF8080 + 80FF808080FF808080FF808080FF808080FF808080FF808080FF808080FF8080 + 80FF808080FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00008000FFC0C0C0FFFFFFFFFF00FF00FFFFFFFFFF00FF + 00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF008000FF008000FFFF00 + 00FF808000FFFF0000FF008000FF008000FF008000FFFF0000FF808000FFFF00 + 00FFFF0000FFFF0000FF800000FFFF0000FF800000FFFF0000FF800000FF8000 + 00FF000000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00808080FFC0C0C0FFFFFFFFFF00FF00FFFFFF + FFFF00FF00FF00FF00FF00FF00FF00FF00FF008000FF00FF00FF008000FF0080 + 00FF008000FF008000FF008000FF008000FF008000FF008000FFFF0000FF8080 + 00FFFF0000FF800000FFFF0000FF800000FFFF0000FF800000FF800000FF0000 + 00FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FFC0C0C0FFFFFFFFFF00FF + 00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FF00FF00FF008000FF00FF00FF0080 + 00FF008000FF008000FF008000FF008000FF008000FF008000FF008000FFFF00 + 00FF808000FFFF0000FF800000FFFF0000FF800000FFFF0000FF000000FFFFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FFC0C0C0FFFFFF + FFFF00FF00FFFFFFFFFF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FF0080 + 00FF00FF00FF008000FF008000FF008000FF00FF00FF008000FF008000FF0080 + 00FFFF0000FF808000FFFF0000FF800000FFFF0000FF800000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00808080FF8080 + 80FFC0C0C0FF00FF00FFFFFFFFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF + 00FF00FF00FF00FF00FF008000FF00FF00FF008000FF00FF00FF008000FF0080 + 00FF008000FFFF0000FF800000FF800000FF800000FFFFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00808080FF808080FFC0C0C0FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFF00FF + 00FF00FF00FF00FF00FF00FF00FF008000FF00FF00FF008000FF00FF00FF00FF + 00FF008000FF800000FF800000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00808080FF808080FF808080FFFFFFFFFF00FF00FFFFFF + FFFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF008000FF0080 + 00FF008000FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00008000FF008000FF0080 + 00FF008000FF008000FF008000FF008000FF008000FF008000FFFFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00} + end + object PopupMenuMain: TPopupMenu + Left = 128 + Top = 336 + object Center1: TMenuItem + Caption = 'Center' + OnClick = Center1Click + end + object N1: TMenuItem + Caption = '-' + end + object Screenzoom1: TMenuItem + Caption = 'Screen zoom' + OnClick = Screenzoom1Click + end + object Screenkeyboard1: TMenuItem + Caption = 'Screen keyboard' + OnClick = Screenkeyboard1Click + end + end +end Added: jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.pas =================================================================== --- jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.pas (rev 0) +++ jwscl/branches/XPElevation_2/Ask Credentials Code/MainForm.pas 2007-12-18 19:33:55 UTC (rev 95) @@ -0,0 +1,141 @@ +unit MainForm; + +interface + +uses + jwaWindows, ShellApi, + Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ExtCtrls, JvExControls, JvButton, JvTransparentButton, StdCtrls, + Menus; + +type + TFormMain = class(TForm) + Image1: TImage; + JvTransparentButton1: TJvTransparentButton; + JvTransparentButton2: TJvTransparentButton; + PopupMenuMain: TPopupMenu; + Screenzoom1: TMenuItem; + Screenkeyboard1: TMenuItem; + N1: TMenuItem; + Center1: TMenuItem; + procedure FormCreate(Sender: TObject); + procedure JvTransparentButton1Click(Sender: TObject); + procedure Center1Click(Sender: TObject); + procedure Screenzoom1Click(Sender: TObject); + procedure Screenkeyboard1Click(Sender: TObject); + private + { Private-Deklarationen } + fButtons : array of TJvTransparentButton; + fJobs : array of TProcessInformation; + public + { Public-Deklarationen } + end; + +var + FormMain: TFormMain; + + +implementation + +uses Types, CredentialsForm; + +{$R *.dfm} + + +procedure TFormMain.FormCreate(Sender: TObject); + procedure Center(F : TControl; I : Integer); + var SX, SY : Integer; + begin + SX := abs(abs(Screen.Monitors[I].BoundsRect.Right) - abs(Screen.Monitors[I].BoundsRect.Left)); + F.Left := Screen.Monitors[I].Left + ((SX div 2) - (F.Width div 2)); + + SY := abs(abs(Screen.Monitors[I].BoundsRect.Bottom) - abs(Screen.Monitors[I].BoundsRect.Top)); + F.Top := Screen.Monitors[I].Top + ((SY div 2) - (F.Height div 2)); + end; + + procedure LeftBottom(F : TControl; I : Integer); + var SX, SY : Integer; + begin + SX := abs(abs(Screen.Monitors[I].BoundsRect.Right) - abs(Screen.Monitors[I].BoundsRect.Left)); + F.Left := Screen.Monitors[I].Left;// + (F.Width); + + SY := abs(abs(Screen.Monitors[I].BoundsRect.Bottom) - abs(Screen.Monitors[I].BoundsRect.Top)); + F.Top := Screen.Monitors[I].Top + SY - (F.Height); + end; + +var i : Integer; +begin + // + + SetLength(fButtons, Screen.MonitorCount); + for i := low(fButtons) to high(fButtons) do + begin + fButtons[i] := TJvTransparentButton.Create(Self); + fButtons[i].Width := 128; + fButtons[i].Height := 128; + Center(fButtons[i], i); + fButtons[i].Glyph.Assign(JvTransparentButton1.Glyph); + fButtons[i].Parent := self; + fButtons[i].HotTrack := true; + fButtons[i].AutoGray := false; + fButtons[i].FrameStyle := fsNone;; + + fButtons[i].Tag := i; + fButtons[i].OnClick := JvTransparentButton1Click; + fButtons[i].Visible := true; + + + fButtons[i] := TJvTransparentButton.Create(Self); + fButtons[i].Width := 128; + fButtons[i].Height := 128; + LeftBottom(fButtons[i], i); + fButtons[i].Glyph.Assign(JvTransparentButton2.Glyph); + fButtons[i].Parent := self; + fButtons[i].HotTrack := true; + fButtons[i].AutoGray := false; + fButtons[i].FrameStyle := fsNone;; + + fButtons[i].PopupMenu := PopupMenuMain; + fButtons[i].DropDownMenu := PopupMenuMain; + fButtons[i].Tag := i; + + fButtons[i].Visible := true; + end; + + PopupMenu := PopupMenuMain; +end; + + + +procedure TFormMain.JvTransparentButton1Click(Sender: TObject); +begin + try + FormCredentials.CenterInMonitor((Sender as TControl).Tag); + except + end; +end; + +procedure TFormMain.Center1Click(Sender: TObject); +var ProcInfo: PROCESS_INFORMATION; + StartInfo : TStartupInfo; +begin +//StartInfo.cb := sizeof(StartInfo); + +// if not CreateProcess(nil,'control /name Microsoft.EaseOfAccessCenter',nil,nil,true,True, CREATE_NEW_CONSOLE, nil, nil, StartInfo, ProcInfo) then + + ShellExecute(0,'open','control.exe','/name Microsoft.EaseOfAccessCenter',nil,SW_SHOWNORMAL); +end; + +procedure TFormMain.Screenzoom1Click(Sender: TObject); +begin + // + ShellExecute(0,'open','magnify.exe','',nil,SW_SHOWNORMAL); +end; + +procedure TFormMain.Screenkeyboard1Click(Sender: TObject); +begin + // + ShellExecute(0,'open','osk.exe','',nil,SW_SHOWNORMAL); +end; + +end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-18 19:28:31
|
Revision: 94 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=94&view=rev Author: dezipaitor Date: 2007-12-18 11:28:28 -0800 (Tue, 18 Dec 2007) Log Message: ----------- xp elevation with desktop Modified Paths: -------------- jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.cfg jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.dof jwscl/branches/XPElevation_2/Allowed Users Code/Unit1.dfm jwscl/branches/XPElevation_2/Ask Credentials Code/AskCredentials.dpr jwscl/branches/XPElevation_2/Service Code/HandleRequestThread.pas jwscl/branches/XPElevation_2/Service Code/MainUnit.dfm jwscl/branches/XPElevation_2/Service Code/MainUnit.pas jwscl/branches/XPElevation_2/Service Code/Service.cfg jwscl/branches/XPElevation_2/Service Code/Service.dof jwscl/branches/XPElevation_2/Service Code/Service.dpr jwscl/branches/XPElevation_2/Service Code/ThreadUnit.pas jwscl/branches/XPElevation_2/bin/installsv.bat jwscl/branches/XPElevation_2/bin/startsv.bat jwscl/branches/XPElevation_2/bin/stopsv.bat jwscl/branches/XPElevation_2/bin/uninstallsv.bat Modified: jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.cfg =================================================================== --- jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.cfg 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.cfg 2007-12-18 19:28:28 UTC (rev 94) @@ -32,3 +32,5 @@ -$M16384,1048576 -K$00400000 -E"..\bin" +-LE"e:\proggen\borland\delphi7\Projects\Bpl" +-LN"e:\proggen\borland\delphi7\Projects\Bpl" Modified: jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.dof =================================================================== --- jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.dof 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Allowed Users Code/AllowedUsers.dof 2007-12-18 19:28:28 UTC (rev 94) @@ -108,6 +108,7 @@ [Language] ActiveLang= ProjectLang= +RootDir= [Version Info] IncludeVerInfo=0 AutoIncBuild=0 Modified: jwscl/branches/XPElevation_2/Allowed Users Code/Unit1.dfm =================================================================== --- jwscl/branches/XPElevation_2/Allowed Users Code/Unit1.dfm 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Allowed Users Code/Unit1.dfm 2007-12-18 19:28:28 UTC (rev 94) @@ -1,9 +1,10 @@ object Form1: TForm1 - Left = 2330 - Top = 204 - Width = 434 - Height = 320 + Left = 853 + Top = 434 + BorderStyle = bsDialog Caption = 'Form1' + ClientHeight = 284 + ClientWidth = 418 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Modified: jwscl/branches/XPElevation_2/Ask Credentials Code/AskCredentials.dpr =================================================================== --- jwscl/branches/XPElevation_2/Ask Credentials Code/AskCredentials.dpr 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Ask Credentials Code/AskCredentials.dpr 2007-12-18 19:28:28 UTC (rev 94) @@ -2,6 +2,8 @@ //{$APPTYPE CONSOLE} +{$R *.res} + uses SysUtils, JwaWindows, @@ -10,8 +12,16 @@ JwsclCredentials, JwsclTypes, Graphics, - Registry; + Registry, + Controls, + Forms, + CredentialsForm, + MainForm in 'MainForm.pas' {FormMain}; + +var ScreenBitmap : TBitmap; + Resolution : TRect; + function BitBltBlack(DestDC: HDC; DestX, DestY: Integer; nWidth, nHeight: integer; SrcDC: HDC; SrcX, SrcY: integer; Black: byte): LongBool; var BlendStruct: BLENDFUNCTION; begin @@ -64,40 +74,45 @@ end; function AskPassword(AppToStart: String; UserAndDomain: string; out Password: string): boolean; + var Prompt: TJwCredentialsPrompt; OldDesk: HDESK; OldWallpaperPath: PChar; DesktopWallpaperPath: string; Bmp: Graphics.TBitmap; DeskDC: HDC; Desktop: TJwSecurityDesktop; Descr: TJwSecurityDescriptor; begin - DesktopWallPaperPath:=RegistryGetDeskBackgroundPath; - DeskDC:=GetDC(0); - try - Bmp:=Graphics.TBitmap.Create; - try - Bmp.Width :=GetDeviceCaps(DeskDC, HORZRES); - Bmp.Height:=GetDeviceCaps(DeskDC, VERTRES); - BitBltBlack(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, DeskDC, 0, 0, 50); - Bmp.SaveToFile(PChar(DesktopWallpaperPath)); - finally - Bmp.Free; - end; - finally - ReleaseDC(0, DeskDC); - end; - GetMem(OldWallpaperPath, MAX_PATH); - try - OldDesk:=GetThreadDesktop(GetCurrentThreadID); - SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, OldWallpaperPath, 0); - Descr:=TJwSecurityDescriptor.Create; - try - Desktop:=TJwSecurityDesktop.CreateDesktop(nil, true, 'UACinXPAskCredentialsDesk', [], false, GENERIC_ALL, Descr); - finally - Descr.Free; - end; - try + try //1. + Descr:=TJwSecurityDescriptor.CreateDefaultByToken; + + try //2. + OldDesk:=GetThreadDesktop(GetCurrentThreadID); + Desktop:=TJwSecurityDesktop.CreateDesktop(nil, true, 'UACinXPAskCredentialsDesk', [], false, GENERIC_ALL, Descr); Desktop.SetThreadDesktop; try Desktop.SwitchDesktop; try - SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(DesktopWallpaperPath), 0); + { Application.Initialize; + Application.CreateForm(TFormMain, FormMain); + Application.CreateForm(TFormCredentials, FormCredentials); + FormCredentials.ShowModal; } + + + Application := TApplication.Create(nil); + Application.Initialize; + Application.CreateForm(TFormMain, FormMain); + FormMain.Image1.Picture.Bitmap.Assign(ScreenBitmap); + FormMain.Image1.Align := alClient; + + FormMain.BoundsRect := Resolution; + FormMain.Show; + + + Application.CreateForm(TFormCredentials, FormCredentials); + //FormCredentials.CenterInMonitor(1); + FormCredentials.Show; + Application.Run; + Application.Free; + {Application.Run; } + + + (* SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(DesktopWallpaperPath), 0); Prompt:=TJwCredentialsPrompt.Create; try Prompt.Caption:='UAC in XP'; @@ -111,21 +126,28 @@ Password:=Prompt.Password; finally Prompt.Free; - end; + end; *) finally Desktop.SwitchDesktopBack; end; finally SetThreadDesktop(OldDesk); - SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, OldWallpaperPath, 0); + + // SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, OldWallpaperPath, 0); end; - finally - Desktop.Free; + finally //2. + Descr.Free; + try + Desktop.Free; + except + end; + Application := TApplication.Create(nil); end; - finally - FreeMem(OldWallpaperPath); + finally //1 + //FreeMem(OldWallpaperPath); + end; - DeleteFile(PChar(DesktopWallpaperPath)); + //DeleteFile(PChar(DesktopWallpaperPath)); end; function IfThen(Cond: Boolean; TrueVal, FalseVal: String): String; @@ -146,33 +168,104 @@ MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Ask Credentials', MB_OK); end; +function GetScreenBitmap(out Resolution : TRect) : TBitmap; + + function BitBltBlack(DestDC: HDC; DestX, DestY : Integer; nWidth, nHeight: integer; SrcDC: HDC; SrcX, SrcY: integer; Black: byte): LongBool; + var BlendStruct: BLENDFUNCTION; + begin + BitBlt(DestDC, DestX, DestY, nWidth, nHeight, 0, SrcX, SrcY, BLACKNESS); + BlendStruct.BlendFlags:=0; + BlendStruct.BlendOp:=AC_SRC_OVER; + BlendStruct.SourceConstantAlpha:=255-Black; + BlendStruct.AlphaFormat:=0; + Result:= jwaWindows.AlphaBlend(DestDC, DestX, DestY, nWidth, nHeight, SrcDC, SrcX, SrcY, NWidth, nHeight, BlendStruct); + end; + + function GetMaxResolution : TRect; + var i : Integer; + begin + ZeroMemory(@result, sizeof(result)); + for i := 0 to Screen.MonitorCount -1 do + begin + if Screen.Monitors[i].BoundsRect.Left < result.Left then + result.Left := Screen.Monitors[i].BoundsRect.Left; + if Screen.Monitors[i].BoundsRect.Top < result.Top then + result.Top := Screen.Monitors[i].BoundsRect.Top; + + if Screen.Monitors[i].BoundsRect.Right > result.Right then + result.Right := Screen.Monitors[i].BoundsRect.Right; + if Screen.Monitors[i].BoundsRect.Bottom > result.Bottom then + result.Bottom := Screen.Monitors[i].BoundsRect.Bottom; + end; + end; + +var i : Integer; + R,R2 : TRect; + DeskDC : HDC; +begin + Resolution := GetMaxResolution; + + DeskDC := GetDC(0); + try + result := Graphics.TBitmap.Create; + result.Width := abs(Resolution.Left) + abs(Resolution.Right); + result.Height:= abs(Resolution.Top) + abs(Resolution.Bottom); + BitBltBlack(result.Canvas.Handle, 0, 0, result.Width, result.Height, DeskDC, Resolution.Left, Resolution.Top, 200); + //Bmp.SaveToFile(PChar(DesktopWallpaperPath)); + // result.SaveToFile('E:\Temp\_Bmp.bmp'); + finally + ReleaseDC(0, DeskDC); + end; + + Resolution.Right := abs(Resolution.Left) + abs(Resolution.Right); + Resolution.Bottom := abs(Resolution.Top) + abs(Resolution.Bottom); +end; + var Password: String; Pipe: THandle; + function func(p: pointer): LRESULT; stdcall; const StrLenCancelled: Cardinal=Cardinal(-1); Null: Cardinal=0; var Dummy: Cardinal; begin + ScreenBitmap := GetScreenBitmap(Resolution); try - if Pipe=0 then - exit; + { if Pipe=0 then + exit;} + Password := ''; if not AskPassword(Paramstr(1), Paramstr(2), Password) then - WriteFile(Pipe, @StrLenCancelled, SizeOf(StrLenCancelled), @Dummy, nil) + ; + { WriteFile(Pipe, @StrLenCancelled, SizeOf(StrLenCancelled), @Dummy, nil) else begin if Length(Password)>0 then WriteFile(Pipe, Pointer(integer(Password)-4), SizeOf(Cardinal)+Length(Password), @Dummy, nil) else WriteFile(Pipe, @Null, SizeOf(Null), @Dummy, nil); - end; + end; } except on E: Exception do MessageBox(0, PChar(E.ClassType.ClassName+#13#10+E.Message), '', MB_OK); end; + ScreenBitmap.Free; end; + + + begin - if (Paramstr(2)='') then - Halt(Integer(@Pipe)); - WaitForSingleObject(CreateThread(nil, 0, @func, nil, 0, nil), Infinite); + Application.Free; + //FreeAndNil(Application); + {if (Paramstr(2)='') then + Halt(Integer(@Pipe)); } + + + + //WaitForSingleObject(CreateThread(nil, 0, @func, nil, 0, nil), Infinite); + try + Func(0); + finally + halt(0); + end; end. Modified: jwscl/branches/XPElevation_2/Service Code/HandleRequestThread.pas =================================================================== --- jwscl/branches/XPElevation_2/Service Code/HandleRequestThread.pas 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/HandleRequestThread.pas 2007-12-18 19:28:28 UTC (rev 94) @@ -35,20 +35,20 @@ procedure THandleRequestThread.Execute; var AppName: string; PipeSize: Cardinal; OvLapped: OVERLAPPED; ar: array[0..1] of THandle; begin - if InterlockedExchangeAdd(Service1.fHReqThreadCount, 1)=0 then - ResetEvent(Service1.ThreadsStopped); + if InterlockedExchangeAdd(XPService.fHReqThreadCount, 1)=0 then + ResetEvent(XPService.ThreadsStopped); try - if Service1.Stopped then + if XPService.Stopped then exit; OvLapped.hEvent:=CreateEvent(nil, false, false, nil); try ar[0]:=OvLapped.hEvent; - ar[1]:=Service1.StopEvent; + ar[1]:=XPService.StopEvent; ReadFile(fPipeHandle, nil, 0, nil, @OvLapped); case WaitForMultipleObjects(2, @ar[0], false, 10000) of WAIT_TIMEOUT: begin - Service1.LogEvent('HandleRequestThread was timed out'); + XPService.LogEvent('HandleRequestThread was timed out'); exit; end; WAIT_OBJECT_0+1: exit; @@ -59,7 +59,7 @@ WaitForSingleObject(OvLapped.hEvent, INFINITE); // MessageBox(0, PChar(AppName), 'App is to start', MB_SERVICE_NOTIFICATION or MB_OK); TJwSecurityToken.ImpersonateNamedPipeClient(fPipeHandle); - Service1.StartApp(Appname); + XPService.StartApp(Appname); // TJwSecurityToken.RevertToSelf; //now made in StartApp finally CloseHandle(OvLapped.hEvent); @@ -67,8 +67,8 @@ CloseHandle(fPipeHandle); end; finally - if InterlockedExchangeAdd(Service1.fHReqThreadCount, -1)=1 then - SetEvent(Service1.ThreadsStopped); + if InterlockedExchangeAdd(XPService.fHReqThreadCount, -1)=1 then + SetEvent(XPService.ThreadsStopped); end; end; Modified: jwscl/branches/XPElevation_2/Service Code/MainUnit.dfm =================================================================== --- jwscl/branches/XPElevation_2/Service Code/MainUnit.dfm 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/MainUnit.dfm 2007-12-18 19:28:28 UTC (rev 94) @@ -1,9 +1,12 @@ -object Service1: TService1 +object XPService: TXPService OldCreateOrder = False DisplayName = 'XP Elevation Service' StartType = stManual OnExecute = ServiceExecute + OnStart = ServiceStart OnStop = ServiceStop + Left = 1918 + Top = 181 Height = 150 Width = 215 end Modified: jwscl/branches/XPElevation_2/Service Code/MainUnit.pas =================================================================== --- jwscl/branches/XPElevation_2/Service Code/MainUnit.pas 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/MainUnit.pas 2007-12-18 19:28:28 UTC (rev 94) @@ -5,14 +5,15 @@ uses Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, JwaWindows, JwsclToken, JwsclLsa, JwsclCredentials, JwsclDescriptor, JwsclDesktops, - JwsclExceptions, JwsclSID, JwsclKnownSID, JwsclEncryption, JwsclTypes; + JwsclExceptions, JwsclSID, JwsclAcl,JwsclKnownSID, JwsclEncryption, JwsclTypes; type TLogType=(ltInfo, ltError); - TService1 = class(TService) + TXPService = class(TService) procedure ServiceExecute(Sender: TService); procedure ServiceStop(Sender: TService; var Stopped: Boolean); + procedure ServiceStart(Sender: TService; var Started: Boolean); private { Private declarations } fStopEvent: THandle; @@ -43,7 +44,7 @@ LogFileKey='Log'; var - Service1: TService1; + XPService: TXPService; implementation uses ThreadUnit, HandleRequestThread, Registry; @@ -51,15 +52,15 @@ procedure ServiceController(CtrlCode: DWord); stdcall; begin - Service1.Controller(CtrlCode); + XPService.Controller(CtrlCode); end; -function TService1.GetServiceController: TServiceController; +function TXPService.GetServiceController: TServiceController; begin Result := ServiceController; end; -procedure TService1.LogEvent(Event: String; EventType: TLogType=ltInfo); +procedure TXPService.LogEvent(Event: String; EventType: TLogType=ltInfo); begin EnterCriticalSection(fLogCriticalSection); try @@ -93,7 +94,7 @@ end; end; -function TService1.AskCredentials(Token: TJwSecurityToken; AppToStart: string; UserAndDomain: string; out Password: string; out Save: boolean): boolean; +function TXPService.AskCredentials(Token: TJwSecurityToken; AppToStart: string; UserAndDomain: string; out Password: string; out Save: boolean): boolean; var StartInfo: STARTUPINFOA; procedure InitStartInfo; begin @@ -196,14 +197,14 @@ end; end; -function TService1.MayUserBeElevated(User: TJwSecurityID): boolean; +function TXPService.MayUserBeElevated(User: TJwSecurityID): boolean; begin result:=fAllowedSIDs.FindSid(User)<>-1; end; const EmptyPass = Pointer(-1); -procedure TService1.StartApp(AppToStart: string); +procedure TXPService.StartApp(AppToStart: string); var Pass, User, Domain: string; LSA: TJwSecurityLsa; plogonData : PMSV1_0_INTERACTIVE_LOGON; Authlen: Cardinal; @@ -370,7 +371,7 @@ // Startinfo.dwFlags:=STARTF_USESHOWWINDOW; // Startinfo.wShowWindow:=SW_SHOW; Startinfo.lpDesktop:='Winsta0\default'; - if GetTokenInformation( Token.TokenHandle, TokenSessionId, @SeId1, 4, EncryptLength) then //EncryptLength is just a dummy here + if GetTokenInformation(Token.TokenHandle, TokenSessionId, @SeId1, 4, EncryptLength) then //EncryptLength is just a dummy here SetTokenInformation(NewToken.TokenHandle, TokenSessionId, @SeId1, 4); CreateEnvironmentBlock(@Envirblock, NewToken.TokenHandle, false); try @@ -424,7 +425,7 @@ end; end; -procedure TService1.InitAllowedSIDs; +procedure TXPService.InitAllowedSIDs; var Reg: TRegistry; SIDStrings: TStringlist; i: integer; begin fAllowedSIDs:=TJwSecurityIDList.Create(True); @@ -455,11 +456,14 @@ fPasswords.UnlockList; end; -procedure TService1.ServiceExecute(Sender: TService); +procedure TXPService.ServiceExecute(Sender: TService); var Pipe: THandle; OvLapped: OVERLAPPED; ar: array[0..1] of THandle; AppName: String; PipeSize: Cardinal; Descr: TJwSecurityDescriptor; SecAttr: PSECURITY_ATTRIBUTES; i: integer; begin + //MessageBox(0,'wait1','',MB_SERVICE_NOTIFICATION or MB_OK); + + //Sleep(10000); try AssignFile(fLogFile, RegGetFullPath(LogFileKey)); if FileExists(RegGetFullPath(LogFileKey)) then @@ -473,6 +477,8 @@ MessageBox(0, PChar(E.Message), MessageboxCaption, MB_SERVICE_NOTIFICATION or MB_OK); end; end; + + LogEvent('*** XP Elevation Service starts... '); try // MessageBox(0, 'Started', 'UAC-Nachbildung', MB_SERVICE_NOTIFICATION or MB_OK); LogEvent('Started'); @@ -484,6 +490,7 @@ // end; fStopEvent:=CreateEvent(nil, true, false, nil); fThreadsStopped:=CreateEvent(nil, true, true, nil); + Sleep(1000); try try SecAttr:=nil; @@ -492,8 +499,15 @@ try Descr:=TJwSecurityDescriptor.Create; try - Descr.DACL:=nil; - SecAttr:=Descr.Create_SA(False); + LogEvent('Create Pipe 1'); + Descr.Owner := JwSecurityProcessUserSID; + Descr.PrimaryGroup := JwAdministratorsSID; + //Descr.DACL:=nil; + Descr.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil,[],GENERIC_ALL,JwLocalSystemSID,false)); + Descr.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil,[],GENERIC_ALL,JwAdministratorsSID,false)); + Descr.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil,[],GENERIC_ALL,JwWorldSID,false)); + SecAttr:=Descr.Create_SA(false); + //SecAttr:= nil; Pipe:=CreateNamedPipe('\\.\pipe\XPElevationPipe', PIPE_ACCESS_INBOUND or FILE_FLAG_OVERLAPPED, PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, 0, LPSECURITY_ATTRIBUTES(SecAttr)); finally Descr.Free; @@ -521,6 +535,7 @@ PipeHandle:=Pipe; Resume; end; + LogEvent('Create Pipe 2'); Pipe:=CreateNamedPipe('\\.\pipe\XPElevationPipe', PIPE_ACCESS_INBOUND or FILE_FLAG_OVERLAPPED, PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, 0, LPSECURITY_ATTRIBUTES(SecAttr)); if Pipe=INVALID_HANDLE_VALUE then begin @@ -557,31 +572,37 @@ finally // fDesktop.Free; // MessageBox(0, 'Ending', 'UAC-Nachbildung', MB_SERVICE_NOTIFICATION or MB_OK); - LogEvent('Ending'); + LogEvent('*** XP Elevation Service finished.'); end; finally CloseHandle(fStopEvent); CloseHandle(fThreadsStopped); end; finally + //LogEvent('*** XP Elevation Service finished. '); + DeleteCriticalSection(fLogCriticalSection); CloseFile(fLogFile); end; end; -procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean); +procedure TXPService.ServiceStop(Sender: TService; var Stopped: Boolean); begin Self.Stopped:=True; + end; -procedure TService1.SetStopped(const Value: boolean); +procedure TXPService.SetStopped(const Value: boolean); begin FStopped := Value; if Value then SetEvent(fStopEvent); end; -initialization - JwInitWellknownSIDs; +procedure TXPService.ServiceStart(Sender: TService; var Started: Boolean); +begin + Started := true; +end; + end. Modified: jwscl/branches/XPElevation_2/Service Code/Service.cfg =================================================================== --- jwscl/branches/XPElevation_2/Service Code/Service.cfg 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/Service.cfg 2007-12-18 19:28:28 UTC (rev 94) @@ -25,6 +25,8 @@ -$YD -$Z1 -cg +-vn +-vr -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -H+ -W+ @@ -32,3 +34,10 @@ -$M16384,1048576 -K$00400000 -E"..\bin" +-N"..\bin" +-LE"e:\proggen\borland\delphi7\Projects\Bpl" +-LN"e:\proggen\borland\delphi7\Projects\Bpl" +-U"..\bin" +-O"..\bin" +-I"..\bin" +-R"..\bin" Modified: jwscl/branches/XPElevation_2/Service Code/Service.dof =================================================================== --- jwscl/branches/XPElevation_2/Service Code/Service.dof 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/Service.dof 2007-12-18 19:28:28 UTC (rev 94) @@ -83,18 +83,18 @@ MapFile=0 OutputObjs=0 ConsoleApp=1 -DebugInfo=0 -RemoteSymbols=0 +DebugInfo=1 +RemoteSymbols=1 MinStackSize=16384 MaxStackSize=1048576 ImageBase=4194304 ExeDescription= [Directories] OutputDir=..\bin -UnitOutputDir= +UnitOutputDir=..\bin PackageDLLOutputDir= PackageDCPOutputDir= -SearchPath= +SearchPath=..\bin Packages=Vcl50;Vclx50;VclSmp50;Vcldb50;vclado50;ibevnt50;Vclbde50;vcldbx50;Qrpt50;TeeUI50;TeeDB50;Tee50;Dss50;TeeQR50;VCLIB50;Vclmid50;vclie50;Inetdb50;Inet50;NMFast50;webmid50;dclocx50;dclaxserver50;rtl;vcl;dbrtl;vclactnband;vclx;visualclx;bdertl;vcldb;VclSmp;tee;TMSD7;AnchorComps Conditionals= DebugSourceDirs= @@ -123,3 +123,22 @@ DLL=0 Locale=1031 CodePage=1252 +[Version Info Keys] +FileVersion=1.0.0.0 +[Excluded Packages] +e:\proggen\borland\delphi7\Bin\dclIntraweb_50_70.bpl=Intraweb 5.0 Design-Package f\xFCr Delphi 7 +e:\proggen\borland\delphi7\bin\dclRave70.bpl=Rave Reports BE 5.0-Package +E:\Proggen\Borland\EurekaLog 6\Delphi7\ExceptionExpert7.bpl=EurekaLog 6.0.6 +E:\Proggen\Borland\Delphi7\Projects\Bpl\dcllmdshared_d7_.bpl=LMD-Tools Designtime Enhancements +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=1 +Item0=..\bin +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=..\bin +[HistoryLists\hlOutputDirectorry] +Count=1 +Item0=..\bin Modified: jwscl/branches/XPElevation_2/Service Code/Service.dpr =================================================================== --- jwscl/branches/XPElevation_2/Service Code/Service.dpr 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/Service.dpr 2007-12-18 19:28:28 UTC (rev 94) @@ -23,7 +23,7 @@ // // Application.DelayInitialize := True; // - if not Application.DelayInitialize or Application.Installing then + { if not Application.DelayInitialize or Application.Installing then } Application.Initialize; Application.CreateForm(TService1, Service1); Application.Run; Modified: jwscl/branches/XPElevation_2/Service Code/ThreadUnit.pas =================================================================== --- jwscl/branches/XPElevation_2/Service Code/ThreadUnit.pas 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/Service Code/ThreadUnit.pas 2007-12-18 19:28:28 UTC (rev 94) @@ -99,7 +99,7 @@ AssocPort.CompletionKey := Pointer(JobInformation.Id); if not SetInformationJobObject(Job, JobObjectAssociateCompletionPortInformation, @AssocPort, SizeOf(AssocPort)) then - Service1.LogEvent('SetInformationJobObject failed with '+SysErrorMessage(GetLastError), ltError) + XPService.LogEvent('SetInformationJobObject failed with '+SysErrorMessage(GetLastError), ltError) else fList.Add(JobInformation); end; @@ -108,7 +108,7 @@ begin CloseHandle(fIOCompletionPort); fList.Free; - Service1.LogEvent('UnloadProfThread terminates'); + XPService.LogEvent('UnloadProfThread terminates'); end; constructor TUnloadProfThread.Create; Modified: jwscl/branches/XPElevation_2/bin/installsv.bat =================================================================== --- jwscl/branches/XPElevation_2/bin/installsv.bat 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/bin/installsv.bat 2007-12-18 19:28:28 UTC (rev 94) @@ -1 +1,2 @@ -service /install \ No newline at end of file +XPElevationService /install +pause \ No newline at end of file Modified: jwscl/branches/XPElevation_2/bin/startsv.bat =================================================================== --- jwscl/branches/XPElevation_2/bin/startsv.bat 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/bin/startsv.bat 2007-12-18 19:28:28 UTC (rev 94) @@ -1 +1,3 @@ -net start "XPElevationService" +net start "XP Elevation Service" +pause + Modified: jwscl/branches/XPElevation_2/bin/stopsv.bat =================================================================== --- jwscl/branches/XPElevation_2/bin/stopsv.bat 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/bin/stopsv.bat 2007-12-18 19:28:28 UTC (rev 94) @@ -1 +1 @@ -net stop "XPElevationService" +net stop "XP Elevation Service" Modified: jwscl/branches/XPElevation_2/bin/uninstallsv.bat =================================================================== --- jwscl/branches/XPElevation_2/bin/uninstallsv.bat 2007-12-17 20:03:29 UTC (rev 93) +++ jwscl/branches/XPElevation_2/bin/uninstallsv.bat 2007-12-18 19:28:28 UTC (rev 94) @@ -1 +1 @@ -service /uninstall \ No newline at end of file +XPElevationService /uninstall \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-12-17 20:03:45
|
Revision: 93 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=93&view=rev Author: marcovtje Date: 2007-12-17 12:03:29 -0800 (Mon, 17 Dec 2007) Log Message: ----------- * generic 32-bit/64-bit support CPU32/CPU64. This because the jwawinbase version is currently broken (sb added CPU64bit, note the "bit", and FPC doesn't define THAT in 64-bit mode ;-) Modified Paths: -------------- jwapi/trunk/Common/jedi.inc Modified: jwapi/trunk/Common/jedi.inc =================================================================== --- jwapi/trunk/Common/jedi.inc 2007-12-16 21:59:01 UTC (rev 92) +++ jwapi/trunk/Common/jedi.inc 2007-12-17 20:03:29 UTC (rev 93) @@ -83,8 +83,13 @@ UNIX Defined when target platform is Unix-like (including Linux) - Architecture directives. These are auto-defined by FPC + CPU32 and CPU64 are mostly for generic pointer size dependant differences rather + than for a specific architecture. + CPU386 Defined when target platform is x86 (win32) CPUx86_64 Defined when target platform is x86_64 (win64) + CPU32 Defined when target is 32-bit + CPU64 Defined when target is 64-bit - Visual library Directives @@ -405,6 +410,7 @@ {$DEFINE KYLIX} {$ENDIF LINUX} {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default + {$DEFINE CPU32} // Assume Borland compilers are 32-bit (rather than 64-bit) {$ENDIF BORLAND} {------------------------------------------------------------------------------} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-12-16 21:59:03
|
Revision: 92 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=92&view=rev Author: marcovtje Date: 2007-12-16 13:59:01 -0800 (Sun, 16 Dec 2007) Log Message: ----------- * cpu386 defined for Borland compilers and some comment enhancements. This allows for some win64 fixes in jwanative Modified Paths: -------------- jwapi/trunk/Common/jedi.inc Modified: jwapi/trunk/Common/jedi.inc =================================================================== --- jwapi/trunk/Common/jedi.inc 2007-12-15 12:53:07 UTC (rev 91) +++ jwapi/trunk/Common/jedi.inc 2007-12-16 21:59:01 UTC (rev 92) @@ -77,10 +77,14 @@ Directive Description ------------------------------------------------------------------------------ WIN32 Defined when target platform is 32 bit Windows + WIN64 Defined when target platform is 64 bit Windows MSWINDOWS Defined when target platform is 32 bit Windows LINUX Defined when target platform is Linux - UNIX Defined when target platform is Linux or Unix + UNIX Defined when target platform is Unix-like (including Linux) +- Architecture directives. These are auto-defined by FPC + CPU386 Defined when target platform is x86 (win32) + CPUx86_64 Defined when target platform is x86_64 (win64) - Visual library Directives @@ -391,14 +395,16 @@ { Set FreePascal to Delphi mode } {$IFDEF FPC} {$MODE DELPHI} - {$ASMMODE Intel} + {$ASMMODE Intel} {$UNDEF BORLAND} + // FPC defines CPU* and Unix automatically {$ENDIF} {$IFDEF BORLAND} {$IFDEF LINUX} {$DEFINE KYLIX} {$ENDIF LINUX} + {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default {$ENDIF BORLAND} {------------------------------------------------------------------------------} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-12-15 12:53:10
|
Revision: 91 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=91&view=rev Author: marcovtje Date: 2007-12-15 04:53:07 -0800 (Sat, 15 Dec 2007) Log Message: ----------- * minimal fixes to make units already in FPC FPC compilable again: ** move $i statement in jwanative.pas (mode change must appear before first declaration) ** ifndef fpc about unused (?) units in the uses clause of jwaadstlb ** Mandatory implementation in unit jwaschedule for FPC (probably FPC bug, but easily fixed) Modified Paths: -------------- jwapi/trunk/Win32API/JwaAdsTLB.pas jwapi/trunk/Win32API/JwaNative.pas jwapi/trunk/Win32API/JwaSchedule.pas Modified: jwapi/trunk/Win32API/JwaAdsTLB.pas =================================================================== --- jwapi/trunk/Win32API/JwaAdsTLB.pas 2007-12-13 13:51:18 UTC (rev 90) +++ jwapi/trunk/Win32API/JwaAdsTLB.pas 2007-12-15 12:53:07 UTC (rev 91) @@ -77,7 +77,8 @@ interface {$i jediapilib.inc} uses - Windows, ActiveX, Classes {$IFNDEF NOVCL} , Graphics, OleServer, OleCtrls, StdVCL {$ENDIF} ; + Windows, ActiveX, Classes + {$ifndef FPC} {$IFNDEF NOVCL} , Graphics, OleServer, OleCtrls, StdVCL {$ENDIF} {$endif} ; // Are these used at all? {$ENDIF JWA_OMIT_SECTIONS} Modified: jwapi/trunk/Win32API/JwaNative.pas =================================================================== --- jwapi/trunk/Win32API/JwaNative.pas 2007-12-13 13:51:18 UTC (rev 90) +++ jwapi/trunk/Win32API/JwaNative.pas 2007-12-15 12:53:07 UTC (rev 91) @@ -168,7 +168,7 @@ unit JwaNative; interface - +{$INCLUDE jediapilib.inc} uses JwaWinType, JwaWinNT, JwaWinBase, JwaNtStatus; @@ -179,7 +179,7 @@ {$IFDEF RTDL}{$DEFINE DYNAMIC_LINK}{$ENDIF} const ntdll = 'ntdll.dll'; -{$INCLUDE jediapilib.inc} + //------------------------------------------------------------------------------ {$ENDIF JWA_OMIT_SECTIONS} Modified: jwapi/trunk/Win32API/JwaSchedule.pas =================================================================== --- jwapi/trunk/Win32API/JwaSchedule.pas 2007-12-13 13:51:18 UTC (rev 90) +++ jwapi/trunk/Win32API/JwaSchedule.pas 2007-12-15 12:53:07 UTC (rev 91) @@ -144,6 +144,7 @@ {$IFNDEF JWA_OMIT_SECTIONS} +Implementation // implementation is mandatory under FPC. end. {$ENDIF JWA_OMIT_SECTIONS} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-13 13:51:21
|
Revision: 90 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=90&view=rev Author: dezipaitor Date: 2007-12-13 05:51:18 -0800 (Thu, 13 Dec 2007) Log Message: ----------- Fixed a bug that prevented functions that use SecurityAttributes with a security descriptor, to work properly when TJwSecurityDescriptor.Create_SA or similar is used. The functions failed sometimes with error 1314 (client misses privilege) Modified Paths: -------------- jwscl/trunk/documentation/JWSCL help.chm jwscl/trunk/source/JwsclDescriptor.pas jwscl/trunk/source/JwsclToken.pas Modified: jwscl/trunk/documentation/JWSCL help.chm =================================================================== (Binary files differ) Modified: jwscl/trunk/source/JwsclDescriptor.pas =================================================================== --- jwscl/trunk/source/JwsclDescriptor.pas 2007-12-12 22:10:58 UTC (rev 89) +++ jwscl/trunk/source/JwsclDescriptor.pas 2007-12-13 13:51:18 UTC (rev 90) @@ -1012,7 +1012,7 @@ RsWinCallFailed, 'Create', ClassName, RsUNDescriptor, 0, True, ['GetSecurityDescriptorControl']); - RMControl := c; + //RMControl := c; Warning: GetRMControl not implemented!! {if c and SE_SELF_RELATIVE <> SE_SELF_RELATIVE then exit;} @@ -1363,10 +1363,10 @@ else begin ipSDSize := sizeof(jwaWindows.TSecurityDescriptor); - //result := PSecurityDescriptor(LocalAlloc(LMEM_FIXED or LMEM_ZEROINIT,sizeof(jwaWindows.TJwSecurityDescriptor))); +// result := PSecurityDescriptor(LocalAlloc(LMEM_FIXED or LMEM_ZEROINIT,sizeof(jwaWindows.TSecurityDescriptor))); GetMem(Result, sizeof(jwaWindows.TSecurityDescriptor)); - //Result.Control := RMControl; + //Result.Control := RMControl; Warning: GetRMControl not implemented!! {result <> nil} if not InitializeSecurityDescriptor( Result, SECURITY_DESCRIPTOR_REVISION) then @@ -1492,9 +1492,10 @@ //Control2 := TJwEnumMap.ConvertSecurityControl(result^.Control); - - Result.Control := RMControl; + // Result.Control := GetRMControl; Warning: GetRMControl not implemented!! + Result.Control := 0; + Result.Control := Result.Control or SE_DACL_PRESENT; //DACL retrieved by default mechanism @@ -1522,10 +1523,9 @@ Result.Control := Result.Control and not SE_SELF_RELATIVE; // Control2 := TJwEnumMap.ConvertSecurityControl(result^.Control); + - - {result <> nil aDACL <> nil or aDACL = nil aSACL <> nil or aSACL = nil @@ -1586,15 +1586,16 @@ bSDRelative: boolean = False): PSecurityAttributes; begin GetMem(Result, sizeof(TSecurityAttributes)); + //result := PSecurityAttributes(LocalAlloc(LPTR, sizeof(TSecurityAttributes))); if (Result = nil) then exit; - Result.nLength := sizeof(TSecurityAttributes); - Result.bInheritHandle := bInheritHandle; + Result^.nLength := sizeof(TSecurityAttributes); + Result^.bInheritHandle := bInheritHandle; try - Result.lpSecurityDescriptor := Create_SD(bSDRelative); + Result^.lpSecurityDescriptor := Create_SD(bSDRelative); except on E: Exception do begin @@ -1934,6 +1935,7 @@ function TJwSecurityDescriptor.GetRMControl: jwaWindows.TSecurityDescriptorControl; begin + result := 0; //TODO: Control is not resource manager (RM) Control !! //Result := TJwEnumMap.ConvertSecurityControl(fControl); end; Modified: jwscl/trunk/source/JwsclToken.pas =================================================================== --- jwscl/trunk/source/JwsclToken.pas 2007-12-12 22:10:58 UTC (rev 89) +++ jwscl/trunk/source/JwsclToken.pas 2007-12-13 13:51:18 UTC (rev 90) @@ -1485,7 +1485,7 @@ TJwPrivilegeQueryType = (pqt_Available, pqt_Enabled); TJwPrivilegeSetType = (pst_Enable, pst_EnableIfAvail, pst_Disable); -{@Name checks if a given privilege is available or enabled in the actual process or thread. +{@Name checks whether a given privilege is available or enabled in the actual process or thread. @param Index gets the privilege name @param query defines whether the given privilege should be checked for availability or is enable @return Returns true if the privilege is available and enabled. If the privilege is not available or disabled the result is false. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-12 22:11:03
|
Revision: 89 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=89&view=rev Author: dezipaitor Date: 2007-12-12 14:10:58 -0800 (Wed, 12 Dec 2007) Log Message: ----------- +fixed comments +added new set Modified Paths: -------------- jwscl/trunk/source/JwsclDescriptor.pas jwscl/trunk/source/JwsclTypes.pas Modified: jwscl/trunk/source/JwsclDescriptor.pas =================================================================== --- jwscl/trunk/source/JwsclDescriptor.pas 2007-12-11 22:05:44 UTC (rev 88) +++ jwscl/trunk/source/JwsclDescriptor.pas 2007-12-12 22:10:58 UTC (rev 89) @@ -112,7 +112,7 @@ {@Name creates an empty security descriptor. The property pSD is initialised and ready to be filled. - By default the DACL is initialised emptily so everyone is denied access. + By default the DACL is initialized with no entries so everyone is denied access. Set DACL to nil to allow everyone access but do not free it by calling Free. DACL := Nil; } @@ -324,17 +324,17 @@ } class procedure Free_SAEx(var SA: TSecurityAttributes); - {@Name writes an relative security descriptor into a stream. + {@Name writes a relative security descriptor into a stream. The method uses a magic header to check for position errors in a stream. @unorderedlist( - @item Bytes | Value - @item 1..5 (5) | SD_MAGIC_HEADER (byte array) - @item 6..9 (4) | SD size (Cardinal) - @item 10..17 (8) | hash value (Cardinal) - @item 18..18 (1) | hash value in use (byte) true if 255 otherwise false. - @item == SD_HEADER_SIZE - @item 19..sd (size) | security descriptor data + @item(Bytes | Value) + @item(1..5 (5) | SD_MAGIC_HEADER (byte array)) + @item(6..9 (4) | SD size (Cardinal)) + @item(10..17 (8) | hash value (Cardinal)) + @item(18..18 (1) | hash value in use (byte) true if 255 otherwise false. + == SD_HEADER_SIZE) + @item(19..sd (size) | security descriptor data) ) @@ -371,7 +371,7 @@ function GetSecurityDescriptorString(SIFlags: TJwSecurityInformationFlagSet): TJwString; overload; {@Name replaces the security descriptor elements given in SecurityInformationSet with - the one in SecurityDescriptor. + the ones in SecurityDescriptor. @param(SecurityInformationSet Contains the members of the SD to be replaced.) @param(SecurityDescriptor defines the SD which is used to copy the members into the instance.) Modified: jwscl/trunk/source/JwsclTypes.pas =================================================================== --- jwscl/trunk/source/JwsclTypes.pas 2007-12-11 22:05:44 UTC (rev 88) +++ jwscl/trunk/source/JwsclTypes.pas 2007-12-12 22:10:58 UTC (rev 89) @@ -617,6 +617,8 @@ TJwGetAccessCheckType = (gactGetSecurity, gactSetSecurity); + TJwGetAccessCheckTypeSet = set of TJwGetAccessCheckType; + TJwGetInheritFlagsType = (giftCreatePrivate, giftSetPrivate); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-11 22:05:48
|
Revision: 88 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=88&view=rev Author: dezipaitor Date: 2007-12-11 14:05:44 -0800 (Tue, 11 Dec 2007) Log Message: ----------- fixed CreateCompatibilityQueryUserToken that could not find a process, even when it is there. Modified Paths: -------------- jwscl/trunk/source/JwsclToken.pas Modified: jwscl/trunk/source/JwsclToken.pas =================================================================== --- jwscl/trunk/source/JwsclToken.pas 2007-12-09 21:25:53 UTC (rev 87) +++ jwscl/trunk/source/JwsclToken.pas 2007-12-11 22:05:44 UTC (rev 88) @@ -2708,9 +2708,9 @@ if hProcessHandle <> INVALID_HANDLE_VALUE then begin pEntry.dwSize := SizeOf(ProcessEntry32); - if Process32First(hProcessHandle, pEntry) = true then begin + if Process32First(hProcessHandle, pEntry) then begin repeat - if JwCompareString(pEntry.szExeFile, Exename) = 0 then + if JwCompareString(pEntry.szExeFile, Exename, true) = 0 then begin result := pEntry.th32ProcessID; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-09 21:25:54
|
Revision: 87 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=87&view=rev Author: dezipaitor Date: 2007-12-09 13:25:53 -0800 (Sun, 09 Dec 2007) Log Message: ----------- +pointed out as out of date Modified Paths: -------------- jwapi/trunk/Win32API/readme.html Modified: jwapi/trunk/Win32API/readme.html =================================================================== --- jwapi/trunk/Win32API/readme.html 2007-12-09 21:22:47 UTC (rev 86) +++ jwapi/trunk/Win32API/readme.html 2007-12-09 21:25:53 UTC (rev 87) @@ -166,7 +166,11 @@ <h2>What has changed?</h2> - <h3>Januari 2005</h3> + <h3>December 2007</h3> + <p>Warning: This file is out of date and is not maintained at the moment. Refer to the <a href="http://sourceforge.net/projects/jedi-apilib/">projects website</a> + for more information.</p> + + <h3>January 2005</h3> <p> <ul> <li>The Win32 API Conversion was moved to sourceforge.</li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-09 21:22:49
|
Revision: 86 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=86&view=rev Author: dezipaitor Date: 2007-12-09 13:22:47 -0800 (Sun, 09 Dec 2007) Log Message: ----------- Update readmefirst.txt with new information and links Modified Paths: -------------- jwapi/trunk/Win32API/readmefirst.txt Modified: jwapi/trunk/Win32API/readmefirst.txt =================================================================== --- jwapi/trunk/Win32API/readmefirst.txt 2007-12-09 20:57:16 UTC (rev 85) +++ jwapi/trunk/Win32API/readmefirst.txt 2007-12-09 21:22:47 UTC (rev 86) @@ -2,26 +2,60 @@ PLEASE READ THIS FIRST! +Be aware that there are some already created packages in the folder: \trunk\packages +You can use them in your Delphi version. Older packages can be converted by newer Delphi versions +so it is not a problem that there are many empty Delphi version folders. +Just use an old package version with your Delphi and let it recreate then copy it to a folder that describes the version correctly. +You can help make JWA better by sending us the Delphi version package. +You can get a deeper understanding if you continue reading.... + + To compile the bunch of files do these simple steps: 1. create a package with a name and location of your choice -2. add the file jwaWindows.pas - and only this file to the package -3. add the path to the common files (usually located in a folder named Common) +2. add the file jwaWindows.pas - and only this file to the package (except jwaVista.pas for Vista structures) +3. add source path to common files (usually located in a folder named "Common") 4. Choose between dynamic or static binding by set the compiler switch - DYNAMIC_LINK or unset it. -You can change this in jwaWindows.pas. Open it to edit. + DYNAMIC_LINK or unset it. You can change this in jwaWindows.pas. Open it to edit. + You can also set WINXXX, where XXX is a Windows version to include or exclude + functions (un)supported by Windows versions. This is done in common\jediapilib.inc + 5. Choose an output path for the files that will be created by Delphi. You can change it in the setting/options dialog of the package. 7. Also set the options optimization and debugger option in the setting page as you want. 8. Compile the package. It will need its time. -9. If everything went fine you'll find a file called jwaWindows.dcu that you can use in your programs. Remember each delphi version needs its own version of that file. You have to repeat the compilation in each delphi version you want to use. -The advantage is that you can rebuilt your project without rebuilding all API files. +9. If everything went fine you'll find a file called jwaWindows.dcu (jwaVista.dcu) that you can use in your programs. Remember each delphi version needs its own version of that file. +You have to repeat the compilation in each delphi version you want to use. +The advantage is that you can rebuild your project without rebuilding all API files. To use jwaWindows.dcu you can copy it in your project folder or -Add a search path into your project settings. +Add a search path into your project settings. Delphi comes with a global path settings that would be the right choice here. +You can change it in menu Tools->Environment Options-> tab Library +-> Library path. -If you also add the source file folder to the debug path in your project settings, you can browse the source code without compiling it. +If you also add the source file folder to the debug path in your project/global settings , you can browse the source code without compiling it. -August 2007 +The common\jediapilib.inc contains some compiler directives (like WINXP, WINVISTA) that shows or hides function declarations that are only +available on these plattforms. Make sure you use them wisely. Especially you can prevent your application from starting if you use static +function binding with these functions. Your app will not start if you use a Vista only function because it is unknown to Windows XP or even 2000. +Windows 2003 also contains some functions that are not available to Xp. Windows XP contains a known function (WNetRestoreConnectionW) that is no longer +available in Windows Vista. + +Using dynamic binding is a safe way to make your applications startable under all Windows versions. However your problem will only be postponed +to a later failure point. You must make sure that these functions are supported by the operation system where your app is intended to be run. +The MSDN provides information wich OS supports a particular function. + + +Additional information can be found at the mailing list +http://sourceforge.net/mailarchive/forum.php?thread_name=4759DDA0.7080801%40gmx.de&forum_name=jedi-apilib-wscl + +Subscribe here: +http://sourceforge.net/mail/?group_id=121894 + + +December 2007 Christian Wimmer (dezipaitor(at)gmx.de) + + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-09 20:57:20
|
Revision: 85 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=85&view=rev Author: dezipaitor Date: 2007-12-09 12:57:16 -0800 (Sun, 09 Dec 2007) Log Message: ----------- fixed [1531714] Wrong translation of DEVICEMODE structure http://sourceforge.net/tracker/index.php?func=detail&aid=1531714&group_id=121894&atid=694029 Modified Paths: -------------- jwapi/trunk/Win32API/JwaWinGDI.pas Modified: jwapi/trunk/Win32API/JwaWinGDI.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinGDI.pas 2007-12-09 18:33:57 UTC (rev 84) +++ jwapi/trunk/Win32API/JwaWinGDI.pas 2007-12-09 20:57:16 UTC (rev 85) @@ -3168,25 +3168,25 @@ case Integer of // printer only fields 0: ( - dmOrientation: Smallint; - dmPaperSize: Smallint; - dmPaperLength: Smallint; - dmPaperWidth: Smallint; - dmScale: Smallint; - dmCopies: Smallint; - dmDefaultSource: Smallint; - dmPrintQuality: Smallint); + dmOrientation: short; + dmPaperSize: short; + dmPaperLength: short; + dmPaperWidth: short; + dmScale: short; + dmCopies: short; + dmDefaultSource: short; + dmPrintQuality: short); // display only fields 1: ( dmPosition: POINTL; dmDisplayOrientation: DWORD; dmDisplayFixedOutput: DWORD); end; - dmColor: Shortint; - dmDuplex: Shortint; - dmYResolution: Shortint; - dmTTOption: Shortint; - dmCollate: Shortint; + dmColor: short; + dmDuplex: short; + dmYResolution: short; + dmTTOption: short; + dmCollate: short; dmFormName: array [0..CCHFORMNAME - 1] of BYTE; dmLogPixels: WORD; dmBitsPerPel: DWORD; @@ -3227,25 +3227,25 @@ case Integer of // printer only fields 0: ( - dmOrientation: Smallint; - dmPaperSize: Smallint; - dmPaperLength: Smallint; - dmPaperWidth: Smallint; - dmScale: Smallint; - dmCopies: Smallint; - dmDefaultSource: Smallint; - dmPrintQuality: Smallint); + dmOrientation: short; + dmPaperSize: short; + dmPaperLength: short; + dmPaperWidth: short; + dmScale: short; + dmCopies: short; + dmDefaultSource: short; + dmPrintQuality: short); // display only fields 1: ( dmPosition: POINTL; dmDisplayOrientation: DWORD; dmDisplayFixedOutput: DWORD); end; - dmColor: Shortint; - dmDuplex: Shortint; - dmYResolution: Shortint; - dmTTOption: Shortint; - dmCollate: Shortint; + dmColor: short; + dmDuplex: short; + dmYResolution: short; + dmTTOption: short; + dmCollate: short; dmFormName: array [0..CCHFORMNAME - 1] of WCHAR; dmLogPixels: WORD; dmBitsPerPel: DWORD; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-09 18:33:58
|
Revision: 84 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=84&view=rev Author: dezipaitor Date: 2007-12-09 10:33:57 -0800 (Sun, 09 Dec 2007) Log Message: ----------- +Added a 64bit tweak by Marco see http://sourceforge.net/tracker/index.php?func=detail&aid=1662760&group_id=121894&atid=694029 +SetEnvironmentStrings will only be available to programmers who activate the WIN2003_UP compiler directive. Modified Paths: -------------- jwapi/trunk/Common/jediapilib.inc jwapi/trunk/Win32API/JwaWinBase.pas Modified: jwapi/trunk/Common/jediapilib.inc =================================================================== --- jwapi/trunk/Common/jediapilib.inc 2007-12-09 17:34:59 UTC (rev 83) +++ jwapi/trunk/Common/jediapilib.inc 2007-12-09 18:33:57 UTC (rev 84) @@ -85,6 +85,10 @@ {$DEFINE SUPPORT_LONG_VARNAMES} {$ENDIF FPC} +//activate 64bit tweaks for some functions +//jwaWinBase::InterlockedCompareExchangePointer +//jwaWinBase::InterlockedExchangePointer +{$DEFINE CPU64BIT} // Global switch for the Windows version the files are compatible with // ONLY A SINGLE ONE IS ALLOWED TO BE ACTIVATED BY CHANGING THE DOT TO A DOLLAR SIGN! Modified: jwapi/trunk/Win32API/JwaWinBase.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinBase.pas 2007-12-09 17:34:59 UTC (rev 83) +++ jwapi/trunk/Win32API/JwaWinBase.pas 2007-12-09 18:33:57 UTC (rev 84) @@ -2050,6 +2050,10 @@ {$EXTERNALSYM GetEnvironmentStringsA} {$ENDIF !UNICODE} + +{$IFDEF WIN2003_UP} +//This function is only available in Windows 2003, Vista and 2008 +//http://sourceforge.net/support/tracker.php?aid=1846987 function SetEnvironmentStringsA(NewEnvironment: LPSTR): BOOL; stdcall; {$EXTERNALSYM SetEnvironmentStringsA} @@ -2057,6 +2061,7 @@ {$EXTERNALSYM SetEnvironmentStringsW} function SetEnvironmentStrings(NewEnvironment: LPTSTR): BOOL; stdcall; {$EXTERNALSYM SetEnvironmentStrings} +{$ENDIF WIN2003_UP} function FreeEnvironmentStringsA(pstr: LPSTR): BOOL; stdcall; {$EXTERNALSYM FreeEnvironmentStringsA} @@ -6163,14 +6168,39 @@ Result := $100000; end; +{added tweak from +http://sourceforge.net/tracker/index.php?func=detail&aid=1662760&group_id=121894&atid=694029 +by +Marco +} function InterlockedExchangePointer(var Target: PVOID; Value: PVOID): PVOID; +var _Target : LONGLONG; begin +{$ifdef CPU64BIT} + _Target := LONGLONG(Target); + Result := PVOID(InterlockedExchange64(_Target, LONGLONG(Value))); + Target := PVOID(_Target); +{$else} Result := PVOID(InterlockedExchange(LONG(Target), LONG(Value))); +{$endif CPU64BIT} end; +{added tweak from +http://sourceforge.net/tracker/index.php?func=detail&aid=1662760&group_id=121894&atid=694029 +by Marco +} function InterlockedCompareExchangePointer(var Destination: PVOID; Exchange, Comperand: PVOID): PVOID; +var _Destination : LONGLONG; begin - Result := PVOID(InterlockedCompareExchange(LONG(Destination), LONG(Exchange), LONG(Comperand))); +{$ifdef CPU64BIT} + _Destination := LONGLONG(Destination); + Result := PVOID(InterlockedCompareExchange64(_Destination, + LONGLONG(Exchange), LONGLONG(Comperand))); + Destination := PVOID(_Destination); +{$else CPU64BIT} + Result := PVOID(InterlockedCompareExchange(LONG(Destination), + LONG(Exchange), LONG(Comperand))); +{$endif CPU64BIT} end; function UnlockResource(hResData: HANDLE): BOOL; @@ -7573,6 +7603,7 @@ {$ENDIF !UNICODE} +{$IFDEF WIN2003_UP} var _SetEnvironmentStringsA: Pointer; @@ -7612,6 +7643,8 @@ end; end; +{$ENDIF WIN2003_UP} + var _FreeEnvironmentStringsA: Pointer; @@ -19063,9 +19096,13 @@ {$IFNDEF UNICODE} function GetEnvironmentStringsA; external kernel32 name 'GetEnvironmentStringsA'; {$ENDIF !UNICODE} + +{$IFDEF WIN2003_UP} function SetEnvironmentStringsA; external kernel32 name 'SetEnvironmentStringsA'; function SetEnvironmentStringsW; external kernel32 name 'SetEnvironmentStringsW'; function SetEnvironmentStrings; external kernel32 name 'SetEnvironmentStrings' + AWSuffix; +{$ENDIF WIN2003_UP} + function FreeEnvironmentStringsA; external kernel32 name 'FreeEnvironmentStringsA'; function FreeEnvironmentStringsW; external kernel32 name 'FreeEnvironmentStringsW'; function FreeEnvironmentStrings; external kernel32 name 'FreeEnvironmentStrings' + AWSuffix; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-09 17:35:08
|
Revision: 83 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=83&view=rev Author: dezipaitor Date: 2007-12-09 09:34:59 -0800 (Sun, 09 Dec 2007) Log Message: ----------- Fixes for the following bugs for dezipaitor from 2007/12/08 to 2007/12/09 http://sourceforge.net/tracker/?atid=694029&group_id=121894&func=browse +added several new Win OS switchtes into jediapilib.inc -open bugs: 1846987 Modified Paths: -------------- jwapi/trunk/Common/jediapilib.inc jwapi/trunk/Win32API/JwaBluetoothAPIs.pas jwapi/trunk/Win32API/JwaIpHlpApi.pas jwapi/trunk/Win32API/JwaLmConfig.pas jwapi/trunk/Win32API/JwaQosSp.pas jwapi/trunk/Win32API/JwaRpcASync.pas jwapi/trunk/Win32API/JwaWinCred.pas jwapi/trunk/Win32API/JwaWinNetWk.pas jwapi/trunk/Win32API/JwaWindows.pas Modified: jwapi/trunk/Common/jediapilib.inc =================================================================== --- jwapi/trunk/Common/jediapilib.inc 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Common/jediapilib.inc 2007-12-09 17:34:59 UTC (rev 83) @@ -72,6 +72,20 @@ // directly through the use of Windows.pas instead of JwaWinType.pas. {$DEFINE USE_DELPHI_TYPES} + +// This global switch activates the using of long function variables +// for dynamic linking +// in old Delphi versions long var names are shorten and no more recognized. +{$UNDEF SUPPORT_LONG_VARNAMES} +{$IFDEF DELPHI6_UP} + {$DEFINE SUPPORT_LONG_VARNAMES} +{$ENDIF DELPHI6_UP} + +{$IFDEF FPC} + {$DEFINE SUPPORT_LONG_VARNAMES} +{$ENDIF FPC} + + // Global switch for the Windows version the files are compatible with // ONLY A SINGLE ONE IS ALLOWED TO BE ACTIVATED BY CHANGING THE DOT TO A DOLLAR SIGN! // Default is WINXP @@ -83,7 +97,14 @@ {.DEFINE WIN2000} {$DEFINE WINXP} {.DEFINE WIN2003} +{.DEFINE WINVISTA} +{.$DEFINE WIN2008} +{.DEFINE SERVICEPACK_1} +{.DEFINE SERVICEPACK_2} +{.DEFINE SERVICEPACK_3} +{.DEFINE SERVICEPACK_4} + // Global switch for the Windows Internet Explorer versions // ONLY A SINGLE ONE IS ALLOWED TO BE ACTIVATED BY CHANGING THE DOT TO A DOLLAR SIGN! // Default is IE600 @@ -109,6 +130,32 @@ {$DEFINE HTMLHELP12} // secondary IFDEFs for "_UP" which means also any later OS version + +{$IFDEF WIN2008} + {$DEFINE WIN95_UP} + {$DEFINE WIN98_UP} + {$DEFINE WIN98SE_UP} + {$DEFINE WIN98ME_UP} + {$DEFINE WINNT4_UP} + {$DEFINE WIN2000_UP} + {$DEFINE WINXP_UP} + {$DEFINE WIN2003_UP} + {$DEFINE WINVISTA_UP} + {$DEFINE WIN2008_UP} +{$ENDIF WIN2008} + +{$IFDEF WINVISTA} + {$DEFINE WIN95_UP} + {$DEFINE WIN98_UP} + {$DEFINE WIN98SE_UP} + {$DEFINE WIN98ME_UP} + {$DEFINE WINNT4_UP} + {$DEFINE WIN2000_UP} + {$DEFINE WINXP_UP} + {$DEFINE WIN2003_UP} + {$DEFINE WINVISTA_UP} +{$ENDIF WINVISTA} + {$IFDEF WIN2003} {$DEFINE WIN95_UP} {$DEFINE WIN98_UP} @@ -169,7 +216,22 @@ {$DEFINE WIN95_UP} {$ENDIF WIN95} +{$IFDEF SERVICEPACK_2} + {$DEFINE SERVICEPACK_1_UP} +{$ENDIF SERVICEPACK_2} +{$IFDEF SERVICEPACK_3} + {$DEFINE SERVICEPACK_1_UP} + {$DEFINE SERVICEPACK_2_UP} +{$ENDIF SERVICEPACK_3} + +{$IFDEF SERVICEPACK_4} + {$DEFINE SERVICEPACK_1_UP} + {$DEFINE SERVICEPACK_2_UP} + {$DEFINE SERVICEPACK_3_UP} +{$ENDIF SERVICEPACK_4} + + // secondary IFDEFs for "_UP" which means also any later IE version {$IFDEF IE600} {$DEFINE IE300_UP} Modified: jwapi/trunk/Win32API/JwaBluetoothAPIs.pas =================================================================== --- jwapi/trunk/Win32API/JwaBluetoothAPIs.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaBluetoothAPIs.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -1775,7 +1775,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothDisplayDeviceProperties: Pointer; {$ELSE} _BluetoothDisplayDProperties: Pointer; @@ -1784,7 +1784,7 @@ function BluetoothDisplayDeviceProperties; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothDisplayDeviceProperties, btapi, 'BluetoothDisplayDeviceProperties'); {$ELSE} GetProcedureAddress(_BluetoothDisplayDProperties, btapi, 'BluetoothDisplayDeviceProperties'); @@ -1794,7 +1794,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothDisplayDeviceProperties] {$ELSE} JMP [_BluetoothDisplayDProperties] @@ -1818,7 +1818,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothAuthenticateMultipleDevices: Pointer; {$ELSE} _BluetoothAuthenticateMDevices: Pointer; @@ -1827,7 +1827,7 @@ function BluetoothAuthenticateMultipleDevices; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothAuthenticateMultipleDevices, btapi, 'BluetoothAuthenticateMultipleDevices'); {$ELSE} GetProcedureAddress(_BluetoothAuthenticateMDevices, btapi, 'BluetoothAuthenticateMultipleDevices'); @@ -1836,7 +1836,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothAuthenticateMultipleDevices] {$ELSE} JMP [_BluetoothAuthenticateMDevices] @@ -1859,7 +1859,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothEnumerateInstalledServices: Pointer; {$ELSE} _BluetoothEnumerateIS: Pointer; @@ -1868,7 +1868,7 @@ function BluetoothEnumerateInstalledServices; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothEnumerateInstalledServices, btapi, 'BluetoothEnumerateInstalledServices'); {$ELSE} GetProcedureAddress(_BluetoothEnumerateIS, btapi, 'BluetoothEnumerateInstalledServices'); @@ -1877,7 +1877,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothEnumerateInstalledServices] {$ELSE} JMP [_BluetoothEnumerateIS] @@ -1913,7 +1913,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothEnableIncomingConnections: Pointer; {$ELSE} _BluetoothEnableIC: Pointer; @@ -1921,7 +1921,7 @@ function BluetoothEnableIncomingConnections; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothEnableIncomingConnections, btapi, 'BluetoothEnableIncomingConnections'); {$ELSE} GetProcedureAddress(_BluetoothEnableIC, btapi, 'BluetoothEnableIncomingConnections'); @@ -1930,7 +1930,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothEnableIncomingConnections] {$ELSE} JMP [_BluetoothEnableIC] @@ -1953,7 +1953,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothRegisterForAuthentication: Pointer; {$ELSE} _BluetoothRegisterFA: Pointer; @@ -1962,7 +1962,7 @@ function BluetoothRegisterForAuthentication; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothRegisterForAuthentication, btapi, 'BluetoothRegisterForAuthentication'); {$ELSE} GetProcedureAddress(_BluetoothRegisterFA, btapi, 'BluetoothRegisterForAuthentication'); @@ -1972,7 +1972,7 @@ MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothRegisterForAuthentication] {$ELSE} JMP [_BluetoothRegisterFA] @@ -1982,7 +1982,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothUnregisterAuthentication: Pointer; {$ELSE} _BluetoothUA: Pointer; @@ -1990,7 +1990,7 @@ function BluetoothUnregisterAuthentication; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothUnregisterAuthentication, btapi, 'BluetoothUnregisterAuthentication'); {$ELSE} GetProcedureAddress(_BluetoothUA, btapi, 'BluetoothUnregisterAuthentication'); @@ -1999,7 +1999,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothUnregisterAuthentication] {$ELSE} JMP [_BluetoothUA] @@ -2009,7 +2009,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothSendAuthenticationResponse: Pointer; {$ELSE} _BluetoothSendAR: Pointer; @@ -2018,7 +2018,7 @@ function BluetoothSendAuthenticationResponse; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothSendAuthenticationResponse, btapi, 'BluetoothSendAuthenticationResponse'); {$ELSE} GetProcedureAddress(_BluetoothSendAR, btapi, 'BluetoothSendAuthenticationResponse'); @@ -2027,7 +2027,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothSendAuthenticationResponse] {$ELSE} JMP [_BluetoothSendAR] @@ -2050,7 +2050,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _BluetoothSdpGetContainerElementData: Pointer; {$ELSE} _BluetoothSdpGetCED: Pointer; @@ -2058,7 +2058,7 @@ function BluetoothSdpGetContainerElementData; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_BluetoothSdpGetContainerElementData, btapi, 'BluetoothSdpGetContainerElementData'); {$ELSE} GetProcedureAddress(_BluetoothSdpGetCED, btapi, 'BluetoothSdpGetContainerElementData'); @@ -2067,7 +2067,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_BluetoothSdpGetContainerElementData] {$ELSE} JMP [_BluetoothSdpGetCED] Modified: jwapi/trunk/Win32API/JwaIpHlpApi.pas =================================================================== --- jwapi/trunk/Win32API/JwaIpHlpApi.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaIpHlpApi.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -819,7 +819,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _NhpAllocateAndGetInterfaceInfoFromStack: Pointer; {$ELSE} _NhpAllocateAGIIFrStack: Pointer; @@ -827,7 +827,7 @@ function NhpAllocateAndGetInterfaceInfoFromStack; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_NhpAllocateAndGetInterfaceInfoFromStack,iphlpapilib, 'NhpAllocateAndGetInterfaceInfoFromStack'); {$ELSE} GetProcedureAddress(_NhpAllocateAGIIFrStack,iphlpapilib, 'NhpAllocateAndGetInterfaceInfoFromStack'); @@ -835,7 +835,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_NhpAllocateAndGetInterfaceInfoFromStack] {$ELSE} JMP [_NhpAllocateAGIIFrStack] Modified: jwapi/trunk/Win32API/JwaLmConfig.pas =================================================================== --- jwapi/trunk/Win32API/JwaLmConfig.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaLmConfig.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -165,7 +165,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _NetRegisterDomainNameChangeNotification: Pointer; {$ELSE} _NetRegisterDomainNCN: Pointer; @@ -174,7 +174,7 @@ function NetRegisterDomainNameChangeNotification; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_NetRegisterDomainNameChangeNotification, netapi32, 'NetRegisterDomainNameChangeNotification'); {$ELSE} GetProcedureAddress(_NetRegisterDomainNCN, netapi32, 'NetRegisterDomainNameChangeNotification'); @@ -182,7 +182,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_NetRegisterDomainNameChangeNotification] {$ELSE} JMP [_NetRegisterDomainNCN] @@ -191,7 +191,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _NetUnregisterDomainNameChangeNotification: Pointer; {$ELSE} _NetUnregisterDomainNCN: Pointer; @@ -200,7 +200,7 @@ function NetUnregisterDomainNameChangeNotification; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_NetUnregisterDomainNameChangeNotification, netapi32, 'NetUnregisterDomainNameChangeNotification'); {$ELSE} GetProcedureAddress(_NetUnregisterDomainNCN, netapi32, 'NetUnregisterDomainNameChangeNotification'); @@ -210,7 +210,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_NetUnregisterDomainNameChangeNotification] {$ELSE} JMP [_NetUnregisterDomainNCN] Modified: jwapi/trunk/Win32API/JwaQosSp.pas =================================================================== --- jwapi/trunk/Win32API/JwaQosSp.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaQosSp.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -38,6 +38,9 @@ { } { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } { } +{ } +{ Bug: } +{ This file cannot be compiled with JwaWindows.pas } {******************************************************************************} // $Id: JwaQosSp.pas,v 1.11 2007/09/05 11:58:52 dezipaitor Exp $ @@ -140,8 +143,8 @@ {$EXTERNALSYM LPRSVP_FILTERSPEC_V4} _RSVP_FILTERSPEC_V4 = record Address: IN_ADDR_IPV4; - Unused: Shortint; - Port: Shortint; + Unused: USHORT; + Port: USHORT; end; {$EXTERNALSYM _RSVP_FILTERSPEC_V4} RSVP_FILTERSPEC_V4 = _RSVP_FILTERSPEC_V4; @@ -153,8 +156,8 @@ {$EXTERNALSYM LPRSVP_FILTERSPEC_V6} _RSVP_FILTERSPEC_V6 = record Address: IN_ADDR_IPV6; - UnUsed: Shortint; - Port: Shortint; + UnUsed: USHORT; + Port: USHORT; end; {$EXTERNALSYM _RSVP_FILTERSPEC_V6} RSVP_FILTERSPEC_V6 = _RSVP_FILTERSPEC_V6; @@ -265,8 +268,8 @@ LPRSVP_POLICY = ^RSVP_POLICY; {$EXTERNALSYM LPRSVP_POLICY} _RSVP_POLICY = record - Len: Shortint; - Type_: Shortint; + Len: USHORT; + Type_: USHORT; Info: array [0..4 - 1] of UCHAR; end; {$EXTERNALSYM _RSVP_POLICY} @@ -279,7 +282,7 @@ {$EXTERNALSYM LPCRSVP_POLICY} const - RSVP_POLICY_HDR_LEN = SizeOf(Shortint) + SizeOf(Shortint); + RSVP_POLICY_HDR_LEN = SizeOf(USHORT) + SizeOf(USHORT); {$EXTERNALSYM RSVP_POLICY_HDR_LEN} (* @@ -379,7 +382,8 @@ {$EXTERNALSYM LPQOS_DESTADDR} _QOS_DESTADDR = record ObjectHdr: QOS_OBJECT_HDR; // Object header - SocketAddress: PSockAddr; // Destination socket address + //Wimmer@2007 - to compile in JwaWindows.pas made into Pointer + SocketAddress: Pointer{PSockAddr}; // Destination socket address SocketAddressLength: ULONG; // Length of the address structure end; {$EXTERNALSYM _QOS_DESTADDR} Modified: jwapi/trunk/Win32API/JwaRpcASync.pas =================================================================== --- jwapi/trunk/Win32API/JwaRpcASync.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaRpcASync.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -180,9 +180,14 @@ {$EXTERNALSYM RpcAsyncAbortCall} function RpcAsyncCancelCall(var pAsync: RPC_ASYNC_STATE; fAbort: BOOL): RPC_STATUS; stdcall; {$EXTERNALSYM RpcAsyncCancelCall} -function RpcAsyncCleanupThread(dwTimeout: DWORD): RPC_STATUS; stdcall; -{$EXTERNALSYM RpcAsyncCleanupThread} +{This function is removed due to +http://www.freepascal.org/mantis/view.php?id=10364 +and +http://sourceforge.net/tracker/index.php?func=detail&aid=1846986&group_id=121894&atid=694029 +function RpcAsyncCleanupThread(dwTimeout: DWORD): RPC_STATUS; stdcall;} +{.$EXTERNALSYM RpcAsyncCleanupThread} + type tagExtendedErrorParamTypes = ( eeptFiller0, @@ -480,6 +485,12 @@ end; end; +{ +{This function is removed due to +http://www.freepascal.org/mantis/view.php?id=10364 +and +http://sourceforge.net/tracker/index.php?func=detail&aid=1846986&group_id=121894&atid=694029 + var _RpcAsyncCleanupThread: Pointer; @@ -492,6 +503,7 @@ JMP [_RpcAsyncCleanupThread] end; end; +} var _RpcErrorStartEnumeration: Pointer; @@ -709,7 +721,13 @@ function RpcAsyncCompleteCall; external rpclib name 'RpcAsyncCompleteCall'; function RpcAsyncAbortCall; external rpclib name 'RpcAsyncAbortCall'; function RpcAsyncCancelCall; external rpclib name 'RpcAsyncCancelCall'; -function RpcAsyncCleanupThread; external rpclib name 'RpcAsyncCleanupThread'; + +{This function is removed due to +http://www.freepascal.org/mantis/view.php?id=10364 +and +http://sourceforge.net/tracker/index.php?func=detail&aid=1846986&group_id=121894&atid=694029 +} +//function RpcAsyncCleanupThread; external rpclib name 'RpcAsyncCleanupThread'; function RpcErrorStartEnumeration; external rpclib name 'RpcErrorStartEnumeration'; function RpcErrorGetNextRecord; external rpclib name 'RpcErrorGetNextRecord'; function RpcErrorEndEnumeration; external rpclib name 'RpcErrorEndEnumeration'; Modified: jwapi/trunk/Win32API/JwaWinCred.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinCred.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaWinCred.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -1430,7 +1430,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _CredUICmdLinePromptForCredentialsW: Pointer; {$ELSE} _CredUICmdLinePromptFCW: Pointer; @@ -1438,7 +1438,7 @@ function CredUICmdLinePromptForCredentialsW; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_CredUICmdLinePromptForCredentialsW, credui, 'CredUICmdLinePromptForCredentialsW'); {$ELSE} GetProcedureAddress(_CredUICmdLinePromptFCW, credui, 'CredUICmdLinePromptForCredentialsW'); @@ -1447,7 +1447,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_CredUICmdLinePromptForCredentialsW] {$ELSE} JMP [_CredUICmdLinePromptFCW] @@ -1456,7 +1456,7 @@ end; var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _CredUICmdLinePromptForCredentialsA: Pointer; {$ELSE} _CredUICmdLinePromptFCA: Pointer; @@ -1465,7 +1465,7 @@ function CredUICmdLinePromptForCredentialsA; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_CredUICmdLinePromptForCredentialsA, credui, 'CredUICmdLinePromptForCredentialsA'); {$ELSE} GetProcedureAddress(_CredUICmdLinePromptFCA, credui, 'CredUICmdLinePromptForCredentialsA'); @@ -1473,7 +1473,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_CredUICmdLinePromptForCredentialsA] {$ELSE} JMP [_CredUICmdLinePromptFCA] @@ -1483,7 +1483,7 @@ var -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} _CredUICmdLinePromptForCredentials: Pointer; {$ELSE} _CredUICmdLinePromptFC: Pointer; @@ -1491,7 +1491,7 @@ function CredUICmdLinePromptForCredentials; begin -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} GetProcedureAddress(_CredUICmdLinePromptForCredentials, credui, 'CredUICmdLinePromptForCredentials' + AWSuffix); {$ELSE} GetProcedureAddress(_CredUICmdLinePromptFC, credui, 'CredUICmdLinePromptForCredentials' + AWSuffix); @@ -1499,7 +1499,7 @@ asm MOV ESP, EBP POP EBP -{$IFDEF DELPHI6_UP} +{$IFDEF SUPPORT_LONG_VARNAMES} JMP [_CredUICmdLinePromptForCredentials] {$ELSE} JMP [_CredUICmdLinePromptFC] Modified: jwapi/trunk/Win32API/JwaWinNetWk.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinNetWk.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaWinNetWk.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -388,12 +388,21 @@ function WNetGetConnection(lpLocalName, lpRemoteName: LPTSTR; var lpnLength: DWORD): DWORD; stdcall; {$EXTERNALSYM WNetGetConnection} -function WNetRestoreConnectionA(hwndParent: HWND; lpDevice: LPCSTR): DWORD; stdcall; -{$EXTERNALSYM WNetRestoreConnectionA} +{WNetRestoreConnectionA is no more available +See bug tracker +http://sourceforge.net/tracker/index.php?func=detail&aid=1846980&group_id=121894&atid=694029 +} +//function WNetRestoreConnectionA(hwndParent: HWND; lpDevice: LPCSTR): DWORD; stdcall; +{.$EXTERNALSYM WNetRestoreConnectionA} + +{$IFNDEF WINVISTA_UP} +//These functions are no longer available in Windows Vista and newer + function WNetRestoreConnectionW(hwndParent: HWND; lpDevice: LPCWSTR): DWORD; stdcall; {$EXTERNALSYM WNetRestoreConnectionW} function WNetRestoreConnection(hwndParent: HWND; lpDevice: LPCTSTR): DWORD; stdcall; {$EXTERNALSYM WNetRestoreConnection} +{$ENDIF WINVISTA_UP} function WNetUseConnectionA(hwndOwner: HWND; const lpNetResource: NETRESOURCEA; lpPassword, lpUserID: LPCSTR; dwFlags: DWORD; lpAccessName: LPSTR; @@ -1239,6 +1248,10 @@ end; end; +{WNetRestoreConnectionA is no more available +See bug tracker +http://sourceforge.net/tracker/index.php?func=detail&aid=1846980&group_id=121894&atid=694029 + var _WNetRestoreConnectionA: Pointer; @@ -1251,7 +1264,9 @@ JMP [_WNetRestoreConnectionA] end; end; +} +{$IFNDEF WINVISTA_UP} var _WNetRestoreConnectionW: Pointer; @@ -1268,15 +1283,21 @@ var _WNetRestoreConnection: Pointer; +{WNetRestoreConnectionA is no more available +See bug tracker +http://sourceforge.net/tracker/index.php?func=detail&aid=1846980&group_id=121894&atid=694029 +} + function WNetRestoreConnection; begin - GetProcedureAddress(_WNetRestoreConnection, mpr, 'WNetRestoreConnection' + AWSuffix); + GetProcedureAddress(_WNetRestoreConnection, mpr, 'WNetRestoreConnection' +'W'{ + AWSuffix}); asm MOV ESP, EBP POP EBP JMP [_WNetRestoreConnection] end; end; +{$ENDIF WINVISTA_UP} var _WNetUseConnectionA: Pointer; @@ -1844,9 +1865,15 @@ function WNetGetConnectionA; external mpr name 'WNetGetConnectionA'; function WNetGetConnectionW; external mpr name 'WNetGetConnectionW'; function WNetGetConnection; external mpr name 'WNetGetConnection' + AWSuffix; +{WNetRestoreConnectionA is no more available +See bug tracker +http://sourceforge.net/tracker/index.php?func=detail&aid=1846980&group_id=121894&atid=694029 function WNetRestoreConnectionA; external mpr name 'WNetRestoreConnectionA'; +} +{$IFNDEF WINVISTA_UP} function WNetRestoreConnectionW; external mpr name 'WNetRestoreConnectionW'; -function WNetRestoreConnection; external mpr name 'WNetRestoreConnection' + AWSuffix; +function WNetRestoreConnection; external mpr name 'WNetRestoreConnection' +'A'{+ AWSuffix}; +{$ENDIF WINVISTA_UP} function WNetUseConnectionA; external mpr name 'WNetUseConnectionA'; function WNetUseConnectionW; external mpr name 'WNetUseConnectionW'; function WNetUseConnection; external mpr name 'WNetUseConnection' + AWSuffix; Modified: jwapi/trunk/Win32API/JwaWindows.pas =================================================================== --- jwapi/trunk/Win32API/JwaWindows.pas 2007-12-09 17:24:48 UTC (rev 82) +++ jwapi/trunk/Win32API/JwaWindows.pas 2007-12-09 17:34:59 UTC (rev 83) @@ -280,7 +280,12 @@ {$I JwaWinPerf.pas} {$I JwaQos.pas} {$I JwaWinternl.pas} +{$I JwaQosSp.pas} +{The following files cannot be included because of unfixed errors and problems. +The list has no order!} +//no members + {******** WINSOCK *******************} {$IFDEF JWA_WINSOCK_1} @@ -596,7 +601,13 @@ {$I JwaWinPerf.pas} {$I JwaQos.pas} {$I JwaWinternl.pas} +{$I JwaQosSp.pas} +{The following files cannot be included because of unfixed errors and problems. +The list has no order!} +//no members + + {******** WINSOCK *******************} {$IFDEF JWA_WINSOCK_1} @@ -886,3 +897,4 @@ end. + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Apo...@us...> - 2007-12-09 17:24:52
|
Revision: 82 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=82&view=rev Author: ApolloniusPerga Date: 2007-12-09 09:24:48 -0800 (Sun, 09 Dec 2007) Log Message: ----------- Bugfixes and library identifier Version changed to VersionLib Modified Paths: -------------- jwapi/trunk/Win32API/JwaWinCrypt.pas jwapi/trunk/Win32API/JwaWinDLLNames.pas jwapi/trunk/Win32API/JwaWinVer.pas Modified: jwapi/trunk/Win32API/JwaWinCrypt.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinCrypt.pas 2007-12-07 23:18:52 UTC (rev 81) +++ jwapi/trunk/Win32API/JwaWinCrypt.pas 2007-12-09 17:24:48 UTC (rev 82) @@ -16093,12 +16093,13 @@ {$IFNDEF JWA_INCLUDEMODE} const crypt32 = 'crypt32.dll'; + cryptnet = 'cryptnet.dll'; advapi32 = 'advapi32.dll'; softpub = 'softpub.dll'; {$IFDEF UNICODE} AWSuffix = 'W'; {$ELSE} - AWSuffix = 'A'; + AWSuffix = 'A'; {$ENDIF UNICODE} {$ENDIF JWA_INCLUDEMODE} @@ -16281,7 +16282,7 @@ function CryptSetKeyParam; begin - GetProcedureAddress(_CryptSetKeyParam, crypt32, 'CryptSetKeyParam'); + GetProcedureAddress(_CryptSetKeyParam, advapi32, 'CryptSetKeyParam'); asm MOV ESP, EBP POP EBP @@ -19219,7 +19220,7 @@ function CryptRetrieveObjectByUrlA; begin - GetProcedureAddress(_CryptRetrieveObjectByUrlA, crypt32, 'CryptRetrieveObjectByUrlA'); + GetProcedureAddress(_CryptRetrieveObjectByUrlA, cryptnet, 'CryptRetrieveObjectByUrlA'); asm MOV ESP, EBP POP EBP @@ -19232,7 +19233,7 @@ function CryptRetrieveObjectByUrlW; begin - GetProcedureAddress(_CryptRetrieveObjectByUrlW, crypt32, 'CryptRetrieveObjectByUrlW'); + GetProcedureAddress(_CryptRetrieveObjectByUrlW, cryptnet, 'CryptRetrieveObjectByUrlW'); asm MOV ESP, EBP POP EBP @@ -19245,7 +19246,7 @@ function CryptRetrieveObjectByUrl; begin - GetProcedureAddress(_CryptRetrieveObjectByUrl, crypt32, 'CryptRetrieveObjectByUrl' + AWSuffix); + GetProcedureAddress(_CryptRetrieveObjectByUrl, cryptnet, 'CryptRetrieveObjectByUrl' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -19258,7 +19259,7 @@ function CryptInstallCancelRetrieval; begin - GetProcedureAddress(_CryptInstallCancelRetrieval, crypt32, 'CryptInstallCancelRetrieval'); + GetProcedureAddress(_CryptInstallCancelRetrieval, cryptnet, 'CryptInstallCancelRetrieval'); asm MOV ESP, EBP POP EBP @@ -19271,7 +19272,7 @@ function CryptUninstallCancelRetrieval; begin - GetProcedureAddress(_CryptUninstallCancelRetrieval, crypt32, 'CryptUninstallCancelRetrieval'); + GetProcedureAddress(_CryptUninstallCancelRetrieval, cryptnet, 'CryptUninstallCancelRetrieval'); asm MOV ESP, EBP POP EBP @@ -19284,7 +19285,7 @@ function CryptCancelAsyncRetrieval; begin - GetProcedureAddress(_CryptCancelAsyncRetrieval, crypt32, 'CryptCancelAsyncRetrieval'); + GetProcedureAddress(_CryptCancelAsyncRetrieval, cryptnet, 'CryptCancelAsyncRetrieval'); asm MOV ESP, EBP POP EBP @@ -19297,7 +19298,7 @@ function CryptGetObjectUrl; begin - GetProcedureAddress(_CryptGetObjectUrl, crypt32, 'CryptGetObjectUrl'); + GetProcedureAddress(_CryptGetObjectUrl, cryptnet, 'CryptGetObjectUrl'); asm MOV ESP, EBP POP EBP @@ -19310,7 +19311,7 @@ function CryptGetTimeValidObject; begin - GetProcedureAddress(_CryptGetTimeValidObject, crypt32, 'CryptGetTimeValidObject'); + GetProcedureAddress(_CryptGetTimeValidObject, cryptnet, 'CryptGetTimeValidObject'); asm MOV ESP, EBP POP EBP @@ -19323,7 +19324,7 @@ function CryptFlushTimeValidObject; begin - GetProcedureAddress(_CryptFlushTimeValidObject, crypt32, 'CryptFlushTimeValidObject'); + GetProcedureAddress(_CryptFlushTimeValidObject, cryptnet, 'CryptFlushTimeValidObject'); asm MOV ESP, EBP POP EBP @@ -19334,7 +19335,7 @@ var _CryptProtectData: Pointer; -function CryptProtectData; +function CryptProtectData; begin GetProcedureAddress(_CryptProtectData, crypt32, 'CryptProtectData'); asm @@ -19609,7 +19610,7 @@ function CryptGenKey; external advapi32 name 'CryptGenKey'; function CryptDeriveKey; external advapi32 name 'CryptDeriveKey'; function CryptDestroyKey; external advapi32 name 'CryptDestroyKey'; -function CryptSetKeyParam; external crypt32 name 'CryptSetKeyParam'; +function CryptSetKeyParam; external advapi32 name 'CryptSetKeyParam'; function CryptGetKeyParam; external advapi32 name 'CryptGetKeyParam'; function CryptSetHashParam; external advapi32 name 'CryptSetHashParam'; function CryptGetHashParam; external advapi32 name 'CryptGetHashParam'; @@ -19835,15 +19836,15 @@ function CryptSetAsyncParam; external crypt32 name 'CryptSetAsyncParam'; function CryptGetAsyncParam; external crypt32 name 'CryptGetAsyncParam'; function CryptCloseAsyncHandle; external crypt32 name 'CryptCloseAsyncHandle'; -function CryptRetrieveObjectByUrlA; external crypt32 name 'CryptRetrieveObjectByUrlA'; -function CryptRetrieveObjectByUrlW; external crypt32 name 'CryptRetrieveObjectByUrlW'; -function CryptRetrieveObjectByUrl; external crypt32 name 'CryptRetrieveObjectByUrl' + AWSuffix; -function CryptInstallCancelRetrieval; external crypt32 name 'CryptInstallCancelRetrieval'; -function CryptUninstallCancelRetrieval; external crypt32 name 'CryptUninstallCancelRetrieval'; -function CryptCancelAsyncRetrieval; external crypt32 name 'CryptCancelAsyncRetrieval'; -function CryptGetObjectUrl; external crypt32 name 'CryptGetObjectUrl'; -function CryptGetTimeValidObject; external crypt32 name 'CryptGetTimeValidObject'; -function CryptFlushTimeValidObject; external crypt32 name 'CryptFlushTimeValidObject'; +function CryptRetrieveObjectByUrlA; external cryptnet name 'CryptRetrieveObjectByUrlA'; +function CryptRetrieveObjectByUrlW; external cryptnet name 'CryptRetrieveObjectByUrlW'; +function CryptRetrieveObjectByUrl; external cryptnet name 'CryptRetrieveObjectByUrl' + AWSuffix; +function CryptInstallCancelRetrieval; external cryptnet name 'CryptInstallCancelRetrieval'; +function CryptUninstallCancelRetrieval; external cryptnet name 'CryptUninstallCancelRetrieval'; +function CryptCancelAsyncRetrieval; external cryptnet name 'CryptCancelAsyncRetrieval'; +function CryptGetObjectUrl; external cryptnet name 'CryptGetObjectUrl'; +function CryptGetTimeValidObject; external cryptnet name 'CryptGetTimeValidObject'; +function CryptFlushTimeValidObject; external cryptnet name 'CryptFlushTimeValidObject'; function CryptProtectData; external crypt32 name 'CryptProtectData'; function CryptUnprotectData; external crypt32 name 'CryptUnprotectData'; function CertCreateSelfSignCertificate; external crypt32 name 'CertCreateSelfSignCertificate'; Modified: jwapi/trunk/Win32API/JwaWinDLLNames.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinDLLNames.pas 2007-12-07 23:18:52 UTC (rev 81) +++ jwapi/trunk/Win32API/JwaWinDLLNames.pas 2007-12-09 17:24:48 UTC (rev 82) @@ -61,6 +61,7 @@ credapi = 'advapi32.dll'; credui = 'credui.dll'; crypt32 = 'crypt32.dll'; + cryptnet = 'cryptnet.dll'; cryptuiapi = 'cryptui.dll'; dhcpapi = 'dhcpcsvc.dll'; dhcplib = 'dhcpsapi.dll'; Modified: jwapi/trunk/Win32API/JwaWinVer.pas =================================================================== --- jwapi/trunk/Win32API/JwaWinVer.pas 2007-12-07 23:18:52 UTC (rev 81) +++ jwapi/trunk/Win32API/JwaWinVer.pas 2007-12-09 17:24:48 UTC (rev 82) @@ -352,10 +352,9 @@ {$ENDIF JWA_OMIT_SECTIONS} {$IFNDEF JWA_INTERFACESECTION} -const - Version = 'version.dll'; - {$IFNDEF JWA_INCLUDEMODE} +const + versionlib = 'version.dll'; {$IFDEF UNICODE} AWSuffix = 'W'; {$ELSE} @@ -370,7 +369,7 @@ function VerFindFileA; begin - GetProcedureAddress(_VerFindFileA, Version, 'VerFindFileA'); + GetProcedureAddress(_VerFindFileA, versionlib, 'VerFindFileA'); asm MOV ESP, EBP POP EBP @@ -383,7 +382,7 @@ function VerFindFileW; begin - GetProcedureAddress(_VerFindFileW, Version, 'VerFindFileW'); + GetProcedureAddress(_VerFindFileW, versionlib, 'VerFindFileW'); asm MOV ESP, EBP POP EBP @@ -396,7 +395,7 @@ function VerFindFile; begin - GetProcedureAddress(_VerFindFile, Version, 'VerFindFile' + AWSuffix); + GetProcedureAddress(_VerFindFile, versionlib, 'VerFindFile' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -409,7 +408,7 @@ function VerInstallFileA; begin - GetProcedureAddress(_VerInstallFileA, Version, 'VerInstallFileA'); + GetProcedureAddress(_VerInstallFileA, versionlib, 'VerInstallFileA'); asm MOV ESP, EBP POP EBP @@ -422,7 +421,7 @@ function VerInstallFileW; begin - GetProcedureAddress(_VerInstallFileW, Version, 'VerInstallFileW'); + GetProcedureAddress(_VerInstallFileW, versionlib, 'VerInstallFileW'); asm MOV ESP, EBP POP EBP @@ -435,7 +434,7 @@ function VerInstallFile; begin - GetProcedureAddress(_VerInstallFile, Version, 'VerInstallFile' + AWSuffix); + GetProcedureAddress(_VerInstallFile, versionlib, 'VerInstallFile' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -448,7 +447,7 @@ function GetFileVersionInfoSizeA; begin - GetProcedureAddress(_GetFileVersionInfoSizeA, Version, 'GetFileVersionInfoSizeA'); + GetProcedureAddress(_GetFileVersionInfoSizeA, versionlib, 'GetFileVersionInfoSizeA'); asm MOV ESP, EBP POP EBP @@ -461,7 +460,7 @@ function GetFileVersionInfoSizeW; begin - GetProcedureAddress(_GetFileVersionInfoSizeW, Version, 'GetFileVersionInfoSizeW'); + GetProcedureAddress(_GetFileVersionInfoSizeW, versionlib, 'GetFileVersionInfoSizeW'); asm MOV ESP, EBP POP EBP @@ -474,7 +473,7 @@ function GetFileVersionInfoSize; begin - GetProcedureAddress(_GetFileVersionInfoSize, Version, 'GetFileVersionInfoSize' + AWSuffix); + GetProcedureAddress(_GetFileVersionInfoSize, versionlib, 'GetFileVersionInfoSize' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -487,7 +486,7 @@ function GetFileVersionInfoA; begin - GetProcedureAddress(_GetFileVersionInfoA, Version, 'GetFileVersionInfoA'); + GetProcedureAddress(_GetFileVersionInfoA, versionlib, 'GetFileVersionInfoA'); asm MOV ESP, EBP POP EBP @@ -500,7 +499,7 @@ function GetFileVersionInfoW; begin - GetProcedureAddress(_GetFileVersionInfoW, Version, 'GetFileVersionInfoW'); + GetProcedureAddress(_GetFileVersionInfoW, versionlib, 'GetFileVersionInfoW'); asm MOV ESP, EBP POP EBP @@ -513,7 +512,7 @@ function GetFileVersionInfo; begin - GetProcedureAddress(_GetFileVersionInfo, Version, 'GetFileVersionInfo' + AWSuffix); + GetProcedureAddress(_GetFileVersionInfo, versionlib, 'GetFileVersionInfo' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -526,7 +525,7 @@ function VerLanguageNameA; begin - GetProcedureAddress(_VerLanguageNameA, Version, 'VerLanguageNameA'); + GetProcedureAddress(_VerLanguageNameA, versionlib, 'VerLanguageNameA'); asm MOV ESP, EBP POP EBP @@ -539,7 +538,7 @@ function VerLanguageNameW; begin - GetProcedureAddress(_VerLanguageNameW, Version, 'VerLanguageNameW'); + GetProcedureAddress(_VerLanguageNameW, versionlib, 'VerLanguageNameW'); asm MOV ESP, EBP POP EBP @@ -552,7 +551,7 @@ function VerLanguageName; begin - GetProcedureAddress(_VerLanguageName, Version, 'VerLanguageName' + AWSuffix); + GetProcedureAddress(_VerLanguageName, versionlib, 'VerLanguageName' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -565,7 +564,7 @@ function VerQueryValueA; begin - GetProcedureAddress(_VerQueryValueA, Version, 'VerQueryValueA'); + GetProcedureAddress(_VerQueryValueA, versionlib, 'VerQueryValueA'); asm MOV ESP, EBP POP EBP @@ -578,7 +577,7 @@ function VerQueryValueW; begin - GetProcedureAddress(_VerQueryValueW, Version, 'VerQueryValueW'); + GetProcedureAddress(_VerQueryValueW, versionlib, 'VerQueryValueW'); asm MOV ESP, EBP POP EBP @@ -591,7 +590,7 @@ function VerQueryValue; begin - GetProcedureAddress(_VerQueryValue, Version, 'VerQueryValue' + AWSuffix); + GetProcedureAddress(_VerQueryValue, versionlib, 'VerQueryValue' + AWSuffix); asm MOV ESP, EBP POP EBP @@ -601,24 +600,24 @@ {$ELSE} -function VerFindFileA; external Version name 'VerFindFileA'; -function VerFindFileW; external Version name 'VerFindFileW'; -function VerFindFile; external Version name 'VerFindFile' + AWSuffix; -function VerInstallFileA; external Version name 'VerInstallFileA'; -function VerInstallFileW; external Version name 'VerInstallFileW'; -function VerInstallFile; external Version name 'VerInstallFile' + AWSuffix; -function GetFileVersionInfoSizeA; external Version name 'GetFileVersionInfoSizeA'; -function GetFileVersionInfoSizeW; external Version name 'GetFileVersionInfoSizeW'; -function GetFileVersionInfoSize; external Version name 'GetFileVersionInfoSize' + AWSuffix; -function GetFileVersionInfoA; external Version name 'GetFileVersionInfoA'; -function GetFileVersionInfoW; external Version name 'GetFileVersionInfoW'; -function GetFileVersionInfo; external Version name 'GetFileVersionInfo' + AWSuffix; -function VerLanguageNameA; external Version name 'VerLanguageNameA'; -function VerLanguageNameW; external Version name 'VerLanguageNameW'; -function VerLanguageName; external Version name 'VerLanguageName' + AWSuffix; -function VerQueryValueA; external Version name 'VerQueryValueA'; -function VerQueryValueW; external Version name 'VerQueryValueW'; -function VerQueryValue; external Version name 'VerQueryValue' + AWSuffix; +function VerFindFileA; external versionlib name 'VerFindFileA'; +function VerFindFileW; external versionlib name 'VerFindFileW'; +function VerFindFile; external versionlib name 'VerFindFile' + AWSuffix; +function VerInstallFileA; external versionlib name 'VerInstallFileA'; +function VerInstallFileW; external versionlib name 'VerInstallFileW'; +function VerInstallFile; external versionlib name 'VerInstallFile' + AWSuffix; +function GetFileVersionInfoSizeA; external versionlib name 'GetFileVersionInfoSizeA'; +function GetFileVersionInfoSizeW; external versionlib name 'GetFileVersionInfoSizeW'; +function GetFileVersionInfoSize; external versionlib name 'GetFileVersionInfoSize' + AWSuffix; +function GetFileVersionInfoA; external versionlib name 'GetFileVersionInfoA'; +function GetFileVersionInfoW; external versionlib name 'GetFileVersionInfoW'; +function GetFileVersionInfo; external versionlib name 'GetFileVersionInfo' + AWSuffix; +function VerLanguageNameA; external versionlib name 'VerLanguageNameA'; +function VerLanguageNameW; external versionlib name 'VerLanguageNameW'; +function VerLanguageName; external versionlib name 'VerLanguageName' + AWSuffix; +function VerQueryValueA; external versionlib name 'VerQueryValueA'; +function VerQueryValueW; external versionlib name 'VerQueryValueW'; +function VerQueryValue; external versionlib name 'VerQueryValue' + AWSuffix; {$ENDIF DYNAMIC_LINK} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dez...@us...> - 2007-12-07 23:18:54
|
Revision: 81 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=81&view=rev Author: dezipaitor Date: 2007-12-07 15:18:52 -0800 (Fri, 07 Dec 2007) Log Message: ----------- show what is usable Modified Paths: -------------- jwscl/trunk/examples/examples.txt Modified: jwscl/trunk/examples/examples.txt =================================================================== --- jwscl/trunk/examples/examples.txt 2007-12-07 20:15:11 UTC (rev 80) +++ jwscl/trunk/examples/examples.txt 2007-12-07 23:18:52 UTC (rev 81) @@ -0,0 +1,3 @@ +The following examples are not usable due to developing: +-PrivateSD +-XP Elevation \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |