[Jedi-apilib+wscl-svn] SF.net SVN: jedi-apilib:[755] jwscl/trunk/examples
Brought to you by:
dezipaitor,
rweijnen
From: <dez...@us...> - 2009-03-10 16:19:13
|
Revision: 755 http://jedi-apilib.svn.sourceforge.net/jedi-apilib/?rev=755&view=rev Author: dezipaitor Date: 2009-03-10 16:19:00 +0000 (Tue, 10 Mar 2009) Log Message: ----------- +added TakeControl example Added Paths: ----------- jwscl/trunk/examples/TakeControl/ jwscl/trunk/examples/TakeControl/TakeControl.dpr jwscl/trunk/examples/TakeControl/TakeControl.dproj jwscl/trunk/examples/TakeControl/UMainForm.dfm jwscl/trunk/examples/TakeControl/UMainForm.pas Added: jwscl/trunk/examples/TakeControl/TakeControl.dpr =================================================================== --- jwscl/trunk/examples/TakeControl/TakeControl.dpr (rev 0) +++ jwscl/trunk/examples/TakeControl/TakeControl.dpr 2009-03-10 16:19:00 UTC (rev 755) @@ -0,0 +1,15 @@ +program TakeControl; + +uses + ExceptionLog, + Forms, + UMainForm in 'UMainForm.pas' {FormMain}; + +{$R *.res} + +begin + Application.Initialize; + Application.MainFormOnTaskbar := True; + Application.CreateForm(TFormMain, FormMain); + Application.Run; +end. Added: jwscl/trunk/examples/TakeControl/TakeControl.dproj =================================================================== --- jwscl/trunk/examples/TakeControl/TakeControl.dproj (rev 0) +++ jwscl/trunk/examples/TakeControl/TakeControl.dproj 2009-03-10 16:19:00 UTC (rev 755) @@ -0,0 +1,596 @@ + <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <ProjectGuid>{D09F8AC6-8256-47BA-B25B-F9B15A578EDF}</ProjectGuid> + <ProjectVersion>12.0</ProjectVersion> + <MainSource>TakeControl.dpr</MainSource> + <Config Condition="'$(Config)'==''">Release</Config> + <DCC_DCCCompiler>DCC32</DCC_DCCCompiler> + </PropertyGroup> + <PropertyGroup Condition="'$(Config)'=='Basis' or '$(Base)'!=''"> + <Base>true</Base> + </PropertyGroup> + <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''"> + <Cfg_1>true</Cfg_1> + <CfgParent>Base</CfgParent> + <Base>true</Base> + </PropertyGroup> + <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''"> + <Cfg_2>true</Cfg_2> + <CfgParent>Base</CfgParent> + <Base>true</Base> + </PropertyGroup> + <PropertyGroup Condition="'$(Base)'!=''"> + <DCC_UsePackage>vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;IndyCore;IndySystem;IndyProtocols;xmlrtl;inet;intrawebdb_100_120;Intraweb_100_120;vclie;websnap;webdsnap;inetdbbde;inetdbxpress;soaprtl;dsnap;DbxCommonDriver;DbxClientDriver;DBXInterBaseDriver;DBXMySQLDriver;dbexpress;dbxcds;DBXSybaseASEDriver;DBXSybaseASADriver;DBXOracleDriver;DBXMSSQLDriver;DBXInformixDriver;DBXDb2Driver;dsnapcon;TeeUI;TeeDB;Tee;adortl;VclSmp;DataSnapIndy10ServerTransport;DataSnapProviderClient;DataSnapServer;CoolTrayIcon_D6plus;PngComponentsD12D;Package1;lmdrtl9rt_120;lmdplugin1rt_120;lmdrtlx9rt_120;lmdcore9rt_120;RARComponent;Jcl;JclVcl;JvCoreD12R;JvSystemD12R;JvStdCtrlsD12R;JvAppFrmD12R;JvBandsD12R;JvDBD12R;JvDlgsD12R;JvBDED12R;JvCmpD12R;JvCryptD12R;JvCtrlsD12R;JvCustomD12R;JvDockingD12R;JvDotNetCtrlsD12R;JvEDID12R;JvGlobusD12R;JvHMID12R;JvInterpreterD12R;JvJansD12R;JvManagedThreadsD12R;JvMMD12R;JvNetD12R;JvPageCompsD12R;JvPluginD12R;JvPrintPreviewD12R;JvRuntimeDesignD12R;JvTimeFrameworkD12R;JvValidatorsD12R;JvWizardD12R;JvXPCtrlsD12R;VirtualTreesD12;skinpackd2009</DCC_UsePackage> + <DCC_Optimize>false</DCC_Optimize> + <DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias> + <DCC_DependencyCheckOutputName>TakeControl.exe</DCC_DependencyCheckOutputName> + <DCC_ImageBase>00400000</DCC_ImageBase> + <DCC_Platform>x86</DCC_Platform> + </PropertyGroup> + <PropertyGroup Condition="'$(Cfg_1)'!=''"> + <DCC_MapFile>3</DCC_MapFile> + <DCC_ImportedDataReferences>false</DCC_ImportedDataReferences> + <DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> + <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols> + <DCC_Define>RELEASE;EUREKALOG;EUREKALOG_VER6;$(DCC_Define)</DCC_Define> + <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo> + </PropertyGroup> + <PropertyGroup Condition="'$(Cfg_2)'!=''"> + <DCC_MapFile>3</DCC_MapFile> + <DCC_Define>DEBUG;EUREKALOG;EUREKALOG_VER6;$(DCC_Define)</DCC_Define> + </PropertyGroup> + <ItemGroup> + <DelphiCompile Include="TakeControl.dpr"> + <MainSource>MainSource</MainSource> + </DelphiCompile> + <DCCReference Include="UMainForm.pas"> + <Form>FormMain</Form> + </DCCReference> + <BuildConfiguration Include="Basis"> + <Key>Base</Key> + </BuildConfiguration> + <BuildConfiguration Include="Debug"> + <Key>Cfg_2</Key> + <CfgParent>Base</CfgParent> + </BuildConfiguration> + <BuildConfiguration Include="Release"> + <Key>Cfg_1</Key> + <CfgParent>Base</CfgParent> + </BuildConfiguration> + </ItemGroup> + <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/> + <ProjectExtensions> + <Borland.Personality>Delphi.Personality.12</Borland.Personality> + <Borland.ProjectType/> + <BorlandProject> + <Delphi.Personality> + <Source> + <Source Name="MainSource">TakeControl.dpr</Source> + </Source> + <Parameters> + <Parameters Name="UseLauncher">False</Parameters> + <Parameters Name="LoadAllSymbols">True</Parameters> + <Parameters Name="LoadUnspecifiedSymbols">False</Parameters> + </Parameters> + <VersionInfo> + <VersionInfo Name="IncludeVerInfo">True</VersionInfo> + <VersionInfo Name="AutoIncBuild">False</VersionInfo> + <VersionInfo Name="MajorVer">0</VersionInfo> + <VersionInfo Name="MinorVer">7</VersionInfo> + <VersionInfo Name="Release">0</VersionInfo> + <VersionInfo Name="Build">0</VersionInfo> + <VersionInfo Name="Debug">False</VersionInfo> + <VersionInfo Name="PreRelease">True</VersionInfo> + <VersionInfo Name="Special">False</VersionInfo> + <VersionInfo Name="Private">False</VersionInfo> + <VersionInfo Name="DLL">False</VersionInfo> + <VersionInfo Name="Locale">1031</VersionInfo> + <VersionInfo Name="CodePage">1252</VersionInfo> + </VersionInfo> + <VersionInfoKeys> + <VersionInfoKeys Name="CompanyName">JEDI API&WSCL</VersionInfoKeys> + <VersionInfoKeys Name="FileDescription"/> + <VersionInfoKeys Name="FileVersion">0.7.0.0</VersionInfoKeys> + <VersionInfoKeys Name="InternalName"/> + <VersionInfoKeys Name="LegalCopyright">Christian Wimmer 2009</VersionInfoKeys> + <VersionInfoKeys Name="LegalTrademarks"/> + <VersionInfoKeys Name="OriginalFilename">TakeControl.exe</VersionInfoKeys> + <VersionInfoKeys Name="ProductName"/> + <VersionInfoKeys Name="ProductVersion">0.7.0.0</VersionInfoKeys> + <VersionInfoKeys Name="Comments"/> + </VersionInfoKeys> + <Excluded_Packages> + <Excluded_Packages Name="$(BDS)\bin\bcboffice2k120.bpl">CodeGear C++Builder Office 2000-Server-Package</Excluded_Packages> + <Excluded_Packages Name="$(BDS)\bin\bcbofficexp120.bpl">CodeGear C++Builder Office XP-Server-Package</Excluded_Packages> + <Excluded_Packages Name="$(BDS)\bin\dcloffice2k120.bpl">Microsoft Office 2000 Beispiele fur gekapselte Komponenten fur Automation Server</Excluded_Packages> + <Excluded_Packages Name="$(BDS)\bin\dclofficexp120.bpl">Microsoft Office XP Beispiele fur gekapselte Komponenten fur Automation Server</Excluded_Packages> + </Excluded_Packages> + </Delphi.Personality> + </BorlandProject> + <ProjectFileVersion>12</ProjectFileVersion> + </ProjectExtensions> + </Project> + +<!-- EurekaLog First Line +[Exception Log] +EurekaLog Version=6017 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +SMTP From=eur...@em... +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +TerminateBtn Operation=2 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=2 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +ProxyURL= +ProxyUser= +ProxyPassword= +ProxyPort=8080 +TrakerUser= +TrakerPassword= +TrakerAssignTo= +TrakerProject= +TrakerCategory= +TrakerTrialID= +ZipPassword= +PreBuildEvent= +PostSuccessfulBuildEvent= +PostFailureBuildEvent= +ExceptionDialogType=3 +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesAndProcessesSections=1 +loSaveAssemblerAndCPUSections=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soAppUpTime=1 +soExcDate=1 +soExcAddress=1 +soExcModuleName=1 +soExcModuleVersion=1 +soExcType=1 +soExcMessage=1 +soExcID=1 +soExcCount=1 +soExcStatus=1 +soExcNote=1 +soUserID=1 +soUserName=1 +soUserEmail=1 +soUserPrivileges=1 +soUserCompany=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soCmpDisplayDPI=1 +soCmpVideoCard=1 +soCmpPrinter=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soOSCharset=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +soCustomData=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndAddComputerNameInFileName=0 +edoSendErrorReportChecked=0 +edoAttachScreenshotChecked=0 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +edoShowSendErrorReportOption=0 +edoShowAttachScreenshotOption=0 +edoShowCustomButton=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoDoNotStoreProcNames=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +boHandleSafeCallExceptions=1 +boCallRTLExceptionEvent=0 +boCatchHandledExceptions=0 +loCatchLeaks=0 +loGroupsSonLeaks=1 +loHideBorlandLeaks=1 +loFreeAllLeaks=1 +loCatchLeaksExceptions=1 +cfoReduceFileSize=1 +cfoCheckFileCorruption=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtErrorMsgCaption=1 +mtErrorMsgCaption0="Error." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error occurred" +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_ProcessesCaption=1 +mtDialog_ProcessesCaption0="Processes" +Count mtDialog_ProcessesHeader=1 +mtDialog_ProcessesHeader0="Processes Information" +Count mtDialog_AsmCaption=1 +mtDialog_AsmCaption0="Assembler" +Count mtDialog_AsmHeader=1 +mtDialog_AsmHeader0="Assembler Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_CustomButtonCaption=1 +mtDialog_CustomButtonCaption0="%26Help" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtMSDialog_ErrorMsgCaption=1 +mtMSDialog_ErrorMsgCaption0="The application has encountered a problem. We are sorry for the inconvenience." +Count mtMSDialog_RestartCaption=1 +mtMSDialog_RestartCaption0="Restart application." +Count mtMSDialog_TerminateCaption=1 +mtMSDialog_TerminateCaption0="Terminate application." +Count mtMSDialog_PleaseCaption=1 +mtMSDialog_PleaseCaption0="Please tell us about this problem." +Count mtMSDialog_DescriptionCaption=1 +mtMSDialog_DescriptionCaption0="We have created an error report that you can send to us. We will treat this report as confidential and anonymous." +Count mtMSDialog_SeeDetailsCaption=1 +mtMSDialog_SeeDetailsCaption0="To see what data the error report contains," +Count mtMSDialog_SeeClickCaption=1 +mtMSDialog_SeeClickCaption0="click here." +Count mtMSDialog_HowToReproduceCaption=1 +mtMSDialog_HowToReproduceCaption0="What were you doing when the problem happened (optional)?" +Count mtMSDialog_EmailCaption=1 +mtMSDialog_EmailCaption0="Email address (optional):" +Count mtMSDialog_SendButtonCaption=1 +mtMSDialog_SendButtonCaption0="%26Send Error Report" +Count mtMSDialog_NoSendButtonCaption=1 +mtMSDialog_NoSendButtonCaption0="%26Don't Send" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_AppUpTime=1 +mtLog_AppUpTime0="Up Time" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModuleName=1 +mtLog_ExcModuleName0="Module Name" +Count mtLog_ExcModuleVersion=1 +mtLog_ExcModuleVersion0="Module Version" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ExcID=1 +mtLog_ExcID0="ID" +Count mtLog_ExcCount=1 +mtLog_ExcCount0="Count" +Count mtLog_ExcStatus=1 +mtLog_ExcStatus0="Status" +Count mtLog_ExcNote=1 +mtLog_ExcNote0="Note" +Count mtLog_UserHeader=1 +mtLog_UserHeader0="User" +Count mtLog_UserID=1 +mtLog_UserID0="ID" +Count mtLog_UserName=1 +mtLog_UserName0="Name" +Count mtLog_UserEmail=1 +mtLog_UserEmail0="Email" +Count mtLog_UserCompany=1 +mtLog_UserCompany0="Company" +Count mtLog_UserPrivileges=1 +mtLog_UserPrivileges0="Privileges" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_CmpDisplayDPI=1 +mtLog_CmpDisplayDPI0="Display DPI" +Count mtLog_CmpVideoCard=1 +mtLog_CmpVideoCard0="Video Card" +Count mtLog_CmpPrinter=1 +mtLog_CmpPrinter0="Printer" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_OSCharset=1 +mtLog_OSCharset0="Charset" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtCallStack_LeakCaption=1 +mtCallStack_LeakCaption0="Memory Leak" +Count mtCallStack_LeakData=1 +mtCallStack_LeakData0="Data" +Count mtCallStack_LeakType=1 +mtCallStack_LeakType0="Type" +Count mtCallStack_LeakSize=1 +mtCallStack_LeakSize0="Total size" +Count mtCallStack_LeakCount=1 +mtCallStack_LeakCount0="Count" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Login=1 +mtSendDialog_Login0="Login..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtSendDialog_Sent=1 +mtSendDialog_Sent0="Message sent." +Count mtSendDialog_SelectProject=1 +mtSendDialog_SelectProject0="Select project..." +Count mtSendDialog_Searching=1 +mtSendDialog_Searching0="Searching..." +Count mtSendDialog_Modifying=1 +mtSendDialog_Modifying0="Modifying..." +Count mtSendDialog_Disconnecting=1 +mtSendDialog_Disconnecting0="Disconnecting..." +Count mtSendDialog_Disconnected=1 +mtSendDialog_Disconnected0="Disconnected." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtProcesses_ID=1 +mtProcesses_ID0="ID" +Count mtProcesses_Name=1 +mtProcesses_Name0="Name" +Count mtProcesses_Description=1 +mtProcesses_Description0="Description" +Count mtProcesses_Version=1 +mtProcesses_Version0="Version" +Count mtProcesses_Memory=1 +mtProcesses_Memory0="Memory" +Count mtProcesses_Priority=1 +mtProcesses_Priority0="Priority" +Count mtProcesses_Threads=1 +mtProcesses_Threads0="Threads" +Count mtProcesses_Path=1 +mtProcesses_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." +Count mtSend_BugClosedMsg=2 +mtSend_BugClosedMsg0="These BUG is just closed." +mtSend_BugClosedMsg1="Contact the program support to obtain an update." +Count mtSend_UnknownErrorMsg=1 +mtSend_UnknownErrorMsg0="Unknown error." +Count mtSend_InvalidLoginMsg=1 +mtSend_InvalidLoginMsg0="Invalid login request." +Count mtSend_InvalidSearchMsg=1 +mtSend_InvalidSearchMsg0="Invalid search request." +Count mtSend_InvalidSelectionMsg=1 +mtSend_InvalidSelectionMsg0="Invalid selection request." +Count mtSend_InvalidInsertMsg=1 +mtSend_InvalidInsertMsg0="Invalid insert request." +Count mtSend_InvalidModifyMsg=1 +mtSend_InvalidModifyMsg0="Invalid modify request." +Count mtFileCrackedMsg=2 +mtFileCrackedMsg0="This file is cracked." +mtFileCrackedMsg1="The application will be closed." +Count mtException_LeakMultiFree=1 +mtException_LeakMultiFree0="Multi Free memory leak." +Count mtException_LeakMemoryOverrun=1 +mtException_LeakMemoryOverrun0="Memory Overrun leak." +Count mtException_AntiFreeze=1 +mtException_AntiFreeze0="The application seems to be frozen." +Count mtInvalidEmailMsg=1 +mtInvalidEmailMsg0="Invalid email." +TextsCollection= +EurekaLog Last Line --> Added: jwscl/trunk/examples/TakeControl/UMainForm.dfm =================================================================== --- jwscl/trunk/examples/TakeControl/UMainForm.dfm (rev 0) +++ jwscl/trunk/examples/TakeControl/UMainForm.dfm 2009-03-10 16:19:00 UTC (rev 755) @@ -0,0 +1,196 @@ +object FormMain: TFormMain + Left = 0 + Top = 0 + Caption = 'TakeControl over your files' + ClientHeight = 458 + ClientWidth = 475 + Color = clBtnFace + Constraints.MinHeight = 400 + Constraints.MinWidth = 300 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate + OnDestroy = FormDestroy + OnShow = FormShow + DesignSize = ( + 475 + 458) + PixelsPerInch = 96 + TextHeight = 13 + object LabelStatus: TLabel + Left = 24 + Top = 176 + Width = 56 + Height = 13 + Caption = 'LabelStatus' + end + object LabelErrors: TLabel + Left = 352 + Top = 134 + Width = 33 + Height = 13 + Anchors = [akTop, akRight] + Caption = 'Errors:' + end + object LabelFileCount: TLabel + Left = 352 + Top = 153 + Width = 25 + Height = 13 + Anchors = [akTop, akRight] + Caption = 'Files:' + end + object Label1: TLabel + Left = 26 + Top = 15 + Width = 164 + Height = 13 + AutoSize = False + Caption = 'Add one extension separated by ;' + end + object JvWaitingGradient1: TJvWaitingGradient + Left = 26 + Top = 160 + Width = 73 + GradientWidth = 50 + end + object Label2: TLabel + Left = 24 + Top = 199 + Width = 91 + Height = 13 + Caption = 'File copy progress:' + end + object EditSource: TEdit + Left = 23 + Top = 42 + Width = 349 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'EditSource' + ExplicitWidth = 393 + end + object ButtonBrowseSource: TButton + Left = 387 + Top = 40 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Browse' + TabOrder = 1 + OnClick = ButtonBrowseSourceClick + ExplicitLeft = 422 + end + object ButtonBrowseTarget: TButton + Left = 387 + Top = 96 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Browse' + TabOrder = 2 + OnClick = ButtonBrowseTargetClick + ExplicitLeft = 422 + end + object EditTarget: TEdit + Left = 23 + Top = 98 + Width = 349 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 3 + Text = 'Edit1' + ExplicitWidth = 393 + end + object MemoStatus: TMemo + Left = 24 + Top = 222 + Width = 440 + Height = 187 + Anchors = [akLeft, akTop, akRight, akBottom] + ReadOnly = True + ScrollBars = ssBoth + TabOrder = 4 + WordWrap = False + end + object ButtonRun: TButton + Left = 24 + Top = 125 + Width = 75 + Height = 25 + Caption = 'Run' + TabOrder = 5 + OnClick = ButtonRunClick + end + object EditMask: TEdit + Left = 196 + Top = 8 + Width = 266 + Height = 21 + Hint = + 'Set some file extentions separated by semicolon ";" like .mpg;.w' + + 'mv' + Anchors = [akLeft, akTop, akRight] + ParentShowHint = False + ShowHint = True + TabOrder = 6 + Text = '.mpg;.wmv' + end + object ProgressBar1: TProgressBar + Left = 121 + Top = 199 + Width = 346 + Height = 17 + Anchors = [akLeft, akTop, akRight] + TabOrder = 7 + end + object CheckBoxCopy: TCheckBox + Left = 24 + Top = 69 + Width = 97 + Height = 17 + Hint = + 'If checked, the files won'#39't be moved but just copied to the targ' + + 'et. Security Descriptors of source files won'#39't be changed.' + Caption = 'Copy files only' + ParentShowHint = False + ShowHint = True + TabOrder = 8 + end + object CheckBoxListOnly: TCheckBox + Left = 105 + Top = 129 + Width = 176 + Height = 17 + Hint = + 'If checked, t|If checked, the Run won'#39't change anything! It just' + + ' counts the number of files found.' + Caption = 'List Run Only (no modification)' + Checked = True + ParentShowHint = False + ShowHint = True + State = cbChecked + TabOrder = 9 + OnClick = CheckBoxListOnlyClick + end + object Button1: TButton + Left = 387 + Top = 425 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = 'Info' + TabOrder = 10 + OnClick = Button1Click + end + object JvBrowseForFolderDialog1: TJvBrowseForFolderDialog + Options = [odOnlyDirectory, odStatusAvailable, odEditBox, odNewDialogStyle, odValidate] + Left = 312 + Top = 16 + end +end Added: jwscl/trunk/examples/TakeControl/UMainForm.pas =================================================================== --- jwscl/trunk/examples/TakeControl/UMainForm.pas (rev 0) +++ jwscl/trunk/examples/TakeControl/UMainForm.pas 2009-03-10 16:19:00 UTC (rev 755) @@ -0,0 +1,423 @@ +{ +This demo moves or copies files (found by a filemask) from a source to +target directory. If the application cannot access the file, it takes +the ownership and rearranges the security to acess the file (only in move mode!). +The directory structure will be remained so the targets can be copied back. +If you copy them back, usually the files will get back their original +security descriptor, because they are not marked as protected. But it does not +mean that the owner of the file is changed. It will remain the group Administrators. +In this way, only Administrators can access the files. Previously it was +"Trusted Installer" only. + +Use on your own risk. + +Dual-License: MPL 1.1 or GPL 3 (see JWA/JWSCL headers) + +Original author is: Christian Wimmer +This application is part of the JEDI API Project. +Visit at http://blog.delphi-jedi.net/ + +Version 1.0 +Creation date: 10.03.2009 + +} +unit UMainForm; + +interface + +uses + JwaWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, AdvFileSearch, + + JwsclTypes, + JwsclConstants, + JwsclUtils, + JwsclToken, + JwsclSecureObjects, + JwsclAcl, + JwsclKnownSid, + JwsclDescriptor, + JwsclMapping, + JwsclElevation, + JwsclExceptions, StdCtrls, JvBaseDlg, JvBrowseFolder, ComCtrls, JvExControls, + JvWaitingGradient; + +type + TFormMain = class(TForm) + JvBrowseForFolderDialog1: TJvBrowseForFolderDialog; + EditSource: TEdit; + ButtonBrowseSource: TButton; + ButtonBrowseTarget: TButton; + EditTarget: TEdit; + MemoStatus: TMemo; + ButtonRun: TButton; + LabelStatus: TLabel; + EditMask: TEdit; + ProgressBar1: TProgressBar; + LabelErrors: TLabel; + CheckBoxCopy: TCheckBox; + CheckBoxListOnly: TCheckBox; + LabelFileCount: TLabel; + Label1: TLabel; + JvWaitingGradient1: TJvWaitingGradient; + Label2: TLabel; + Button1: TButton; + procedure ButtonBrowseSourceClick(Sender: TObject); + procedure ButtonBrowseTargetClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure ButtonRunClick(Sender: TObject); + procedure CheckBoxListOnlyClick(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure FormShow(Sender: TObject); + private + { Private-Deklarationen } + fAdvFileSearch : TAdvFileSearch; + fAbort, + fIsRunning : Boolean; + LengthSource : Integer; + fFileCount, + fErrors : Integer; + fExtensions : TStringList; + public + procedure IncError; + procedure IncFile; + { Public-Deklarationen } + procedure ItemFoundEvent(ItemName : TString; ItemType : TItemType; ItemsFound : Integer); + procedure FinishedEvent(ItemsFound, msNeeded : Integer; Aborted : Boolean); + end; + +var + FormMain: TFormMain; + +implementation + +{$R *.dfm} + +procedure TFormMain.Button1Click(Sender: TObject); +begin + MessageDlg('TakeControl' + #13#10 + 'Written by Christian Wimmer @ 2009' + + #13#10 + 'Uses TAdvFileSearch, JEDI API&WSCL, JVCL and Eurekalog (sponsored)' + #13#10#13#10 + + 'Use it on your own risk!'+ #13#10#13#10 + + 'This application searches for files with a given filemask, gets full access to '+ + 'the files (by setting the right file security) and copies or moves the file to a target folder' + + #13#10 + + 'which has the same path as the source. In this way you can copy the files back.' + + #13#10+'The source folder itself won''t be changed! Target files are overwritten.'+ #13#10+ + 'The copied/moved files will not have the same security settings! The new security allows full access to your user.', mtInformation, [mbOK], 0); + +end; + +procedure TFormMain.ButtonBrowseSourceClick(Sender: TObject); +begin + JvBrowseForFolderDialog1.Directory := EditSource.Text; + if JvBrowseForFolderDialog1.Execute then + EditSource.Text := JvBrowseForFolderDialog1.Directory; +end; + +procedure TFormMain.ButtonBrowseTargetClick(Sender: TObject); +begin + JvBrowseForFolderDialog1.Directory := EditTarget.Text; + if JvBrowseForFolderDialog1.Execute then + EditTarget.Text := JvBrowseForFolderDialog1.Directory; +end; + +procedure TFormMain.ButtonRunClick(Sender: TObject); +begin + if fIsRunning then + begin + fAbort := true; + fAdvFileSearch.AbortSearch; + exit; + end; + + if fExtensions.Count = 0 then + begin + MessageDlg('Enter at least one extension.', mtError, [mbOK], 0); + exit; + end; + + EditSource.Text := Trim(IncludeTrailingBackslash(EditSource.Text)); + EditTarget.Text := Trim(IncludeTrailingBackslash(EditTarget.Text)); + + if not DirectoryExists(EditSource.Text) or + not DirectoryExists(EditTarget.Text) then + begin + MessageDlg('Source or Target folder does not exist,', mtError, [mbOK], 0); + exit; + end; + + if Comparetext(EditSource.Text, EditTarget.Text) = 0 then + begin + MessageDlg('Source and Target must not be equal.', mtError, [mbOK], 0); + exit; + end; + + if MessageDlg('Run now? DO NOT move DLL files! It may render your system useless.', mtWarning, [mbYes, mbNo], 0) <> mrYes then + exit; + + if not JwCheckAdministratorAccess and + (not CheckBoxCopy.Checked or CheckBoxCopy.Enabled) then + begin //someone is messing around + CheckBoxCopy.Checked := true; + CheckBoxCopy.Visible := false; + end; + + fIsRunning := true; + fAbort := false; + fErrors := -1; + IncError; + fFileCount := -1; + IncFile; + + ButtonRun.Caption := 'Abort'; + + + + LengthSource := Length(EditSource.Text); + + + MemoStatus.Clear; + fAdvFileSearch.StartDir := EditSource.Text; + fAdvFileSearch.IncludeSubDirs := true; + fAdvFileSearch.OnItemFound := ItemFoundEvent; + fAdvFileSearch.OnSearchFinished := FinishedEvent; + + MemoStatus.Lines.Add('Process started...'); + JvWaitingGradient1.Active := true; + + fAdvFileSearch.AdvanceSearch; +end; + + + +procedure TFormMain.CheckBoxListOnlyClick(Sender: TObject); +begin + // + ButtonBrowseTarget.Enabled := not CheckBoxListOnly.Checked; +end; + +procedure TFormMain.FormCreate(Sender: TObject); +begin + JwInitWellKnownSIDs; + + if not JwCheckAdministratorAccess then + begin + MessageDlg('The move mode is deactivated because the application was not started as admin. Copy mode won''t change the source security to get access.', + mtError, [mbOK], 0); + CheckBoxCopy.Enabled := false; + CheckBoxCopy.Checked := true; + end; + + EditSource.Text := ''; + EditTarget.Text := ''; + + fExtensions := TStringList.Create; + fExtensions.Sorted := true; + fExtensions.Delimiter := ';'; + fExtensions.DelimitedText := EditMask.Text; + + fAdvFileSearch := TAdvFileSearch.Create(self); + fIsRunning := false; + +end; + +procedure TFormMain.FormDestroy(Sender: TObject); +begin +// FreeAndNil(fAdvFileSearch); + FreeAndNil(fExtensions); +end; + +procedure TFormMain.FormShow(Sender: TObject); +begin + Button1Click(Sender); +end; + +function OnMoveFileEvent(TotalFileSize: LARGE_INTEGER; + TotalBytesTransferred: LARGE_INTEGER; + StreamSize: LARGE_INTEGER; + StreamBytesTransferred: LARGE_INTEGER; + dwStreamNumber: DWORD; + dwCallbackReason: DWORD; + hSourceFile: HANDLE; + hDestinationFile: HANDLE; + lpData: LPVOID): DWORD; stdcall; +var + Self : TFormMain absolute lpData; + Per : Integer; +begin + + try + if Self.CheckBoxCopy.Checked then + Self.LabelStatus.Caption := 'Copying file' + else + Self.LabelStatus.Caption := 'Moving file'; + + if TotalBytesTransferred.QuadPart > 0 then + begin + Per := Round((TotalBytesTransferred.QuadPart / TotalFileSize.QuadPart) * 100) ; + self.ProgressBar1.Position := Per; + end; + + Application.ProcessMessages; + except + end; + + if Self.fAbort then + result := PROGRESS_CANCEL + else + result := PROGRESS_CONTINUE; +end; + + +procedure TFormMain.IncError; +begin + Inc(fErrors); + LabelErrors.Caption := 'Errors: '+IntToStr(fErrors); + Application.ProcessMessages; +end; + +procedure TFormMain.IncFile; +begin + Inc(fFileCount); + LabelFileCount.Caption := 'Files: '+IntToStr(fFileCount); + Application.ProcessMessages; +end; + + +procedure TFormMain.ItemFoundEvent(ItemName: TString; ItemType: TItemType; + ItemsFound: Integer); + + function TakeControlOfFile : Boolean; + var SD : TJwSecurityDescriptor; + begin + result := false; + MemoStatus.Lines.Add('* Taking security control of file'); + + try + //first we try to check if we already have read and delete access + //so we don't need to do anything + SD := TJwSecureGeneralObject.GetNamedSecurityInfo(ItemNAme, SE_FILE_OBJECT, [siDaclSecurityInformation, siOwnerSecurityInformation, siGroupSecurityInformation]); + + if not TJwSecureGeneralObject.AccessCheck(SD, nil, JwaWindows.DELETE or FILE_READ_ACCESS or READ_CONTROL, TJwSecurityFileFolderMapping) then + begin + //In Copy mode, don't change SD of file! + if CheckBoxCopy.Checked then + begin + MemoStatus.Lines.Add('[Error] Access to file denied in copy mode. This won''t happen in move mode.'); + result := false; + exit; + end; + + try + TJwSecureFileObject.TakeOwnerShip(ItemName); + except + on E : EJwsclSecurityException do + begin + MemoStatus.Lines.Add('[Error] Could not take ownership.'); + IncError; + exit; + end; + end; + + SD.Free; + try + SD := TJwSecureGeneralObject.GetNamedSecurityInfo(ItemNAme, SE_FILE_OBJECT, [siDaclSecurityInformation]); + + SD.DACL.Add(TJwDiscretionaryAccessControlEntryAllow.Create(nil, [], GENERIC_ALL, JwAdministratorsSID, false)); + TJwSecureGeneralObject.SetNamedSecurityInfo(ItemName, SE_FILE_OBJECT, [siDaclSecurityInformation], SD); + except + MemoStatus.Lines.Add('[Error] Could not set file security.'); + IncError; + end; + end; + finally + SD.Free; + end; + + result := true; + end; + + procedure MoveFile; + var + Res : Boolean; + TempS, + TempDir, + NewTarget : String; + Cancel : BOOL; + begin + //remove the given source directory + TempS := Copy(ItemName, LengthSource+1, Length(ItemName)); + + if Self.CheckBoxCopy.Checked then + MemoStatus.Lines.Add('* Copying file') + else + MemoStatus.Lines.Add('* Moving file'); + + NewTarget := EditTarget.Text + TempS; + + TempDir := ExtractFileDir(NewTarget); + if not ForceDirectories(TempDir) then + begin + MemoStatus.Lines.Add('[Error] Could not create target dir.'); + IncError; + end + else + begin + if not CheckBoxCopy.Checked then + Res := JwaWindows.MoveFileWithProgress( + PChar(ItemName),//__in LPCTSTR lpExistingFileName, + PChar(NewTarget),//__in_opt LPCTSTR lpNewFileName, + @OnMoveFileEvent,//__in_opt LPPROGRESS_ROUTINE lpProgressRoutine, + Self,//__in_opt LPVOID lpData, + MOVEFILE_REPLACE_EXISTING or MOVEFILE_WRITE_THROUGH or MOVEFILE_COPY_ALLOWED//__in DWORD dwFlags + ) + else + begin + Cancel := false; + Res := JwaWindows.CopyFileEx( + PChar(ItemName),//__in LPCTSTR lpExistingFileName, + PChar(NewTarget),//__in_opt LPCTSTR lpNewFileName, + @OnMoveFileEvent,//__in_opt LPPROGRESS_ROUTINE lpProgressRoutine, + Self,//__in_opt LPVOID lpData, + Cancel, + 0//__in DWORD dwFlags + ); + end; + if not Res then + begin + MemoStatus.Lines.Add('[Error] Moving/Copying file failed.'); + IncError; + end; + end; + + end; + +var I : Integer; +begin + if fExtensions.Find(ExtractFileExt(ItemName), I) then + begin + LabelStatus.Caption := Format('File: %s - found %d',[ItemName, ItemsFound]); + MemoStatus.Lines.Add(Format('Processing: %s',[ItemName])); + + IncFile; + if not CheckBoxListOnly.Checked then + begin + if TakeControlOfFile then + MoveFile; + end; + end; + Application.ProcessMessages; +end; + +procedure TFormMain.FinishedEvent(ItemsFound, msNeeded: Integer; + Aborted: Boolean); +begin + fIsRunning := false; + ButtonRun.Caption := 'Run'; + MemoStatus.Lines.Add('***'); + MemoStatus.Lines.Add('Finished'); + JvWaitingGradient1.Active := false; +end; + +end. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |