Vista対応。
@@ -91,7 +91,7 @@ | ||
91 | 91 | procedure Clear(WithData: Boolean); reintroduce; |
92 | 92 | procedure Delete(Index: Integer); |
93 | 93 | procedure Assign(Source: TButtonGroups); |
94 | - function Load(FileName: String): Boolean; | |
94 | + procedure Load(FileName: String); | |
95 | 95 | procedure Save(FileName: String); |
96 | 96 | end; |
97 | 97 |
@@ -758,7 +758,7 @@ | ||
758 | 758 | end; |
759 | 759 | |
760 | 760 | // ボタンファイル読み込み |
761 | -function TButtonGroups.Load(FileName: String): Boolean; | |
761 | +procedure TButtonGroups.Load(FileName: String); | |
762 | 762 | var |
763 | 763 | ButtonGroup: TButtonGroup; |
764 | 764 | FileStream: TFileStream; |
@@ -767,50 +767,40 @@ | ||
767 | 767 | pWork: PChar; |
768 | 768 | begin |
769 | 769 | Clear(True); |
770 | + | |
771 | + FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); | |
772 | + MemStream := TMemoryStream.Create; | |
770 | 773 | try |
771 | - FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareExclusive); | |
772 | - MemStream := TMemoryStream.Create; | |
774 | + MemStream.CopyFrom(FileStream, FileStream.Size); | |
775 | + MemStream.Position := 0; | |
776 | + | |
777 | + Size := Length(BTNHEAD) + 1; | |
778 | + pWork := StrAlloc(Size); | |
773 | 779 | try |
774 | - MemStream.CopyFrom(FileStream, FileStream.Size); | |
775 | - MemStream.Position := 0; | |
776 | - | |
777 | - Size := Length(BTNHEAD) + 1; | |
778 | - pWork := StrAlloc(Size); | |
779 | - try | |
780 | - MemStream.Read(pWork^, Size); | |
781 | - if StrPas(pWork) <> BTNHEAD then | |
782 | - raise EButtonFileError.Create('ファイル形式が違います。'); | |
783 | - finally | |
784 | - StrDispose(pWork); | |
785 | - end; | |
786 | - | |
787 | - while MemStream.Position < MemStream.Size do | |
788 | - begin | |
789 | - ButtonGroup := TButtonGroup.Create; | |
790 | - try | |
791 | - ButtonGroup.LoadFromStream(MemStream); | |
792 | - Add(ButtonGroup); | |
793 | - except | |
794 | - ButtonGroup.Free; | |
795 | - end; | |
796 | - end; | |
780 | + MemStream.Read(pWork^, Size); | |
781 | + if StrPas(pWork) <> BTNHEAD then | |
782 | + raise EButtonFileError.Create('ファイル形式が違います。' + FileName); | |
797 | 783 | finally |
798 | - FileStream.Free; | |
799 | - MemStream.Free; | |
784 | + StrDispose(pWork); | |
800 | 785 | end; |
801 | - Result := True; | |
802 | 786 | |
803 | - except | |
804 | - on E: EButtonFileError do | |
787 | + while MemStream.Position < MemStream.Size do | |
805 | 788 | begin |
806 | - Result := Application.MessageBox(PChar('ボタンファイルを読み込めませんでした。' + | |
807 | - E.Message + 'このまま続けますか?'), '確認', MB_ICONQUESTION or MB_YESNO) = idYes; | |
789 | + ButtonGroup := TButtonGroup.Create; | |
790 | + try | |
791 | + ButtonGroup.LoadFromStream(MemStream); | |
792 | + Add(ButtonGroup); | |
793 | + except | |
794 | + ButtonGroup.Free; | |
795 | + end; | |
808 | 796 | end; |
809 | - else | |
810 | - Result := True; | |
797 | + finally | |
798 | + FileStream.Free; | |
799 | + MemStream.Free; | |
811 | 800 | end; |
812 | 801 | |
813 | - if Result and (Count = 0) then | |
802 | + | |
803 | + if Count = 0 then | |
814 | 804 | begin |
815 | 805 | ButtonGroup := TButtonGroup.Create; |
816 | 806 | Add(ButtonGroup); |
@@ -397,6 +397,8 @@ | ||
397 | 397 | SettingForAllUser: Boolean; |
398 | 398 | UserFolder: string; |
399 | 399 | NextPage: TTabSheet; |
400 | + | |
401 | + OSVersionInfo: TOSVersionInfo; | |
400 | 402 | begin |
401 | 403 | // 最初のページ |
402 | 404 | if PageControl.ActivePage = tabStart then |
@@ -490,7 +492,13 @@ | ||
490 | 492 | else |
491 | 493 | begin |
492 | 494 | chkSettingForAllUser.Checked := False; |
493 | - FUserFolder := GetTargetFolder + FUserName + '\'; | |
495 | + OSVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); | |
496 | + GetVersionEx(OSVersionInfo); | |
497 | + if (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) and | |
498 | + (OSVersionInfo.dwMajorVersion >= 6) then | |
499 | + FUserFolder := GetEnvironmentVariable('appdata') + '\Special Launch\' | |
500 | + else | |
501 | + FUserFolder := GetTargetFolder + FUserName + '\'; | |
494 | 502 | FAllFolder := GetTargetFolder + 'Default\'; |
495 | 503 | edtSL4UserFolder.Text := FUserFolder; |
496 | 504 |
@@ -992,9 +1000,6 @@ | ||
992 | 1000 | begin |
993 | 1001 | if not rdoUninstall.Checked then |
994 | 1002 | begin |
995 | - Msg := Msg + 'が完了しました。'; | |
996 | - Application.MessageBox(PChar(Msg), '確認', MB_ICONINFORMATION); | |
997 | - | |
998 | 1003 | if rdoInstall.Checked then |
999 | 1004 | begin |
1000 | 1005 | SetupUnlock; |
@@ -1003,7 +1008,13 @@ | ||
1003 | 1008 | if not FUpdateInstall then |
1004 | 1009 | if Application.MessageBox('Special Launch のヘルプを表示しますか?', '確認', MB_ICONQUESTION or MB_YESNO) = idYes then |
1005 | 1010 | ShellExecute(Handle, nil, PChar(NewTargetFolder + 'SpLnch.chm'), nil, nil, SW_SHOW); |
1011 | + end | |
1012 | + else | |
1013 | + begin | |
1014 | + Msg := Msg + 'が完了しました。'; | |
1015 | + Application.MessageBox(PChar(Msg), '終了', MB_ICONINFORMATION); | |
1006 | 1016 | end; |
1017 | + | |
1007 | 1018 | end; |
1008 | 1019 | |
1009 | 1020 | Close; |
@@ -118,6 +118,8 @@ | ||
118 | 118 | begin |
119 | 119 | Msg := 'パッドの読み込みに失敗しました。' + E.Message; |
120 | 120 | Application.MessageBox(PChar(Msg), 'エラー', MB_ICONERROR); |
121 | + Close; | |
122 | + Exit; | |
121 | 123 | end; |
122 | 124 | end; |
123 | 125 | Plugins.BeginPlugins; |
@@ -3,7 +3,7 @@ | ||
3 | 3 | interface |
4 | 4 | |
5 | 5 | uses |
6 | - Windows, SysUtils, Forms, IniFiles; | |
6 | + Windows, SysUtils, Forms, IniFiles, About; | |
7 | 7 | |
8 | 8 | var |
9 | 9 | UserName: string; |
@@ -111,7 +111,12 @@ | ||
111 | 111 | |
112 | 112 | dlgInitFolder := TdlgInitFolder.Create(nil); |
113 | 113 | try |
114 | - UserFolder := ExtractFilePath(ParamStr(0)) + UserName + '\'; | |
114 | + if (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) and | |
115 | + (OSVersionInfo.dwMajorVersion >= 6) then | |
116 | + UserFolder := GetEnvironmentVariable('appdata') + '\Special Launch\' | |
117 | + else | |
118 | + UserFolder := ExtractFilePath(ParamStr(0)) + UserName + '\'; | |
119 | + | |
115 | 120 | dlgInitFolder.edtInitFolder.Text := UserFolder; |
116 | 121 | while True do |
117 | 122 | begin |