| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- program Lxtalk;
- uses
- FastMM4,
- mybean.console,
- ceflib,
- Windows,
- IniFiles,
- Forms,
- StrUtils,
- SysUtils,
- Dialogs,
- IdSMTP,
- IdMessage,
- LoggerImport,
- AddFaceFrm in 'AddFaceFrm.pas' {AddFaceFrm},
- AddFriendFrm in 'AddFriendFrm.pas' {AddFriendForm},
- AddFriendRequestFrm in 'AddFriendRequestFrm.pas' {AddFriendRequestForm},
- AddGroupFrm in 'AddGroupFrm.pas' {AddGroupForm},
- AddrBookUserFrm in 'AddrBookUserFrm.pas' {AddrBookUserForm},
- AddUserFrm in 'AddUserFrm.pas' {AddUserForm},
- AddWebTab in 'AddWebTab.pas' {Form1},
- AddWebTabFrm in 'AddWebTabFrm.pas' {AddWebTabForm},
- AlertFrm in 'AlertFrm.pas' {AlertForm},
- BindTel in 'BindTel.pas' {BindTelFrm},
- CalcFileCRC32 in 'CalcFileCRC32.pas',
- CalcFileMD5 in 'CalcFileMD5.pas',
- ChangePassFrm in 'ChangePassFrm.pas' {ChangePassForm},
- ConfirmCannotLoadFileFrm in 'ConfirmCannotLoadFileFrm.pas' {ConfirmCannotLoadFileForm},
- ConfirmReplaceFileFrm in 'ConfirmReplaceFileFrm.pas' {ConfirmReplaceFileForm},
- ConfirmReplaceNDFileFrm in 'ConfirmReplaceNDFileFrm.pas' {ConfirmReplaceNDFileForm},
- ConfirmSendOfflineFileFrm in 'ConfirmSendOfflineFileFrm.pas' {ConfirmSendOfflineFileForm},
- CopyScreenFrm in 'CopyScreenFrm.pas' {CopyScreenForm},
- CreateTeamFrm in 'CreateTeamFrm.pas' {CreateTeamForm},
- CustomFacesManagerFrm in 'CustomFacesManagerFrm.pas' {CustomFacesManagerForm},
- DESUnit in 'DESUnit.pas',
- GroupManagerFrm in 'GroupManagerFrm.pas' {GroupManagerForm},
- ImportAddrBookFrm in 'ImportAddrBookFrm.pas' {ImportAddrBookForm},
- ImportAddrbookUtils in 'ImportAddrbookUtils.pas',
- ImportGuideFrm in 'ImportGuideFrm.pas' {ImportGuideFrom},
- Impstringgrid in 'Impstringgrid.pas',
- LXTConst in 'LXTConst.pas',
- MainFrm in 'MainFrm.pas' {MainForm},
- MD5_32 in 'MD5_32.pas',
- MessageBoxFrm in 'MessageBoxFrm.pas' {MessageBoxForm},
- AsynActions in 'Actions\AsynActions.pas',
- AsynRequestUserInfo in 'Actions\AsynRequestUserInfo.pas',
- AsynRequestUserStatus in 'Actions\AsynRequestUserStatus.pas',
- AsynResponseUserInfo in 'Actions\AsynResponseUserInfo.pas',
- CA in 'CA\CA.pas',
- ConditionConfig in 'Condition\ConditionConfig.pas',
- LimitCondition in 'Condition\LimitCondition.pas',
- DownloadFaceWithHttp in 'FileTransimt\DownloadFaceWithHttp.pas',
- FileDownloaderWithNode in 'FileTransimt\FileDownloaderWithNode.pas',
- FileStreamTransmitter in 'FileTransimt\FileStreamTransmitter.pas',
- FileTransferWithNode in 'FileTransimt\FileTransferWithNode.pas',
- FileTransimt_OldCode in 'FileTransimt\FileTransimt_OldCode.pas',
- FileTransmitAdapter in 'FileTransimt\FileTransmitAdapter.pas',
- HttpDownloader in 'FileTransimt\HttpDownloader.pas',
- HTTPFileDownloader in 'FileTransimt\HTTPFileDownloader.pas',
- OfflineFileConfig in 'FileTransimt\OfflineFileConfig.pas',
- TransmiteFileMission in 'FileTransimt\TransmiteFileMission.pas',
- UploadOrDownloadFileMission in 'FileTransimt\UploadOrDownloadFileMission.pas',
- MainFormContrller in 'FormController\MainFormContrller.pas',
- MainFormFooter in 'FormController\MainFormFooter.pas' {MainFrmFooter},
- OptionFormController in 'FormController\OptionFormController.pas',
- TalkFormController in 'FormController\TalkFormController.pas',
- GroupClient in 'Group\GroupClient.pas',
- GroupConfig in 'Group\GroupConfig.pas',
- GroupMonitor in 'Group\GroupMonitor.pas',
- GroupProcess in 'Group\GroupProcess.pas',
- GroupProtocols in 'Group\GroupProtocols.pas',
- Groups in 'Group\Groups.pas',
- GroupService in 'Group\GroupService.pas',
- GroupUtility in 'Group\GroupUtility.pas',
- GroupWebSocket in 'Group\GroupWebSocket.pas',
- IntfTeamTalkForm in 'Group\IntfTeamTalkForm.pas',
- TeamsAdapter in 'Group\TeamsAdapter.pas',
- TeamShareAdapter in 'Group\TeamShareAdapter.pas',
- BranchsProcessor in 'Processor\BranchsProcessor.pas',
- CommonProcessor in 'Processor\CommonProcessor.pas',
- CompanyProcessor in 'Processor\CompanyProcessor.pas',
- FriendsProcessor in 'Processor\FriendsProcessor.pas',
- TeamsProcessor in 'Processor\TeamsProcessor.pas',
- UsersProcessor in 'Processor\UsersProcessor.pas',
- BaseService in 'Services\BaseService.pas',
- BranchService in 'Services\BranchService.pas',
- ChromeMessageService in 'Services\ChromeMessageService.pas',
- ConfigService in 'Services\ConfigService.pas',
- CurrentContentService in 'Services\CurrentContentService.pas',
- DirectoryService in 'Services\DirectoryService.pas',
- FaceService in 'Services\FaceService.pas',
- FriendsService in 'Services\FriendsService.pas',
- HtmlService in 'Services\HtmlService.pas',
- MessagesHander in 'Services\MessagesHander.pas',
- TeamsService in 'Services\TeamsService.pas',
- TextMessageService in 'Services\TextMessageService.pas',
- UserRemarkService in 'Services\UserRemarkService.pas',
- UsersService in 'Services\UsersService.pas',
- WorkmatesService in 'Services\WorkmatesService.pas',
- BaseChromeView in 'Views\BaseChromeView.pas' {BaseChromeViewForm},
- DevToolChromeFrm in 'Views\DevToolChromeFrm.pas' {DevToolChromeForm},
- ViewManager in 'Views\ViewManager.pas',
- EmbeddedView in 'Views\EmbeddedView\EmbeddedView.pas' {EmbeddedViewForm},
- SettingView in 'Views\SettingViews\SettingView.pas' {SettingViewForm},
- TalkFormFactory in 'Views\TalkViews\TalkFormFactory.pas',
- TalkLayout in 'Views\TalkViews\TalkLayout.pas' {TalkLayoutForm},
- TalkMainView in 'Views\TalkViews\TalkMainView.pas' {TalkMainViewForm},
- TalkMainViewScope in 'Views\TalkViews\TalkMainViewScope.pas',
- TalkPersonalToolsView in 'Views\TalkViews\TalkPersonalToolsView.pas' {TalkPersonalToolsViewForm},
- TalkTeamSideView in 'Views\TalkViews\TalkTeamSideView.pas' {TalkTeamSideViewForm},
- TalkTeamToolsView in 'Views\TalkViews\TalkTeamToolsView.pas' {TalkTeamToolsViewForm},
- TalkUserInfoSideView in 'Views\TalkViews\TalkUserInfoSideView.pas' {TalkUserInfoSideViewForm},
- TalkVideoSideView in 'Views\TalkViews\TalkVideoSideView.pas' {TalkVideoSideViewForm},
- UITalkFormBase in 'Views\TalkViews\UITalkFormBase.pas',
- UITalkPersonalForm in 'Views\TalkViews\UITalkPersonalForm.pas',
- UITalkTeamForm in 'Views\TalkViews\UITalkTeamForm.pas',
- UserCardView in 'Views\UserViews\UserCardView.pas' {UserCardViewForm},
- UserCardDetailView in 'Views\UserViews\UserCardDetailView.pas' {UserCardDetailViewForm},
- Authority in 'Windows\Authority.pas',
- RealICQUtility in 'Utility\RealICQUtility.pas',
- SendFolderFrm in 'SendFolderFrm.pas' {SendFolderForm},
- ShareUtils in 'ShareUtils.pas',
- SMSFrm in 'SMSFrm.pas' {SMSForm},
- SystemMessageFrm in 'SystemMessageFrm.pas' {SystemMessageForm},
- TalkingFrm in 'TalkingFrm.pas' {TalkingForm},
- TeamOptionsFrm in 'TeamOptionsFrm.pas' {TeamOptionsForm},
- TestCase in 'TestCase.pas' {Form6},
- TrueHiddenMainFrm in 'TrueHiddenMainFrm.pas' {TrueHiddenMainForm},
- U_SnapRect in 'U_SnapRect.pas',
- MessagesManagerFrm in 'MessagesManagerFrm.pas' {MessagesManagerForm},
- ModifyFaceFrm in 'ModifyFaceFrm.pas' {ModifyFaceForm},
- MouseHook in 'MouseHook.pas',
- MoveFaceFrm in 'MoveFaceFrm.pas' {MoveFaceForm},
- MultiSendSMSFrm in 'MultiSendSMSFrm.pas' {MultiSendSMSForm},
- MyInputBoxFrm in 'MyInputBoxFrm.pas' {MyInputBoxForm},
- NotifyAlertFrm in 'NotifyAlertFrm.pas' {NotifyAlertForm},
- NotReadMessageBoxFrm in 'NotReadMessageBoxFrm.pas' {NotReadMessageBoxForm},
- OnlineOfflineAlertFrm in 'OnlineOfflineAlertFrm.pas' {OnlineOfflineAlertForm},
- OptionsFrm in 'OptionsFrm.pas' {OptionsForm},
- ProcessingFrm in 'ProcessingFrm.pas' {ProcessingForm},
- QRCodeFrm in 'QRCodeFrm.pas' {QRCodeForm},
- QueryIpWry in 'QueryIpWry.pas',
- RealICQ_TLB in 'RealICQ_TLB.pas',
- RealICQModel in 'RealICQModel.pas',
- RealOAMessengerAutoServer in 'RealOAMessengerAutoServer.pas',
- ReceiveFolderRequestFrm in 'ReceiveFolderRequestFrm.pas' {ReceiveFolderRequestForm},
- RegFrm in 'RegFrm.pas' {RegForm},
- AboutFrm in 'AboutFrm.pas' {AboutForm},
- BaseScope in 'WebApps\BaseScope.pas',
- BaseWebApp in 'WebApps\BaseWebApp.pas',
- UserCardScope in 'WebApps\UserCardScope.pas',
- UserCardWebApp in 'WebApps\UserCardWebApp.pas',
- SettingWebApp in 'WebApps\SettingWebApp.pas',
- SettingScope in 'WebApps\SettingScope.pas',
- SettingService in 'Services\SettingService.pas',
- TalkPersonalView in 'Views\TalkPersonalView.pas' {TalkPersonalForm},
- BaseIDView in 'Views\BaseIDView.pas' {BaseIDViewForm},
- UploaderTask in 'FileTransimt\UploaderTask.pas',
- NetDiskWebApp in 'WebApps\NetDiskWebApp.pas',
- NetDiskScope in 'WebApps\NetDiskScope.pas',
- GuideView in 'Views\GuideView.pas' {GuideViewForm},
- LBCompanyView in 'Views\LBCompanyView.pas' {LBCompanyViewForm},
- LBUserViewService in 'Services\LBUserViewService.pas',
- LBCompanySimpleView in 'Views\LBCompanySimpleView.pas' {LBCompanySimpleViewForm};
- {$R *.res}
- {$R uac.res}
- const
- iAtom: PChar = 'Global/lxtalk';
- var
- Handle: HWND;
- iLoop: Integer;
- function ForceForeGroundWindow(hwnd: THandle): boolean;
- const
- SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
- SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
- var
- ForegroundThreadID: DWORD;
- ThisThreadID: DWORD;
- timeout: DWORD;
- begin
- if IsIconic(hwnd) then
- ShowWindow(hwnd, SW_RESTORE); //如果窗口最小化
- {if GetForegroundWindow = hwnd then
- Result := true
- else}
- begin
- if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ((Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)))) then
- begin
- Result := false;
- ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
- ThisThreadID := GetWindowThreadPRocessId(hwnd, nil);
- if AttachThreadInput(ThisThreadID, ForegroundThreadID, true) then
- begin
- BringWindowToTop(hwnd);
- SetForegroundWindow(hwnd);
- AttachThreadInput(ThisThreadID, ForegroundThreadID, false);
- Result := (GetForegroundWindow = hwnd);
- end;
- if not Result then
- begin
- SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
- SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0), SPIF_SENDCHANGE);
- BringWindowToTop(hwnd);
- SetForegroundWindow(hWnd);
- SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE);
- end;
- end
- else
- begin
- BringWindowToTop(hwnd);
- SetForegroundWindow(hwnd);
- end;
- Result := (GetForegroundWindow = hwnd);
- end;
- end;
- procedure ActiveExistsClient;
- var
- hWndStart, hwndLike: HWND;
- WndCaption: array[0..254] of char;
- WndClassName: array[0..254] of char;
- ActiveTimes: Integer;
- begin
- try
- ActiveTimes := 0;
- hWndStart := GetDesktopWindow;
- hwndLike := GetWindow(hWndStart, GW_CHILD);
- while hwndLike <> 0 do
- begin
- GetWindowText(hwndLike, @WndCaption, 254);
- GetClassName(hwndLike, @WndClassName, 254);
- if (pos(Application.Title, StrPas(WndCaption)) <> 0) and (pos('MainForm', StrPas(WndClassName)) <> 0) then
- begin
- ShowWindow(hwndLike, SW_SHOW);
- ForceForeGroundWindow(hwndLike);
- Inc(ActiveTimes);
- if ActiveTimes >= 2 then
- Break;
- end;
- hwndLike := GetWindow(hwndLike, GW_HWNDNEXT);
- end;
- except
- on E: Exception do
- Error(E.Message, 'RealICQ.ActiveExistsClient');
- end;
- end;
- function OSBooting: Boolean;
- begin
- Result := FindCmdLineSwitch('OSBOOT', ['-', '\', '/'], True);
- end;
- function GetApplicationTitle: string;
- var
- IniFile: TIniFile;
- begin
- IniFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'UMCConfig.ini');
- try
- Result := IniFile.ReadString('ApplicationInfo', 'Title', '办公助手');
- except
- on E: Exception do
- begin
- Error(E.Message, 'RealICQ.ActiveExistsClient');
- IniFile.Free;
- end;
- end;
- IniFile.Free;
- end;
- procedure ProcException(Sender: TObject; E: Exception);
- begin
- Application.ShowException(E);
- end;
- begin
- // Application.OnException := ProcException;
- Try
- if FileExists(ExtractFilePath(paramstr(0)) + 'Online.exe') then
- WinExec(PChar(ExtractFilePath(paramstr(0)) + 'Online.exe /S0 /C /Q /O'), SW_SHOW);
- IsMultiThread := true;
- CefCache := ExtractFilePath(paramstr(0)) + 'cache';
- CefSingleProcess := True;
- if not CefLoadLibDefault then
- Exit;
- ApplicationContextInitialize;
- Application.Initialize;
- Application.MainFormOnTaskbar := True;
- Application.Title := GetApplicationTitle;
-
Handle := OpenMutex(mutex_all_access, False, iAtom);
- Handle := 0;
- if Handle = 0 then
- begin
- if OSBooting then
- begin
- iLoop := 0;
- while iLoop < 100 do
- begin
- Sleep(50);
- Inc(iLoop);
- Application.ProcessMessages;
- end;
- end;
- Handle := CreateMutex(nil, False, iAtom);
- Application.CreateForm(TTrueHiddenMainForm, TrueHiddenMainForm);
- Application.Run;
- end
- else
- begin
- Handle := 0;
- Application.CreateForm(TTrueHiddenMainForm, TrueHiddenMainForm);
- Application.Run;
- ActiveExistsClient;
- end;
- if Handle <> 0 then
- ReleaseMutex(Handle);
- except
- on E: Exception do
- begin
- ShowMessage(E.Message);
- end;
- End;
- end.
|