WinSCP.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. #include <Tools.h>
  17. //---------------------------------------------------------------------------
  18. WINAPI wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int)
  19. {
  20. int Result = 0;
  21. try
  22. {
  23. TProgramParams * Params = TProgramParams::Instance();
  24. ApplicationLog = new TApplicationLog();
  25. UnicodeString AppLogPath;
  26. if (Params->FindSwitch(L"applog", AppLogPath))
  27. {
  28. ApplicationLog->Enable(AppLogPath);
  29. }
  30. AppLog(L"Starting...");
  31. AddStartupSequence(L"M");
  32. DllHijackingProtection();
  33. AppLogFmt(L"Process: %d", (GetCurrentProcessId()));
  34. AppLogFmt(L"Mouse: %s", (BooleanToEngStr(Mouse->MousePresent)));
  35. AppLogFmt(L"Mouse wheel: %s, msg: %d, scroll lines: %d", (BooleanToEngStr(Mouse->WheelPresent), int(Mouse->RegWheelMessage), Mouse->WheelScrollLines));
  36. AppLogFmt(L"ACP: %d", (static_cast<int>(GetACP())));
  37. AppLogFmt(L"Win32 platform: %d", (Win32Platform));
  38. DWORD Type;
  39. if (GetWindowsProductType(Type))
  40. {
  41. AppLogFmt(L"Windows product type: %x", (static_cast<int>(Type)));
  42. }
  43. else
  44. {
  45. AppLog(L"No Windows product type");
  46. }
  47. AppLogFmt(L"Win64: %s", (BooleanToEngStr(IsWin64())));
  48. AddStartupSequence(L"T");
  49. WinInitialize();
  50. Application->Initialize();
  51. Application->MainFormOnTaskBar = true;
  52. Application->ModalPopupMode = pmAuto;
  53. SetEnvironmentVariable(L"WINSCP_PATH",
  54. ExcludeTrailingBackslash(ExtractFilePath(Application->ExeName)).c_str());
  55. CoreInitialize();
  56. ApplicationLog->AddStartupInfo(); // Needs Configuration
  57. InitializeWinHelp();
  58. InitializeSystemSettings();
  59. AddStartupSequence(L"S");
  60. try
  61. {
  62. try
  63. {
  64. ConfigureInterface();
  65. SetupInitialize();
  66. Application->Title = AppName;
  67. AppLog(L"Executing...");
  68. Result = Execute();
  69. AppLog(L"Execution done");
  70. }
  71. catch (Exception & E)
  72. {
  73. // Capture most errors before Usage class is released,
  74. // so that we can count them
  75. Configuration->Usage->Inc(L"GlobalFailures");
  76. // After we get WM_QUIT (posted by Application->Terminate()), i.e once Application->Run() exits,
  77. // the message just blinks
  78. ShowExtendedException(&E);
  79. }
  80. }
  81. __finally
  82. {
  83. AppLog(L"Finalizing");
  84. GUIFinalize();
  85. FinalizeSystemSettings();
  86. FinalizeWinHelp();
  87. CoreFinalize();
  88. WinFinalize();
  89. AppLog(L"Finalizing done");
  90. SAFE_DESTROY_EX(TApplicationLog, ApplicationLog);
  91. }
  92. }
  93. catch (Exception &E)
  94. {
  95. ShowExtendedException(&E);
  96. }
  97. return Result;
  98. }
  99. //---------------------------------------------------------------------------