WinSCP.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. USEFORM("forms\CustomScpExplorer.cpp", CustomScpExplorerForm);
  5. USEFORM("forms\NonVisual.cpp", NonVisualDataModule); /* TDataModule: File Type */
  6. USEFORM("forms\ScpCommander.cpp", ScpCommanderForm);
  7. USEFORM("forms\ScpExplorer.cpp", ScpExplorerForm);
  8. //---------------------------------------------------------------------------
  9. #include <CoreMain.h>
  10. #include <WinInterface.h>
  11. #include <ProgParams.h>
  12. #include <VCLCommon.h>
  13. #include <Setup.h>
  14. #include <PuttyTools.h>
  15. #include <GUITools.h>
  16. //---------------------------------------------------------------------------
  17. WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
  18. {
  19. ApplicationLog = new TApplicationLog();
  20. TProgramParams * Params = TProgramParams::Instance();
  21. UnicodeString AppLogPath;
  22. if (Params->FindSwitch(L"applog", AppLogPath))
  23. {
  24. ApplicationLog->Enable(AppLogPath);
  25. }
  26. AppLog(L"Starting...");
  27. AddStartupSequence(L"M");
  28. DllHijackingProtection();
  29. AddStartupSequence(L"T");
  30. int Result = 0;
  31. try
  32. {
  33. WinInitialize();
  34. Application->Initialize();
  35. Application->MainFormOnTaskBar = true;
  36. Application->ModalPopupMode = pmAuto;
  37. SetEnvironmentVariable(L"WINSCP_PATH",
  38. ExcludeTrailingBackslash(ExtractFilePath(Application->ExeName)).c_str());
  39. CoreInitialize();
  40. ApplicationLog->AddStartupInfo(); // Needs Configuration
  41. InitializeWinHelp();
  42. InitializeSystemSettings();
  43. AddStartupSequence(L"S");
  44. try
  45. {
  46. try
  47. {
  48. ConfigureInterface();
  49. SetupInitialize();
  50. Application->Title = AppName;
  51. AppLog(L"Executing...");
  52. Result = Execute();
  53. AppLog(L"Execution done");
  54. }
  55. catch (Exception & E)
  56. {
  57. // Capture most errors before Usage class is released,
  58. // so that we can count them
  59. Configuration->Usage->Inc(L"GlobalFailures");
  60. // After we get WM_QUIT (posted by Application->Terminate()), i.e once Application->Run() exits,
  61. // the message just blinks
  62. ShowExtendedException(&E);
  63. }
  64. }
  65. __finally
  66. {
  67. AppLog(L"Finalizing");
  68. GUIFinalize();
  69. FinalizeSystemSettings();
  70. FinalizeWinHelp();
  71. CoreFinalize();
  72. WinFinalize();
  73. AppLog(L"Finalizing done");
  74. SAFE_DESTROY_EX(TApplicationLog, ApplicationLog);
  75. }
  76. }
  77. catch (Exception &E)
  78. {
  79. ShowExtendedException(&E);
  80. }
  81. return Result;
  82. }
  83. //---------------------------------------------------------------------------