├── mp4box ├── Res │ ├── wan.ico │ ├── tomoka.ico │ ├── tsukiko.gif │ ├── mp4box_TemporaryKey.pfx │ └── PostBuildEvent.bat ├── Microsoft.WindowsAPICodePack.dll ├── Microsoft.WindowsAPICodePack.Shell.dll ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── mp4box.csproj.user ├── app.config ├── PreviewForm.cs ├── StartUpClass.cs ├── app.manifest ├── ResourceCulture.cs ├── PreviewForm.Designer.cs ├── Program.cs ├── Supplements.cs ├── SplashForm.Designer.cs ├── SplashScreenApplicationContext.cs ├── WorkingForm.Designer.cs └── Cmd.cs ├── ControlExs ├── ControlExs │ ├── FormEx │ │ ├── Res │ │ │ ├── fringe_bkg.png │ │ │ └── SystemButtons │ │ │ │ ├── max_down.png │ │ │ │ ├── min_down.png │ │ │ │ ├── close_down.png │ │ │ │ ├── close_normal.png │ │ │ │ ├── max_normal.png │ │ │ │ ├── min_normal.png │ │ │ │ ├── restore_down.png │ │ │ │ ├── max_highlight.png │ │ │ │ ├── min_highlight.png │ │ │ │ ├── restore_normal.png │ │ │ │ ├── close_highlight.png │ │ │ │ └── restore_highlight.png │ │ ├── FormBase.cs │ │ ├── SystemButton.cs │ │ └── FormEx.resx │ └── QQControls │ │ ├── QQCheckBox │ │ └── Image │ │ │ └── check.png │ │ ├── QQRadioButton │ │ └── Image │ │ │ └── dot.png │ │ ├── QQButton │ │ └── Image │ │ │ ├── qqbtn_down.png │ │ │ ├── qqbtn_focus.png │ │ │ ├── qqbtn_normal.png │ │ │ └── qqbtn_highlight.png │ │ ├── QQGlassButton │ │ └── Image │ │ │ ├── glassbtn_down.png │ │ │ └── glassbtn_hot.png │ │ └── QQMessageBox │ │ ├── Icons │ │ ├── qqmessagebox_ok.png │ │ ├── qqmessagebox_error.png │ │ ├── qqmessagebox_infor.png │ │ ├── qqmessagebox_question.png │ │ └── qqmessagebox_warning.png │ │ ├── QQMessageBoxButtons.cs │ │ ├── QQMessageBoxIcon.cs │ │ └── QQMessageBox.resx ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ └── Resources.resx ├── Enums │ ├── ClassStyle.cs │ ├── MouseOperate.cs │ ├── SystemButtonState.cs │ ├── QQControlState.cs │ ├── WindowStyleEx.cs │ └── WindowStyle.cs ├── Common Class │ └── ColorTable.cs └── Methods │ └── Win32.cs ├── XwWizard ├── WindowsFormsApplication1 │ ├── Properties │ │ ├── Settings.settings │ │ ├── Settings.Designer.cs │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── WizardSteps │ │ ├── FormStep1.cs │ │ ├── FormStep5.cs │ │ ├── FormStep3.cs │ │ ├── FormStep4.cs │ │ ├── FormStep4.Designer.cs │ │ ├── FormStep1.Designer.cs │ │ ├── FormStep2.cs │ │ ├── FormStep5.Designer.cs │ │ ├── FormStep2.Designer.cs │ │ ├── FormStep3.Designer.cs │ │ ├── FormStep1.resx │ │ ├── FormStep4.resx │ │ ├── FormStep5.resx │ │ ├── FormStep2.resx │ │ └── FormStep3.resx │ ├── Program.cs │ ├── StepOpt.cs │ ├── FormWizard.Designer.cs │ ├── XwWizard.csproj │ └── MediaInfoTool.cs └── WindowsFormsApplication1.sln ├── README.md ├── .gitattributes ├── mp4box.sln └── .gitignore /mp4box/Res/wan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Res/wan.ico -------------------------------------------------------------------------------- /mp4box/Res/tomoka.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Res/tomoka.ico -------------------------------------------------------------------------------- /mp4box/Res/tsukiko.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Res/tsukiko.gif -------------------------------------------------------------------------------- /mp4box/Res/mp4box_TemporaryKey.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Res/mp4box_TemporaryKey.pfx -------------------------------------------------------------------------------- /mp4box/Microsoft.WindowsAPICodePack.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Microsoft.WindowsAPICodePack.dll -------------------------------------------------------------------------------- /mp4box/Microsoft.WindowsAPICodePack.Shell.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/mp4box/Microsoft.WindowsAPICodePack.Shell.dll -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/fringe_bkg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/fringe_bkg.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/max_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/max_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/min_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/min_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQCheckBox/Image/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQCheckBox/Image/check.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQRadioButton/Image/dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQRadioButton/Image/dot.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/close_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/close_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/close_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/close_normal.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/max_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/max_normal.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/min_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/min_normal.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_focus.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/max_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/max_highlight.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/min_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/min_highlight.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_normal.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_normal.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/close_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/close_highlight.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/FormEx/Res/SystemButtons/restore_highlight.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQButton/Image/qqbtn_highlight.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQGlassButton/Image/glassbtn_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQGlassButton/Image/glassbtn_down.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQGlassButton/Image/glassbtn_hot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQGlassButton/Image/glassbtn_hot.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_ok.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_error.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_infor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_infor.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_question.png -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wzxjohn/marukotoolbox/HEAD/ControlExs/ControlExs/QQControls/QQMessageBox/Icons/qqmessagebox_warning.png -------------------------------------------------------------------------------- /mp4box/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ControlExs/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /mp4box/mp4box.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | publish\ 5 | 6 | 7 | 8 | 9 | 10 | zh-CN 11 | false 12 | 13 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/QQMessageBoxButtons.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | using System.Text; 5 | using System.Windows.Forms; 6 | 7 | namespace ControlExs 8 | { 9 | /// 10 | /// 消息框QQMessageBox 上按钮枚举 11 | /// 12 | public enum QQMessageBoxButtons 13 | { 14 | /// 15 | /// 消息框包含“确定”按钮 16 | /// 17 | OK, 18 | /// 19 | /// 消息框包含“确定”与“取消”按钮 20 | /// 21 | OKCancel, 22 | /// 23 | /// 消息框包含“重试”与“取消”按钮 24 | /// 25 | RetryCancel 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsFormsApplication1", "WindowsFormsApplication1\WindowsFormsApplication1.csproj", "{139B68F7-4EBA-4F61-9C91-2FC0D4A37684}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|x86 = Debug|x86 9 | Release|x86 = Release|x86 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {139B68F7-4EBA-4F61-9C91-2FC0D4A37684}.Debug|x86.ActiveCfg = Debug|x86 13 | {139B68F7-4EBA-4F61-9C91-2FC0D4A37684}.Debug|x86.Build.0 = Debug|x86 14 | {139B68F7-4EBA-4F61-9C91-2FC0D4A37684}.Release|x86.ActiveCfg = Release|x86 15 | {139B68F7-4EBA-4F61-9C91-2FC0D4A37684}.Release|x86.Build.0 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /ControlExs/Enums/ClassStyle.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | public enum ClassStyle 27 | { 28 | CS_DropSHADOW = 0x20000 //实现窗体阴影 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ControlExs/Enums/MouseOperate.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | public enum MouseOperate 27 | { 28 | Move, 29 | Down, 30 | Up, 31 | Leave 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /ControlExs/Enums/SystemButtonState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | public enum SystemButtonState 27 | { 28 | Normal, 29 | HighLight, 30 | Down, 31 | DownLeave 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.18444 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace XwWizard.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /mp4box/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace mp4box.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ControlExs/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ControlExs.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/QQMessageBoxIcon.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | /// 27 | /// QQMessageBox icon图标枚举 28 | /// 29 | public enum QQMessageBoxIcon 30 | { 31 | Error, 32 | Information, 33 | OK, 34 | Question, 35 | Warning 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /mp4box/Res/PostBuildEvent.bat: -------------------------------------------------------------------------------- 1 | @REM Store args 2 | set _SolutionDir=%1% 3 | set _TargetDir=%2% 4 | 5 | @REM Do works 6 | if not exist "%_SolutionDir%xiaowan" mkdir "%_SolutionDir%xiaowan" >nul 7 | 8 | copy /y "%_TargetDir%xiaowan.exe" "%_SolutionDir%xiaowan\" >nul 9 | copy /y "%_TargetDir%xiaowan.exe.Config" "%_SolutionDir%xiaowan\" >nul 10 | copy /y "%_TargetDir%ControlExs.dll" "%_SolutionDir%xiaowan\" >nul 11 | copy /y "%_TargetDir%AxInterop.WMPLib.dll" "%_SolutionDir%xiaowan\" >nul 12 | copy /y "%_TargetDir%Interop.WMPLib.dll" "%_SolutionDir%xiaowan\" >nul 13 | copy /y "%_TargetDir%Microsoft.WindowsAPICodePack.dll" "%_SolutionDir%xiaowan\" >nul 14 | copy /y "%_TargetDir%Microsoft.WindowsAPICodePack.Shell.dll" "%_SolutionDir%xiaowan\" >nul 15 | copy /y "%_TargetDir%XwWizard.dll" "%_SolutionDir%xiaowan\" >nul 16 | 17 | if not exist "%_SolutionDir%xiaowan\en" mkdir "%_SolutionDir%xiaowan\en" >nul 18 | if not exist "%_SolutionDir%xiaowan\zh-HanT" mkdir "%_SolutionDir%xiaowan\zh-HanT" >nul 19 | if not exist "%_SolutionDir%xiaowan\ja-JP" mkdir "%_SolutionDir%xiaowan\ja-JP" >nul 20 | 21 | xcopy /y "%_TargetDir%en" "%_SolutionDir%xiaowan\en" >nul 22 | xcopy /y "%_TargetDir%zh-Hant" "%_SolutionDir%xiaowan\zh-HanT" >nul 23 | xcopy /y "%_TargetDir%ja-JP" "%_SolutionDir%xiaowan\ja-JP" >nul 24 | 25 | echo PostBuildEvent Completed. 26 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep1.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Windows.Forms; 29 | 30 | namespace XwWizard.WizardSteps 31 | { 32 | public partial class FormStep1 : Form 33 | { 34 | public FormStep1() 35 | { 36 | InitializeComponent(); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Program.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // 5 | // Licensed under the Apache License, Version 2.0 (the "License"); 6 | // you may not use this file except in compliance with the License. 7 | // You may obtain a copy of the License at 8 | // 9 | // http://www.apache.org/licenses/LICENSE-2.0 10 | // 11 | // Unless required by applicable law or agreed to in writing, software 12 | // distributed under the License is distributed on an "AS IS" BASIS, 13 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 14 | // express or implied. 15 | // See the License for the specific language governing permissions 16 | // and limitations under the License. 17 | // ------------------------------------------------------------------- 18 | // 19 | 20 | using System; 21 | using System.Collections.Generic; 22 | using System.Linq; 23 | using System.Windows.Forms; 24 | 25 | namespace XwWizard 26 | { 27 | static class Program 28 | { 29 | /// 30 | /// 应用程序的主入口点。 31 | /// 32 | [STAThread] 33 | static void Main() 34 | { 35 | Application.EnableVisualStyles(); 36 | Application.SetCompatibleTextRenderingDefault(false); 37 | Application.Run(new FormWizard()); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/StepOpt.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | 26 | namespace XwWizard 27 | { 28 | public class StepOpt 29 | { 30 | public StepOpt(bool cancel, bool prev, bool next) 31 | { 32 | this.Cancel = cancel; 33 | this.Prev = prev; 34 | this.Next = next; 35 | } 36 | 37 | public bool Cancel { get; set; } 38 | public bool Prev { get; set; } 39 | public bool Next { get; set; } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /ControlExs/Enums/QQControlState.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | public enum QQControlState 27 | { 28 | /// 29 | /// 正常状态 30 | /// 31 | Normal = 0, 32 | /// 33 | /// /鼠标进入 34 | /// 35 | Highlight = 1, 36 | /// 37 | /// 鼠标按下 38 | /// 39 | Down = 2, 40 | /// 41 | /// 获得焦点 42 | /// 43 | Focus = 3, 44 | /// 45 | /// 控件禁止 46 | /// 47 | Disabled = 4 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /mp4box/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep5.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Windows.Forms; 29 | 30 | namespace XwWizard.WizardSteps 31 | { 32 | public partial class FormStep5 : Form 33 | { 34 | public FormStep5() 35 | { 36 | InitializeComponent(); 37 | } 38 | 39 | private void btnChooseOutput_Click(object sender, EventArgs e) 40 | { 41 | try 42 | { 43 | System.Diagnostics.Process.Start("\"" + FormWizard.OutputFilePath + "\""); 44 | } 45 | catch { } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 小丸工具箱 / Maruko's Toolbox 2 | =========================== 3 | A Video-prosessing GUI 4 | 5 | * Homepage: http://www.maruko.in/ (Sponsored by Tech Team of ACICFG) 6 | * https://marukotoolbox.codeplex.com (primary) 7 | * https://github.com/marukotoolbox/marukotoolbox (mirror) 8 | 9 | 界面 / Screenshots 10 | ================ 11 | ![Screenshot](https://download-codeplex.sec.s-msft.com/Download?ProjectName=marukotoolbox&DownloadId=866242) 12 | 13 | Get It 14 | ===== 15 | https://marukotoolbox.codeplex.com/releases/ 16 | 17 | 系统需求 / Requirements 18 | ============================ 19 | ##For Use 20 | ###On Windows 21 | 1. Windows XP, Vista, 7, 8, 8.1 x86 or x64 22 | 23 | 2. .Net Framwork 3.5 SP1 24 | 25 | ###On Linux 26 | _Not Thoroughly Tested 仅经过基本测试_ 27 | 28 | 1. Ubuntu Desktop (Recommended) 29 | 30 | 2. Mono-Runtime 31 | ``` 32 | sudo apt-get install mono-runtime 33 | ``` 34 | 35 | 3. LibMono-* 36 | ``` 37 | sudo apt-get install libmono-* 38 | ``` 39 | 40 | 4. [WinE is not an Emulator](https://www.winehq.org/download/) 41 | 42 | After installing these dependencies, 43 |
安装好必须组件后, 44 |
45 | run `wine /path/to/小丸工具箱.exe` 46 | 47 | You may need to follow WinE's instructions to get `Maruko's Toolbox` work. 48 | 49 | 50 | ##For Development 51 | Visual Studio 2013 52 | 53 | Bug汇报 / I Found A Bug 54 | ==================== 55 | Issue Page: https://marukotoolbox.codeplex.com/workitem/list/advanced 56 | 57 | 58 | 我想求一个功能 / Feture Request 59 | =========================== 60 | Discussion: https://marukotoolbox.codeplex.com/discussions 61 | 62 | > 最近不更新《小丸工具箱》了,心累。 63 | > ——小丸 64 | 65 | 帮助小丸开发 / Contribute 66 | ===================== 67 | > 代码很乱,别吐槽。 68 | > ——小丸 69 | -------------------------------------------------------------------------------- /mp4box/PreviewForm.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: komaruchan 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Text; 27 | using System.Windows.Forms; 28 | using System.IO; 29 | 30 | namespace mp4box 31 | { 32 | public partial class PreviewForm : Form 33 | { 34 | 35 | string workpath = System.Windows.Forms.Application.StartupPath; 36 | 37 | public PreviewForm() 38 | { 39 | InitializeComponent(); 40 | } 41 | 42 | private void textBox1_TextChanged(object sender, EventArgs e) 43 | { 44 | 45 | } 46 | 47 | private void Form2_SizeChanged(object sender, EventArgs e) 48 | { 49 | 50 | } 51 | 52 | private void Form2_Load(object sender, EventArgs e) 53 | { 54 | //axWindowsMediaPlayer1.Ctlcontrols.play(); 55 | } 56 | 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ControlExs/Common Class/ColorTable.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | using System.Drawing; 24 | 25 | namespace ControlExs 26 | { 27 | /**************************************************************** 28 | * 29 | * Author:苦笑 30 | * Blog: http://www.cnblogs.com/Keep-Silence-/ 31 | * Date: 2013-2-22 32 | * 33 | *****************************************************************/ 34 | 35 | /// 36 | /// 实现仿QQ效果控件内部使用颜色表 37 | /// 38 | internal class ColorTable 39 | { 40 | public static Color QQBorderColor = Color.LightBlue; //LightBlue = Color.FromArgb(173, 216, 230) 41 | public static Color QQHighLightColor =RenderHelper.GetColor(QQBorderColor,255,-63,-11,23); //Color.FromArgb(110, 205, 253) 42 | public static Color QQHighLightInnerColor = RenderHelper.GetColor(QQBorderColor, 255, -100, -44, 1); //Color.FromArgb(73, 172, 231); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /mp4box/StartUpClass.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: komaruchan 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Text; 24 | using System.Windows.Forms; 25 | 26 | namespace mp4box 27 | { 28 | //使用方法:定义一个启动类,应用程序从启动类启动,该类会使用继承自启动窗体虚基类的一个启动窗体类,在该类中定义启动窗体和主窗体。启动窗体和主窗体的代码略去,注意要删除机器生成的窗体代码的Main方法部分。 29 | public class StartUpClass 30 | { 31 | [STAThread] 32 | static void Main() 33 | { 34 | Application.Run(new mycontext()); 35 | } 36 | } 37 | 38 | //启动窗体类(继承自启动窗体虚基类),启动画面会停留一段时间,该时间是设定的时间和主窗体构造所需时间两个的最大值 39 | public class mycontext : SplashScreenApplicationContext 40 | { 41 | protected override void OnCreateSplashScreenForm() 42 | { 43 | this.SplashScreenForm = new SplashForm();//启动窗体 44 | } 45 | protected override void OnCreateMainForm() 46 | { 47 | this.PrimaryForm = new MainForm();//主窗体 48 | } 49 | protected override void SetSeconds() 50 | { 51 | this.SecondsShow = 2;//启动窗体显示的时间(秒) 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /ControlExs/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System.Reflection; 20 | using System.Runtime.CompilerServices; 21 | using System.Runtime.InteropServices; 22 | 23 | // 有关程序集的常规信息通过以下 24 | // 特性集控制。更改这些特性值可修改 25 | // 与程序集关联的信息。 26 | [assembly: AssemblyTitle("C#自定义控件 ControlExs")] 27 | [assembly: AssemblyDescription("")] 28 | [assembly: AssemblyConfiguration("")] 29 | [assembly: AssemblyCompany("")] 30 | [assembly: AssemblyProduct("ControlExs")] 31 | [assembly: AssemblyCopyright("Copyright © 苦笑 2013")] 32 | [assembly: AssemblyTrademark("")] 33 | [assembly: AssemblyCulture("")] 34 | 35 | // 将 ComVisible 设置为 false 使此程序集中的类型 36 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 37 | // 则将该类型上的 ComVisible 特性设置为 true。 38 | [assembly: ComVisible(false)] 39 | 40 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 41 | [assembly: Guid("7f3cdc2b-b940-4fd2-895f-f326b8a1b450")] 42 | 43 | // 程序集的版本信息由下面四个值组成: 44 | // 45 | // 主版本 46 | // 次版本 47 | // 内部版本号 48 | // 修订号 49 | // 50 | // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, 51 | // 方法是按如下所示使用“*”: 52 | // [assembly: AssemblyVersion("1.0.*")] 53 | [assembly: AssemblyVersion("1.0.0.0")] 54 | [assembly: AssemblyFileVersion("1.0.0.0")] 55 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | 2 | // ------------------------------------------------------------------ 3 | // Copyright (C) 2011-2014 Maruko Toolbox Project 4 | // 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | using System.Reflection; 21 | using System.Runtime.CompilerServices; 22 | using System.Runtime.InteropServices; 23 | 24 | // 有关程序集的常规信息通过以下 25 | // 特性集控制。更改这些特性值可修改 26 | // 与程序集关联的信息。 27 | [assembly: AssemblyTitle("XwWizard")] 28 | [assembly: AssemblyDescription("")] 29 | [assembly: AssemblyConfiguration("")] 30 | [assembly: AssemblyCompany("")] 31 | [assembly: AssemblyProduct("XwWizard")] 32 | [assembly: AssemblyCopyright("CopyLeft (L) Maruko's Toolbox Team 2014")] 33 | [assembly: AssemblyTrademark("")] 34 | [assembly: AssemblyCulture("")] 35 | 36 | // 将 ComVisible 设置为 false 使此程序集中的类型 37 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 38 | // 则将该类型上的 ComVisible 特性设置为 true。 39 | [assembly: ComVisible(false)] 40 | 41 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 42 | [assembly: Guid("d1639cce-4173-4024-8584-dd8db266b4cf")] 43 | 44 | // 程序集的版本信息由下面四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 内部版本号 49 | // 修订号 50 | // 51 | // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, 52 | // 方法是按如下所示使用“*”: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /mp4box/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System.Reflection; 20 | using System.Runtime.CompilerServices; 21 | using System.Runtime.InteropServices; 22 | 23 | // 有关程序集的常规信息通过以下 24 | // 特性集控制。更改这些特性值可修改 25 | // 与程序集关联的信息。 26 | [assembly: AssemblyTitle("Maruko Toolbox")] 27 | [assembly: AssemblyDescription("A Video-prosessing GUI")] 28 | [assembly: AssemblyConfiguration("")] 29 | [assembly: AssemblyCompany("http://maruko.appinn.me/")] 30 | [assembly: AssemblyProduct("Maruko Toolbox")] 31 | [assembly: AssemblyCopyright("Copyright © 2011-2014")] 32 | [assembly: AssemblyTrademark("")] 33 | [assembly: AssemblyCulture("")] 34 | 35 | // 将 ComVisible 设置为 false 使此程序集中的类型 36 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, 37 | // 则将该类型上的 ComVisible 特性设置为 true。 38 | [assembly: ComVisible(false)] 39 | 40 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID 41 | [assembly: Guid("d8671a06-a28b-4e6a-a2cb-5649d5fbf2ab")] 42 | 43 | // 程序集的版本信息由下面四个值组成: 44 | // 45 | // 主版本 46 | // 次版本 47 | // 内部版本号 48 | // 修订号 49 | // 50 | // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, 51 | // 方法是按如下所示使用“*”: 52 | // [assembly: AssemblyVersion("1.0.*")] 53 | [assembly: AssemblyVersion("1.0.0.0")] 54 | [assembly: AssemblyFileVersion("1.0.0.0")] 55 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/FormBase.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | using System.Windows.Forms; 24 | 25 | namespace ControlExs 26 | { 27 | 28 | /**************************************************************** 29 | * 30 | * Author:苦笑 31 | * Blog: http://www.cnblogs.com/Keep-Silence-/ 32 | * Date: 2013-2-22 33 | * 34 | *****************************************************************/ 35 | 36 | 37 | /// 38 | /// 拥有ToolTip属性的Form基类 39 | /// 40 | public class FormBase : Form 41 | { 42 | private ToolTip _toolTip; 43 | 44 | public FormBase() 45 | : base() 46 | { 47 | _toolTip = new ToolTip(); 48 | } 49 | 50 | public ToolTip ToolTip 51 | { 52 | get { return _toolTip; } 53 | } 54 | 55 | protected override void Dispose(bool disposing) 56 | { 57 | base.Dispose(disposing); 58 | if (disposing) 59 | { 60 | _toolTip.Dispose(); 61 | } 62 | _toolTip = null; 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/SystemButton.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | using System.Drawing; 24 | using System.Runtime.InteropServices; 25 | using System.Windows.Forms; 26 | 27 | namespace ControlExs 28 | { 29 | 30 | /**************************************************************** 31 | * 32 | * Author:苦笑 33 | * Blog: http://www.cnblogs.com/Keep-Silence-/ 34 | * Date: 2013-2-22 35 | * 36 | *****************************************************************/ 37 | 38 | 39 | 40 | //按钮事件委托 41 | public delegate void MouseDownEventHandler(); 42 | 43 | internal class SystemButton 44 | { 45 | public SystemButtonState State { get; set; } 46 | public Rectangle LocationRect { get; set; } 47 | public Image NormalImg { get; set; } 48 | public Image HighLightImg { get; set; } 49 | public Image DownImg { get; set; } 50 | public string ToolTip { get; set; } 51 | 52 | public event MouseDownEventHandler OnMouseDownEvent; 53 | public void OnMouseDown() 54 | { 55 | if (OnMouseDownEvent != null) 56 | { 57 | OnMouseDownEvent(); 58 | } 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Declare files that will always have CRLF line endings on checkout. 8 | ############################################################################### 9 | *.sln text eol=crlf 10 | 11 | ############################################################################### 12 | # Set default behavior for command prompt diff. 13 | # 14 | # This is need for earlier builds of msysgit that does not have it on by 15 | # default for csharp files. 16 | # Note: This is only used by command line 17 | ############################################################################### 18 | *.cs diff=csharp 19 | *.sln merge=union 20 | *.csproj merge=union 21 | *.vbproj merge=union 22 | *.fsproj merge=union 23 | *.dbproj merge=union 24 | 25 | ############################################################################### 26 | # Denote all files that are truly binary and should not be modified. 27 | # 28 | # image files are treated as binary by default. 29 | ############################################################################### 30 | *.jpg binary 31 | *.png binary 32 | *.gif binary 33 | *.lib binary 34 | 35 | ############################################################################### 36 | # diff behavior for common document formats 37 | # 38 | # Convert binary document formats to text before diffing them. This feature 39 | # is only available from the command line. Turn it on by uncommenting the 40 | # entries below. 41 | ############################################################################### 42 | *.doc diff=astextplain 43 | *.DOC diff=astextplain 44 | *.docx diff=astextplain 45 | *.DOCX diff=astextplain 46 | *.dot diff=astextplain 47 | *.DOT diff=astextplain 48 | *.pdf diff=astextplain 49 | *.PDF diff=astextplain 50 | *.rtf diff=astextplain 51 | *.RTF diff=astextplain 52 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep3.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Windows.Forms; 29 | using System.IO; 30 | 31 | namespace XwWizard.WizardSteps 32 | { 33 | public partial class FormStep3 : Form 34 | { 35 | public FormStep3(FormWizard wParent) 36 | { 37 | this.WizardParent = wParent; 38 | InitializeComponent(); 39 | } 40 | 41 | private FormWizard WizardParent = null; 42 | 43 | private void btnChooseOutput_Click(object sender, EventArgs e) 44 | { 45 | if (saveFileDialog1.ShowDialog() == DialogResult.OK) 46 | { 47 | if (Directory.Exists(saveFileDialog1.FileName)) 48 | { 49 | MessageBox.Show(FormWizard.VideoFilePath + "请更换个文件名或目录","", 50 | MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 51 | return; 52 | } 53 | 54 | FormWizard.OutputFilePath = saveFileDialog1.FileName; 55 | WizardParent.SwitchToNextStep(); 56 | } 57 | } 58 | 59 | 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /mp4box/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 47 | -------------------------------------------------------------------------------- /ControlExs/Enums/WindowStyleEx.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | public enum WindowStyleEx 27 | { 28 | WS_EX_DLGMODALFRAME = 0x00000001, 29 | WS_EX_NOPARENTNOTIFY = 0x00000004, 30 | WS_EX_TOPMOST = 0x00000008, 31 | WS_EX_ACCEPTFILES = 0x00000010, 32 | WS_EX_TRANSPARENT = 0x00000020, 33 | WS_EX_MDICHILD = 0x00000040, 34 | WS_EX_TOOLWINDOW = 0x00000080, 35 | WS_EX_WINDOWEDGE = 0x00000100, 36 | WS_EX_CLIENTEDGE = 0x00000200, 37 | WS_EX_CONTEXTHELP = 0x00000400, 38 | WS_EX_RIGHT = 0x00001000, 39 | WS_EX_LEFT = 0x00000000, 40 | WS_EX_RTLREADING = 0x00002000, 41 | WS_EX_LTRREADING = 0x00000000, 42 | WS_EX_LEFTSCROLLBAR = 0x00004000, 43 | WS_EX_RIGHTSCROLLBAR = 0x00000000, 44 | WS_EX_CONTROLPARENT = 0x00010000, 45 | WS_EX_STATICEDGE = 0x00020000, 46 | WS_EX_APPWINDOW = 0x00040000, 47 | WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE), 48 | WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST), 49 | WS_EX_LAYERED = 0x00080000, 50 | WS_EX_NOINHERITLAYOUT = 0x00100000, // Disable inheritence of mirroring by children 51 | WS_EX_LAYOUTRTL = 0x00400000, // Right to left mirroring 52 | WS_EX_COMPOSITED = 0x02000000, 53 | WS_EX_NOACTIVATE = 0x08000000, 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep4.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Windows.Forms; 29 | 30 | namespace XwWizard.WizardSteps 31 | { 32 | public partial class FormStep4 : Form 33 | { 34 | public FormStep4(FormWizard p) 35 | { 36 | this.WizardParent = p; 37 | InitializeComponent(); 38 | } 39 | 40 | private FormWizard WizardParent = null; 41 | 42 | /// 43 | /// 处理文件 44 | /// 45 | public static bool EncodeFile() 46 | { 47 | //TODO: 处理文件方法 48 | if (FormWizard.NeedEncode) 49 | { 50 | //转码…… 51 | //FormWizard.VideoFilePath; 52 | //FormWizard.OutputFilePath; 53 | 54 | FormWizard.NeedMux = false;//这个不要去掉,转码时直接转成FLV,不用再封装 55 | } 56 | 57 | if (FormWizard.NeedMux) 58 | { 59 | //封装…… 60 | } 61 | 62 | //if (FormWizard.NeedReduceBitrate) 63 | //{ 64 | //} 65 | 66 | //然后判断码率,进行后黑 67 | 68 | #region 测试区域 69 | System.Threading.Thread.Sleep(2000); 70 | #endregion 71 | 72 | return true;//true表示转码成功 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /mp4box/ResourceCulture.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: komaruchan 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System.Reflection; 22 | using System.Resources; 23 | using System.Threading; 24 | using System.Globalization; 25 | 26 | namespace mp4box 27 | { 28 | class ResourceCulture 29 | { 30 | /// 31 | /// Set current culture by name 32 | /// 33 | /// name 34 | public static void SetCurrentCulture(string name) 35 | { 36 | if (string.IsNullOrEmpty(name)) 37 | { 38 | name = "en-US"; 39 | } 40 | 41 | Thread.CurrentThread.CurrentCulture = new CultureInfo(name); 42 | } 43 | 44 | /// 45 | /// Get string by id 46 | /// 47 | /// id 48 | /// current language string 49 | public static string GetString(string id) 50 | { 51 | string strCurLanguage = ""; 52 | 53 | try 54 | { 55 | ResourceManager rm = new ResourceManager("GlobalizationTest.Resource", Assembly.GetExecutingAssembly()); 56 | CultureInfo ci = Thread.CurrentThread.CurrentCulture; 57 | strCurLanguage = rm.GetString(id, ci); 58 | } 59 | catch 60 | { 61 | strCurLanguage = "No id:" + id + ", please add."; 62 | } 63 | 64 | return strCurLanguage; 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /ControlExs/Enums/WindowStyle.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | 24 | namespace ControlExs 25 | { 26 | 27 | /**************************************************************** 28 | * 29 | * Author:苦笑 30 | * Blog: http://www.cnblogs.com/Keep-Silence-/ 31 | * Date: 2013-2-22 32 | * 33 | *****************************************************************/ 34 | 35 | 36 | public enum WindowStyle : uint 37 | { 38 | WS_OVERLAPPED = 0x00000000, 39 | WS_POPUP = 0x80000000, 40 | WS_CHILD = 0x40000000, 41 | WS_MINIMIZE = 0x20000000, 42 | WS_VISIBLE = 0x10000000, 43 | WS_DISABLED = 0x08000000, 44 | WS_CLIPSIBLINGS = 0x04000000, 45 | WS_CLIPCHILDREN = 0x02000000, 46 | WS_MAXIMIZE = 0x01000000, 47 | WS_CAPTION = 0x00C00000, 48 | WS_BORDER = 0x00800000, 49 | WS_DLGFRAME = 0x00400000, 50 | WS_VSCROLL = 0x00200000, 51 | WS_HSCROLL = 0x00100000, 52 | WS_SYSMENU = 0x00080000, 53 | WS_THICKFRAME = 0x00040000, 54 | WS_GROUP = 0x00020000, 55 | WS_TABSTOP = 0x00010000, 56 | WS_MINIMIZEBOX = 0x00020000, 57 | WS_MAXIMIZEBOX = 0x00010000, 58 | WS_TILED = WS_OVERLAPPED, 59 | WS_ICONIC = WS_MINIMIZE, 60 | WS_SIZEBOX = WS_THICKFRAME, 61 | WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW, 62 | WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | 63 | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX), 64 | WS_POPUPWINDOW = (WS_POPUP | WS_BORDER | WS_SYSMENU), 65 | WS_CHILDWINDOW = (WS_CHILD) 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本:4.0.30319.18444 5 | // 6 | // 对此文件的更改可能会导致不正确的行为,并且如果 7 | // 重新生成代码,这些更改将会丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace XwWizard.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// 一个强类型的资源类,用于查找本地化的字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// 返回此类使用的缓存的 ResourceManager 实例。 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XwWizard.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// 使用此强类型资源类,为所有资源查找 51 | /// 重写当前线程的 CurrentUICulture 属性。 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /mp4box/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace mp4box.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("mp4box.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /ControlExs/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.34014 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ControlExs.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources { 26 | 27 | private static global::System.Resources.ResourceManager resourceMan; 28 | 29 | private static global::System.Globalization.CultureInfo resourceCulture; 30 | 31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() { 33 | } 34 | 35 | /// 36 | /// Returns the cached ResourceManager instance used by this class. 37 | /// 38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 39 | internal static global::System.Resources.ResourceManager ResourceManager { 40 | get { 41 | if (object.ReferenceEquals(resourceMan, null)) { 42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ControlExs.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Overrides the current thread's CurrentUICulture property for all 51 | /// resource lookups using this strongly typed resource class. 52 | /// 53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 54 | internal static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /mp4box/PreviewForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace mp4box 2 | { 3 | partial class PreviewForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PreviewForm)); 32 | this.axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer(); 33 | ((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).BeginInit(); 34 | this.SuspendLayout(); 35 | // 36 | // axWindowsMediaPlayer1 37 | // 38 | this.axWindowsMediaPlayer1.Dock = System.Windows.Forms.DockStyle.Fill; 39 | this.axWindowsMediaPlayer1.Enabled = true; 40 | this.axWindowsMediaPlayer1.Location = new System.Drawing.Point(0, 0); 41 | this.axWindowsMediaPlayer1.Name = "axWindowsMediaPlayer1"; 42 | this.axWindowsMediaPlayer1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axWindowsMediaPlayer1.OcxState"))); 43 | this.axWindowsMediaPlayer1.Size = new System.Drawing.Size(640, 480); 44 | this.axWindowsMediaPlayer1.TabIndex = 0; 45 | // 46 | // PreviewForm 47 | // 48 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 49 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 50 | this.ClientSize = new System.Drawing.Size(640, 480); 51 | this.Controls.Add(this.axWindowsMediaPlayer1); 52 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 53 | this.Name = "PreviewForm"; 54 | this.Text = "Preview"; 55 | this.Load += new System.EventHandler(this.Form2_Load); 56 | this.SizeChanged += new System.EventHandler(this.Form2_SizeChanged); 57 | ((System.ComponentModel.ISupportInitialize)(this.axWindowsMediaPlayer1)).EndInit(); 58 | this.ResumeLayout(false); 59 | 60 | } 61 | 62 | #endregion 63 | 64 | public AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1; 65 | } 66 | } -------------------------------------------------------------------------------- /mp4box.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.30501.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mp4box", "mp4box\mp4box.csproj", "{8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlExs", "ControlExs\ControlExs.csproj", "{05CC89B6-EF40-490F-A663-228AE6468776}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XwWizard", "XwWizard\WindowsFormsApplication1\XwWizard.csproj", "{671085C2-29E1-4396-BED4-9A760D977F7B}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|x86 = Debug|x86 16 | Release|Any CPU = Release|Any CPU 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Debug|Any CPU.ActiveCfg = Debug|x86 21 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Debug|Any CPU.Build.0 = Debug|x86 22 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Debug|x86.ActiveCfg = Debug|x86 23 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Debug|x86.Build.0 = Debug|x86 24 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Release|x86.ActiveCfg = Release|x86 27 | {8EDD4344-3B13-4C38-AB50-9AAA036F5CDD}.Release|x86.Build.0 = Release|x86 28 | {05CC89B6-EF40-490F-A663-228AE6468776}.Debug|Any CPU.ActiveCfg = Debug|x86 29 | {05CC89B6-EF40-490F-A663-228AE6468776}.Debug|Any CPU.Build.0 = Debug|x86 30 | {05CC89B6-EF40-490F-A663-228AE6468776}.Debug|x86.ActiveCfg = Debug|x86 31 | {05CC89B6-EF40-490F-A663-228AE6468776}.Debug|x86.Build.0 = Debug|x86 32 | {05CC89B6-EF40-490F-A663-228AE6468776}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {05CC89B6-EF40-490F-A663-228AE6468776}.Release|Any CPU.Build.0 = Release|Any CPU 34 | {05CC89B6-EF40-490F-A663-228AE6468776}.Release|x86.ActiveCfg = Release|x86 35 | {05CC89B6-EF40-490F-A663-228AE6468776}.Release|x86.Build.0 = Release|x86 36 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Debug|Any CPU.ActiveCfg = Debug|x86 37 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Debug|Any CPU.Build.0 = Debug|x86 38 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Debug|x86.ActiveCfg = Debug|x86 39 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Debug|x86.Build.0 = Debug|x86 40 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Release|Any CPU.Build.0 = Release|Any CPU 42 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Release|x86.ActiveCfg = Release|x86 43 | {671085C2-29E1-4396-BED4-9A760D977F7B}.Release|x86.Build.0 = Release|x86 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | EndGlobal 49 | -------------------------------------------------------------------------------- /mp4box/Program.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: komaruchan 5 | // LunarShaddow 6 | // 7 | // Licensed under the Apache License, Version 2.0 (the "License"); 8 | // you may not use this file except in compliance with the License. 9 | // You may obtain a copy of the License at 10 | // 11 | // http://www.apache.org/licenses/LICENSE-2.0 12 | // 13 | // Unless required by applicable law or agreed to in writing, software 14 | // distributed under the License is distributed on an "AS IS" BASIS, 15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 16 | // express or implied. 17 | // See the License for the specific language governing permissions 18 | // and limitations under the License. 19 | // ------------------------------------------------------------------- 20 | // 21 | 22 | using System; 23 | using System.Collections.Generic; 24 | using System.Configuration; 25 | using System.Diagnostics; 26 | using System.IO; 27 | using System.Reflection; 28 | using System.Runtime.InteropServices; 29 | using System.Threading; 30 | using System.Windows.Forms; 31 | namespace mp4box 32 | { 33 | static class Program 34 | { 35 | private class NativeMethods 36 | { 37 | [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] 38 | public static extern bool SetDllDirectory(string path); 39 | 40 | public static void SetUnmanagedDllDirectory() 41 | { 42 | string path = Path.Combine(Application.StartupPath, "tools"); 43 | if (IntPtr.Size == 8) 44 | path = Path.Combine(path, "x64"); 45 | if (!SetDllDirectory(path)) 46 | throw new System.ComponentModel.Win32Exception(); 47 | } 48 | } 49 | 50 | /// 51 | /// 应用程序的主入口点。 52 | /// 53 | [STAThread] 54 | static void Main() 55 | { 56 | Application.EnableVisualStyles(); 57 | Application.SetCompatibleTextRenderingDefault(false); 58 | NativeMethods.SetUnmanagedDllDirectory(); 59 | 60 | var modulename = Process.GetCurrentProcess().MainModule.ModuleName; 61 | var procesname = Path.GetFileNameWithoutExtension(modulename); 62 | Process[] processes = Process.GetProcessesByName(procesname); 63 | if (processes.Length > 1) 64 | { 65 | MessageBox.Show("你已经打开了一个小丸工具箱喔!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 66 | Application.Exit(); 67 | return; 68 | } 69 | 70 | if (ConfigurationManager.AppSettings["SplashScreen"] == "True") 71 | { 72 | Application.Run(new mycontext()); 73 | } 74 | else 75 | { 76 | Application.Run(new MainForm()); 77 | } 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.sln.docstates 8 | 9 | # toolchain 10 | 11 | xiaowan/ 12 | 13 | # Build results 14 | 15 | [Dd]ebug/ 16 | [Rr]elease/ 17 | x86/ 18 | x64/ 19 | build/ 20 | [Bb]in/ 21 | [Oo]bj/ 22 | *.csproj.FileListAbsolute.txt 23 | 24 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets 25 | !packages/*/build/ 26 | 27 | # MSTest test Results 28 | [Tt]est[Rr]esult*/ 29 | [Bb]uild[Ll]og.* 30 | 31 | *_i.c 32 | *_p.c 33 | *.ilk 34 | *.meta 35 | *.obj 36 | *.pch 37 | *.pdb 38 | *.pgc 39 | *.pgd 40 | *.rsp 41 | *.sbr 42 | *.tlb 43 | *.tli 44 | *.tlh 45 | *.tmp 46 | *.tmp_proj 47 | *.log 48 | *.vspscc 49 | *.vssscc 50 | .builds 51 | *.pidb 52 | *.log 53 | *.scc 54 | 55 | # Visual C++ cache files 56 | ipch/ 57 | *.aps 58 | *.ncb 59 | *.opensdf 60 | *.sdf 61 | *.cachefile 62 | 63 | # Visual Studio profiler 64 | *.psess 65 | *.vsp 66 | *.vspx 67 | 68 | # Guidance Automation Toolkit 69 | *.gpState 70 | 71 | # ReSharper is a .NET coding add-in 72 | _ReSharper*/ 73 | *.[Rr]e[Ss]harper 74 | 75 | # TeamCity is a build add-in 76 | _TeamCity* 77 | 78 | # DotCover is a Code Coverage Tool 79 | *.dotCover 80 | 81 | # NCrunch 82 | *.ncrunch* 83 | .*crunch*.local.xml 84 | 85 | # Installshield output folder 86 | [Ee]xpress/ 87 | 88 | # DocProject is a documentation generator add-in 89 | DocProject/buildhelp/ 90 | DocProject/Help/*.HxT 91 | DocProject/Help/*.HxC 92 | DocProject/Help/*.hhc 93 | DocProject/Help/*.hhk 94 | DocProject/Help/*.hhp 95 | DocProject/Help/Html2 96 | DocProject/Help/html 97 | 98 | # Click-Once directory 99 | publish/ 100 | 101 | # Publish Web Output 102 | *.Publish.xml 103 | 104 | # NuGet Packages Directory 105 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 106 | #packages/ 107 | 108 | # Windows Azure Build Output 109 | csx 110 | *.build.csdef 111 | 112 | # Windows Store app package directory 113 | AppPackages/ 114 | 115 | # Others 116 | sql/ 117 | *.Cache 118 | ClientBin/ 119 | [Ss]tyle[Cc]op.* 120 | ~$* 121 | *~ 122 | *.dbmdl 123 | *.[Pp]ublish.xml 124 | *.pfx 125 | *.publishsettings 126 | 127 | # RIA/Silverlight projects 128 | Generated_Code/ 129 | 130 | # Backup & report files from converting an old project file to a newer 131 | # Visual Studio version. Backup files are not needed, because we have git ;-) 132 | _UpgradeReport_Files/ 133 | Backup*/ 134 | UpgradeLog*.XML 135 | UpgradeLog*.htm 136 | 137 | # SQL Server files 138 | App_Data/*.mdf 139 | App_Data/*.ldf 140 | 141 | 142 | #LightSwitch generated files 143 | GeneratedArtifacts/ 144 | _Pvt_Extensions/ 145 | ModelManifest.xml 146 | 147 | # ========================= 148 | # Windows detritus 149 | # ========================= 150 | 151 | # Windows image file caches 152 | Thumbs.db 153 | ehthumbs.db 154 | 155 | # Folder config file 156 | Desktop.ini 157 | 158 | # Recycle Bin used on file shares 159 | $RECYCLE.BIN/ 160 | 161 | # Mac desktop service store files 162 | .DS_Store 163 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep4.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard.WizardSteps 2 | { 3 | partial class FormStep4 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.panelStep4 = new System.Windows.Forms.Panel(); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.panelStep4.SuspendLayout(); 34 | this.SuspendLayout(); 35 | // 36 | // panelStep4 37 | // 38 | this.panelStep4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 39 | this.panelStep4.Controls.Add(this.label1); 40 | this.panelStep4.Location = new System.Drawing.Point(32, 41); 41 | this.panelStep4.Name = "panelStep4"; 42 | this.panelStep4.Size = new System.Drawing.Size(720, 480); 43 | this.panelStep4.TabIndex = 3; 44 | // 45 | // label1 46 | // 47 | this.label1.AutoSize = true; 48 | this.label1.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 49 | this.label1.ForeColor = System.Drawing.Color.White; 50 | this.label1.Location = new System.Drawing.Point(273, 215); 51 | this.label1.Name = "label1"; 52 | this.label1.Size = new System.Drawing.Size(174, 50); 53 | this.label1.TabIndex = 0; 54 | this.label1.Text = "正在处理"; 55 | // 56 | // FormStep4 57 | // 58 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 59 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 60 | this.ClientSize = new System.Drawing.Size(784, 562); 61 | this.Controls.Add(this.panelStep4); 62 | this.Name = "FormStep4"; 63 | this.Text = "FormStep4"; 64 | this.panelStep4.ResumeLayout(false); 65 | this.panelStep4.PerformLayout(); 66 | this.ResumeLayout(false); 67 | 68 | } 69 | 70 | #endregion 71 | 72 | public System.Windows.Forms.Panel panelStep4; 73 | private System.Windows.Forms.Label label1; 74 | } 75 | } -------------------------------------------------------------------------------- /mp4box/Supplements.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LunarShaddow 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Drawing; 25 | using System.Windows.Forms; 26 | using System.Text; 27 | 28 | namespace mp4box 29 | { 30 | namespace Extension 31 | { 32 | /// 33 | /// A wrapper to make Invoke more easy by using Method Extension. 34 | /// 35 | static class Invoker 36 | { 37 | public static void InvokeIfRequired(this ISynchronizeInvoke control, MethodInvoker action) 38 | { 39 | if (control.InvokeRequired) 40 | control.Invoke(action, null); 41 | else 42 | action(); 43 | } 44 | } 45 | 46 | /// 47 | /// Handmade progress bar. Currently not in use. 48 | /// 49 | class ProgressBarEx : ProgressBar 50 | { 51 | public ProgressBarEx() 52 | { 53 | // Modify the ControlStyles flags 54 | //http://msdn.microsoft.com/en-us/library/system.windows.forms.controlstyles.aspx 55 | SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); 56 | // Initialize Property 57 | CustomText = ""; 58 | Format = new StringFormat(StringFormatFlags.NoWrap); 59 | Format.Alignment = StringAlignment.Center; 60 | Format.LineAlignment = StringAlignment.Center; 61 | } 62 | 63 | public String CustomText { get; set; } 64 | 65 | private StringFormat Format { get; set; } 66 | 67 | protected override void OnPaint(PaintEventArgs e) 68 | { 69 | // let the system do base work first 70 | base.OnPaint(e); 71 | // grab some tools 72 | var rect = ClientRectangle; 73 | var g = e.Graphics; 74 | // draw the background 75 | ProgressBarRenderer.DrawHorizontalBar(g, rect); 76 | rect.Inflate(-3, -3); 77 | // then chunk 78 | if (Value > 0) 79 | { 80 | Rectangle clip = new Rectangle(rect.X, rect.Y, Value * rect.Width / Maximum, rect.Height); 81 | ProgressBarRenderer.DrawHorizontalChunks(g, clip); 82 | } 83 | // append text 84 | g.DrawString(CustomText, SystemFonts.DefaultFont, SystemBrushes.ControlText, 85 | this.DisplayRectangle, Format); 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /ControlExs/Methods/Win32.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13 | // express or implied. 14 | // See the License for the specific language governing permissions 15 | // and limitations under the License. 16 | // ------------------------------------------------------------------- 17 | // 18 | 19 | using System; 20 | using System.Collections.Generic; 21 | 22 | using System.Text; 23 | using System.Runtime.InteropServices; 24 | 25 | namespace ControlExs 26 | { 27 | 28 | /**************************************************************** 29 | * 30 | * Author:苦笑 31 | * Blog: http://www.cnblogs.com/Keep-Silence-/ 32 | * Date: 2013-2-22 33 | * 34 | *****************************************************************/ 35 | 36 | 37 | public class Win32 38 | { 39 | #region Window Const 40 | 41 | public const int WM_KEYDOWN = 0x0100; 42 | public const int WM_KEYUP = 0x0101; 43 | public const int WM_CTLCOLOREDIT = 0x133; 44 | public const int WM_ERASEBKGND = 0x0014; 45 | public const int WM_LBUTTONDOWN = 0x0201; 46 | public const int WM_LBUTTONUP = 0x0202; 47 | public const int WM_LBUTTONDBLCLK = 0x0203; 48 | public const int WM_WINDOWPOSCHANGING = 0x46; 49 | public const int WM_PAINT = 0xF; 50 | public const int WM_CREATE = 0x0001; 51 | public const int WM_ACTIVATE = 0x0006; 52 | public const int WM_NCCREATE = 0x0081; 53 | public const int WM_NCCALCSIZE = 0x0083; 54 | public const int WM_NCPAINT = 0x0085; 55 | public const int WM_NCACTIVATE = 0x0086; 56 | public const int WM_NCLBUTTONDOWN = 0x00A1; 57 | public const int WM_NCLBUTTONUP = 0x00A2; 58 | public const int WM_NCLBUTTONDBLCLK = 0x00A3; 59 | public const int WM_NCMOUSEMOVE = 0x00A0; 60 | 61 | public const int WM_NCHITTEST = 0x0084; 62 | 63 | public const int HTLEFT = 10; 64 | public const int HTRIGHT = 11; 65 | public const int HTTOP = 12; 66 | public const int HTTOPLEFT = 13; 67 | public const int HTTOPRIGHT = 14; 68 | public const int HTBOTTOM = 15; 69 | public const int HTBOTTOMLEFT = 0x10; 70 | public const int HTBOTTOMRIGHT = 17; 71 | public const int HTCAPTION = 2; 72 | public const int HTCLIENT = 1; 73 | 74 | public const int WM_FALSE = 0; 75 | public const int WM_TRUE = 1; 76 | 77 | 78 | 79 | #endregion 80 | 81 | #region Public extern methods 82 | 83 | [DllImport("gdi32.dll")] 84 | public static extern int CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3); 85 | 86 | [DllImport("user32.dll")] 87 | public static extern int SetWindowRgn(IntPtr hwnd, int hRgn, Boolean bRedraw); 88 | 89 | [DllImport("gdi32.dll", EntryPoint = "DeleteObject", CharSet = CharSet.Ansi)] 90 | public static extern int DeleteObject(int hObject); 91 | 92 | [DllImport("user32.dll")] 93 | public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 94 | 95 | [DllImport("user32.dll")] 96 | public static extern bool ReleaseCapture(); 97 | 98 | #endregion 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard.WizardSteps 2 | { 3 | partial class FormStep1 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.panelStep1 = new System.Windows.Forms.Panel(); 32 | this.label1 = new System.Windows.Forms.Label(); 33 | this.label2 = new System.Windows.Forms.Label(); 34 | this.panelStep1.SuspendLayout(); 35 | this.SuspendLayout(); 36 | // 37 | // panelStep1 38 | // 39 | this.panelStep1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 40 | this.panelStep1.Controls.Add(this.label2); 41 | this.panelStep1.Controls.Add(this.label1); 42 | this.panelStep1.Location = new System.Drawing.Point(32, 41); 43 | this.panelStep1.Name = "panelStep1"; 44 | this.panelStep1.Size = new System.Drawing.Size(720, 480); 45 | this.panelStep1.TabIndex = 0; 46 | // 47 | // label1 48 | // 49 | this.label1.AutoSize = true; 50 | this.label1.Font = new System.Drawing.Font("微软雅黑", 32F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 51 | this.label1.ForeColor = System.Drawing.Color.White; 52 | this.label1.Location = new System.Drawing.Point(48, 183); 53 | this.label1.Name = "label1"; 54 | this.label1.Size = new System.Drawing.Size(627, 57); 55 | this.label1.TabIndex = 0; 56 | this.label1.Text = "你是否觉得:过去的转码方式都"; 57 | // 58 | // label2 59 | // 60 | this.label2.AutoSize = true; 61 | this.label2.Font = new System.Drawing.Font("微软雅黑", 44F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 62 | this.label2.ForeColor = System.Drawing.Color.White; 63 | this.label2.Location = new System.Drawing.Point(45, 240); 64 | this.label2.Name = "label2"; 65 | this.label2.Size = new System.Drawing.Size(210, 78); 66 | this.label2.TabIndex = 1; 67 | this.label2.Text = "弱爆了"; 68 | // 69 | // FormStep1 70 | // 71 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 72 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 73 | this.ClientSize = new System.Drawing.Size(784, 562); 74 | this.Controls.Add(this.panelStep1); 75 | this.Name = "FormStep1"; 76 | this.Text = "FormStep1"; 77 | this.panelStep1.ResumeLayout(false); 78 | this.panelStep1.PerformLayout(); 79 | this.ResumeLayout(false); 80 | 81 | } 82 | 83 | #endregion 84 | 85 | private System.Windows.Forms.Label label2; 86 | private System.Windows.Forms.Label label1; 87 | public System.Windows.Forms.Panel panelStep1; 88 | } 89 | } -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep2.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.ComponentModel; 24 | using System.Data; 25 | using System.Drawing; 26 | using System.Linq; 27 | using System.Text; 28 | using System.Windows.Forms; 29 | using System.IO; 30 | 31 | namespace XwWizard.WizardSteps 32 | { 33 | public partial class FormStep2 : Form 34 | { 35 | public FormStep2(FormWizard wizardParent) 36 | { 37 | this.WizardParent = wizardParent; 38 | InitializeComponent(); 39 | } 40 | 41 | private FormWizard WizardParent = null; 42 | 43 | private void button1_Click(object sender, EventArgs e) 44 | { 45 | //TODO: 弹出对话框 46 | if (openFileDialog1.ShowDialog() == DialogResult.OK) 47 | { 48 | if (!File.Exists(openFileDialog1.FileName)) 49 | { 50 | MessageBox.Show("文件不存在!", "骚年你是在玩我", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 51 | return; 52 | } 53 | else 54 | { 55 | FormWizard.VideoFilePath = openFileDialog1.FileName; 56 | 57 | this.CheckFile(); 58 | } 59 | } 60 | } 61 | 62 | /// 63 | /// 判断文件 64 | /// 65 | public void CheckFile() 66 | { 67 | if (!IsVideo()) 68 | { 69 | MessageBox.Show(FormWizard.VideoFilePath + "\n不是视频!", "你又在玩我", 70 | MessageBoxButtons.OK, MessageBoxIcon.Asterisk); 71 | FormWizard.VideoFilePath = null; 72 | return; 73 | } 74 | 75 | FormWizard.NeedEncode = NeedEncode(); 76 | if (FormWizard.NeedEncode) 77 | { 78 | FormWizard.NeedMux = false; 79 | } 80 | else 81 | { 82 | FormWizard.NeedMux = NeedMux(); 83 | } 84 | //if (!FormWizard.NeedEncode)//不需要转码,直接直接封装 85 | //{ 86 | // WizardParent.SwitchToNextStep(); 87 | // return; 88 | //} 89 | 90 | ////Need Encoding 91 | //WizardParent.SwitchToNextStep(); 92 | 93 | WizardParent.SwitchToNextStep(); 94 | } 95 | 96 | /// 97 | /// 判断这个文件是否是视频文件 98 | /// 99 | /// 100 | private bool IsVideo() 101 | { 102 | //FormWizard.VideoFilePath 103 | //判断这个文件是否是视频文件(是否存在视频流) 104 | return MediaInfoTool.IsVideo(FormWizard.VideoFilePath); 105 | } 106 | 107 | /// 108 | /// 判断是否需要转码 109 | /// 110 | /// 111 | private bool NeedEncode() 112 | { 113 | //判断是否需要转码 114 | //H264 + (AAC/MP3)则不需要 115 | return MediaInfoTool.NeedEncoding(FormWizard.VideoFilePath); 116 | } 117 | 118 | private bool NeedMux() 119 | { 120 | return MediaInfoTool.NeedMux(FormWizard.VideoFilePath); 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /mp4box/SplashForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace mp4box 2 | { 3 | partial class SplashForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashForm)); 33 | this.timer = new System.Windows.Forms.Timer(this.components); 34 | this.pictureBox = new System.Windows.Forms.PictureBox(); 35 | this.LuneartTextLabel = new mp4box.ArtTextLabel(); 36 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); 37 | this.SuspendLayout(); 38 | // 39 | // timer 40 | // 41 | this.timer.Enabled = true; 42 | this.timer.Interval = 50; 43 | this.timer.Tick += new System.EventHandler(this.timer_Tick); 44 | // 45 | // pictureBox 46 | // 47 | this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill; 48 | this.pictureBox.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox.Image"))); 49 | this.pictureBox.Location = new System.Drawing.Point(0, 0); 50 | this.pictureBox.Name = "pictureBox"; 51 | this.pictureBox.Size = new System.Drawing.Size(499, 281); 52 | this.pictureBox.TabIndex = 0; 53 | this.pictureBox.TabStop = false; 54 | this.pictureBox.DoubleClick += new System.EventHandler(this.pictureBox_DoubleClick); 55 | // 56 | // LuneartTextLabel 57 | // 58 | this.LuneartTextLabel.AutoSize = true; 59 | this.LuneartTextLabel.BackColor = System.Drawing.Color.Transparent; 60 | this.LuneartTextLabel.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 61 | this.LuneartTextLabel.ForeColor = System.Drawing.Color.LightGoldenrodYellow; 62 | this.LuneartTextLabel.Location = new System.Drawing.Point(350, 176); 63 | this.LuneartTextLabel.Name = "LuneartTextLabel"; 64 | this.LuneartTextLabel.Size = new System.Drawing.Size(100, 29); 65 | this.LuneartTextLabel.TabIndex = 1; 66 | this.LuneartTextLabel.Text = "月儿版"; 67 | // 68 | // SplashForm 69 | // 70 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 71 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 72 | this.ClientSize = new System.Drawing.Size(499, 281); 73 | this.Controls.Add(this.LuneartTextLabel); 74 | this.Controls.Add(this.pictureBox); 75 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 76 | this.Name = "SplashForm"; 77 | this.Text = "小丸工具箱"; 78 | this.Load += new System.EventHandler(this.SplashForm_Load); 79 | this.Paint += new System.Windows.Forms.PaintEventHandler(this.SplashForm_Paint); 80 | ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); 81 | this.ResumeLayout(false); 82 | this.PerformLayout(); 83 | 84 | } 85 | 86 | #endregion 87 | 88 | private System.Windows.Forms.Timer timer; 89 | private System.Windows.Forms.PictureBox pictureBox; 90 | private ArtTextLabel LuneartTextLabel; 91 | } 92 | } -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep5.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard.WizardSteps 2 | { 3 | partial class FormStep5 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.panelStep5 = new System.Windows.Forms.Panel(); 32 | this.btnChooseOutput = new System.Windows.Forms.Button(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.panelStep5.SuspendLayout(); 35 | this.SuspendLayout(); 36 | // 37 | // panelStep5 38 | // 39 | this.panelStep5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 40 | this.panelStep5.Controls.Add(this.btnChooseOutput); 41 | this.panelStep5.Controls.Add(this.label1); 42 | this.panelStep5.Location = new System.Drawing.Point(32, 41); 43 | this.panelStep5.Name = "panelStep5"; 44 | this.panelStep5.Size = new System.Drawing.Size(720, 480); 45 | this.panelStep5.TabIndex = 4; 46 | // 47 | // btnChooseOutput 48 | // 49 | this.btnChooseOutput.AutoSize = true; 50 | this.btnChooseOutput.FlatAppearance.BorderColor = System.Drawing.Color.White; 51 | this.btnChooseOutput.FlatAppearance.BorderSize = 5; 52 | this.btnChooseOutput.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 53 | this.btnChooseOutput.Font = new System.Drawing.Font("微软雅黑", 44F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 54 | this.btnChooseOutput.ForeColor = System.Drawing.Color.White; 55 | this.btnChooseOutput.Location = new System.Drawing.Point(216, 222); 56 | this.btnChooseOutput.Name = "btnChooseOutput"; 57 | this.btnChooseOutput.Size = new System.Drawing.Size(289, 98); 58 | this.btnChooseOutput.TabIndex = 2; 59 | this.btnChooseOutput.Text = "打开看看"; 60 | this.btnChooseOutput.UseVisualStyleBackColor = true; 61 | this.btnChooseOutput.Click += new System.EventHandler(this.btnChooseOutput_Click); 62 | // 63 | // label1 64 | // 65 | this.label1.AutoSize = true; 66 | this.label1.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 67 | this.label1.ForeColor = System.Drawing.Color.White; 68 | this.label1.Location = new System.Drawing.Point(140, 161); 69 | this.label1.Name = "label1"; 70 | this.label1.Size = new System.Drawing.Size(440, 50); 71 | this.label1.TabIndex = 0; 72 | this.label1.Text = "恭喜你,视频处理成功!"; 73 | // 74 | // FormStep5 75 | // 76 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 77 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 78 | this.ClientSize = new System.Drawing.Size(784, 562); 79 | this.Controls.Add(this.panelStep5); 80 | this.Name = "FormStep5"; 81 | this.Text = "FormStep5"; 82 | this.panelStep5.ResumeLayout(false); 83 | this.panelStep5.PerformLayout(); 84 | this.ResumeLayout(false); 85 | 86 | } 87 | 88 | #endregion 89 | 90 | public System.Windows.Forms.Panel panelStep5; 91 | private System.Windows.Forms.Button btnChooseOutput; 92 | private System.Windows.Forms.Label label1; 93 | } 94 | } -------------------------------------------------------------------------------- /mp4box/SplashScreenApplicationContext.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: komaruchan 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | //启动窗体虚基类,继承自ApplicationContext 22 | using System.Windows.Forms; 23 | using System.Threading; 24 | using System; 25 | //启动画面虚基类,启动画面会停留一段时间,该时间是设定的时间和主窗体构造所需时间两个的最大值 26 | public abstract class SplashScreenApplicationContext : ApplicationContext 27 | { 28 | private Form _SplashScreenForm;//启动窗体 29 | private Form _PrimaryForm;//主窗体 30 | private System.Timers.Timer _SplashScreenTimer; 31 | private int _SplashScreenTimerInterVal = 5000;//默认是启动窗体显示5秒 32 | private bool _bSplashScreenClosed = false; 33 | private delegate void DisposeDelegate();//关闭委托,下面需要使用控件的Invoke方法,该方法需要这个委托 34 | public SplashScreenApplicationContext() 35 | { 36 | this.ShowSplashScreen();//这里创建和显示启动窗体 37 | this.MainFormLoad();//这里创建和显示启动主窗体 38 | } 39 | protected abstract void OnCreateSplashScreenForm(); 40 | protected abstract void OnCreateMainForm(); 41 | protected abstract void SetSeconds(); 42 | protected Form SplashScreenForm 43 | { 44 | set 45 | { 46 | this._SplashScreenForm = value; 47 | } 48 | } 49 | protected Form PrimaryForm 50 | {//在派生类中重写OnCreateMainForm方法,在MainFormLoad方法中调用OnCreateMainForm方法 51 | // ,在这里才会真正调用Form1(主窗体)的构造函数,即在启动窗体显示后再调用主窗体的构造函数 52 | // ,以避免这种情况:主窗体构造所需时间较长,在屏幕上许久没有响应,看不到启动窗体 53 | set 54 | { 55 | this._PrimaryForm = value; 56 | } 57 | } 58 | protected int SecondsShow 59 | {//未设置启动画面停留时间时,使用默认时间 60 | set 61 | { 62 | if (value != 0) 63 | { 64 | this._SplashScreenTimerInterVal = 1000 * value; 65 | } 66 | } 67 | } 68 | private void ShowSplashScreen() 69 | { 70 | this.SetSeconds(); 71 | this.OnCreateSplashScreenForm(); 72 | this._SplashScreenTimer = new System.Timers.Timer(((double)(this._SplashScreenTimerInterVal))); 73 | _SplashScreenTimer.Elapsed += new System.Timers.ElapsedEventHandler(new System.Timers.ElapsedEventHandler(this.SplashScreenDisplayTimeUp)); 74 | this._SplashScreenTimer.AutoReset = false; 75 | Thread DisplaySpashScreenThread = new Thread(new ThreadStart(DisplaySplashScreen)); 76 | DisplaySpashScreenThread.Start(); 77 | } 78 | private void DisplaySplashScreen() 79 | { 80 | this._SplashScreenTimer.Enabled = true; 81 | Application.Run(this._SplashScreenForm); 82 | } 83 | private void SplashScreenDisplayTimeUp(object sender, System.Timers.ElapsedEventArgs e) 84 | { 85 | this._SplashScreenTimer.Dispose(); 86 | this._SplashScreenTimer = null; 87 | this._bSplashScreenClosed = true; 88 | } 89 | private void MainFormLoad() 90 | { 91 | this.OnCreateMainForm(); 92 | 93 | while (!(this._bSplashScreenClosed)) 94 | { 95 | Application.DoEvents(); 96 | } 97 | DisposeDelegate SplashScreenFormDisposeDelegate = new DisposeDelegate(this._SplashScreenForm.Dispose ); 98 | this._SplashScreenForm.Invoke(SplashScreenFormDisposeDelegate); 99 | this._SplashScreenForm = null; 100 | //必须先显示,再激活,否则主窗体不能在启动窗体消失后出现 101 | this._PrimaryForm.Show(); 102 | this._PrimaryForm.TopMost = true; 103 | this._PrimaryForm.TopMost = false; 104 | //this._PrimaryForm.BringToFront(); 105 | this._PrimaryForm.Closed += new EventHandler(_PrimaryForm_Closed); 106 | } 107 | private void _PrimaryForm_Closed(object sender, EventArgs e) 108 | { 109 | base.ExitThread(); 110 | } 111 | } 112 | 113 | 114 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep2.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard.WizardSteps 2 | { 3 | partial class FormStep2 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.panelStep2 = new System.Windows.Forms.Panel(); 32 | this.btnChooseFile = new System.Windows.Forms.Button(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); 35 | this.panelStep2.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // panelStep2 39 | // 40 | this.panelStep2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 41 | this.panelStep2.Controls.Add(this.btnChooseFile); 42 | this.panelStep2.Controls.Add(this.label1); 43 | this.panelStep2.Location = new System.Drawing.Point(32, 41); 44 | this.panelStep2.Name = "panelStep2"; 45 | this.panelStep2.Size = new System.Drawing.Size(720, 480); 46 | this.panelStep2.TabIndex = 1; 47 | // 48 | // btnChooseFile 49 | // 50 | this.btnChooseFile.AutoSize = true; 51 | this.btnChooseFile.FlatAppearance.BorderColor = System.Drawing.Color.White; 52 | this.btnChooseFile.FlatAppearance.BorderSize = 5; 53 | this.btnChooseFile.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 54 | this.btnChooseFile.Font = new System.Drawing.Font("微软雅黑", 44F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 55 | this.btnChooseFile.ForeColor = System.Drawing.Color.White; 56 | this.btnChooseFile.Location = new System.Drawing.Point(216, 191); 57 | this.btnChooseFile.Name = "btnChooseFile"; 58 | this.btnChooseFile.Size = new System.Drawing.Size(289, 98); 59 | this.btnChooseFile.TabIndex = 1; 60 | this.btnChooseFile.Text = "选择文件"; 61 | this.btnChooseFile.UseVisualStyleBackColor = true; 62 | this.btnChooseFile.Click += new System.EventHandler(this.button1_Click); 63 | // 64 | // label1 65 | // 66 | this.label1.AutoSize = true; 67 | this.label1.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 68 | this.label1.ForeColor = System.Drawing.Color.White; 69 | this.label1.Location = new System.Drawing.Point(121, 109); 70 | this.label1.Name = "label1"; 71 | this.label1.Size = new System.Drawing.Size(478, 50); 72 | this.label1.TabIndex = 0; 73 | this.label1.Text = "那么,少年,我们开始吧!"; 74 | // 75 | // openFileDialog1 76 | // 77 | this.openFileDialog1.Filter = "视频文件|*.*"; 78 | // 79 | // FormStep2 80 | // 81 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 82 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 83 | this.ClientSize = new System.Drawing.Size(784, 562); 84 | this.Controls.Add(this.panelStep2); 85 | this.Name = "FormStep2"; 86 | this.Text = "FormStep2"; 87 | this.panelStep2.ResumeLayout(false); 88 | this.panelStep2.PerformLayout(); 89 | this.ResumeLayout(false); 90 | 91 | } 92 | 93 | #endregion 94 | 95 | public System.Windows.Forms.Panel panelStep2; 96 | private System.Windows.Forms.Label label1; 97 | private System.Windows.Forms.Button btnChooseFile; 98 | private System.Windows.Forms.OpenFileDialog openFileDialog1; 99 | } 100 | } -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep3.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard.WizardSteps 2 | { 3 | partial class FormStep3 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.panelStep3 = new System.Windows.Forms.Panel(); 32 | this.btnChooseOutput = new System.Windows.Forms.Button(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); 35 | this.panelStep3.SuspendLayout(); 36 | this.SuspendLayout(); 37 | // 38 | // panelStep3 39 | // 40 | this.panelStep3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 41 | this.panelStep3.Controls.Add(this.btnChooseOutput); 42 | this.panelStep3.Controls.Add(this.label1); 43 | this.panelStep3.Location = new System.Drawing.Point(32, 41); 44 | this.panelStep3.Name = "panelStep3"; 45 | this.panelStep3.Size = new System.Drawing.Size(720, 480); 46 | this.panelStep3.TabIndex = 2; 47 | // 48 | // btnChooseOutput 49 | // 50 | this.btnChooseOutput.AutoSize = true; 51 | this.btnChooseOutput.FlatAppearance.BorderColor = System.Drawing.Color.White; 52 | this.btnChooseOutput.FlatAppearance.BorderSize = 5; 53 | this.btnChooseOutput.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 54 | this.btnChooseOutput.Font = new System.Drawing.Font("微软雅黑", 44F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 55 | this.btnChooseOutput.ForeColor = System.Drawing.Color.White; 56 | this.btnChooseOutput.Location = new System.Drawing.Point(216, 191); 57 | this.btnChooseOutput.Name = "btnChooseOutput"; 58 | this.btnChooseOutput.Size = new System.Drawing.Size(289, 98); 59 | this.btnChooseOutput.TabIndex = 1; 60 | this.btnChooseOutput.Text = "指定输出"; 61 | this.btnChooseOutput.UseVisualStyleBackColor = true; 62 | this.btnChooseOutput.Click += new System.EventHandler(this.btnChooseOutput_Click); 63 | // 64 | // label1 65 | // 66 | this.label1.AutoSize = true; 67 | this.label1.Font = new System.Drawing.Font("微软雅黑", 28F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 68 | this.label1.ForeColor = System.Drawing.Color.White; 69 | this.label1.Location = new System.Drawing.Point(235, 109); 70 | this.label1.Name = "label1"; 71 | this.label1.Size = new System.Drawing.Size(250, 50); 72 | this.label1.TabIndex = 0; 73 | this.label1.Text = "输出到哪里?"; 74 | // 75 | // saveFileDialog1 76 | // 77 | this.saveFileDialog1.FileName = "*.flv"; 78 | this.saveFileDialog1.Filter = "FLV|*.flv|MP4|*.mp4|MKV|*.mkv|All Files|*.*"; 79 | // 80 | // FormStep3 81 | // 82 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 83 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 84 | this.ClientSize = new System.Drawing.Size(784, 562); 85 | this.Controls.Add(this.panelStep3); 86 | this.Name = "FormStep3"; 87 | this.Text = "FormStep3"; 88 | this.panelStep3.ResumeLayout(false); 89 | this.panelStep3.PerformLayout(); 90 | this.ResumeLayout(false); 91 | 92 | } 93 | 94 | #endregion 95 | 96 | public System.Windows.Forms.Panel panelStep3; 97 | private System.Windows.Forms.Button btnChooseOutput; 98 | private System.Windows.Forms.Label label1; 99 | private System.Windows.Forms.SaveFileDialog saveFileDialog1; 100 | } 101 | } -------------------------------------------------------------------------------- /mp4box/WorkingForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace mp4box 2 | { 3 | partial class WorkingForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.components = new System.ComponentModel.Container(); 32 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WorkingForm)); 33 | this.buttonAbort = new System.Windows.Forms.Button(); 34 | this.buttonSave = new System.Windows.Forms.Button(); 35 | this.richTextBoxOutput = new System.Windows.Forms.RichTextBox(); 36 | this.labelworkCount = new System.Windows.Forms.Label(); 37 | this.progressBarX264 = new System.Windows.Forms.ProgressBar(); 38 | this.labelProgress = new System.Windows.Forms.Label(); 39 | this.notifyIcon = new System.Windows.Forms.NotifyIcon(this.components); 40 | this.SuspendLayout(); 41 | // 42 | // buttonAbort 43 | // 44 | resources.ApplyResources(this.buttonAbort, "buttonAbort"); 45 | this.buttonAbort.Name = "buttonAbort"; 46 | this.buttonAbort.UseVisualStyleBackColor = true; 47 | this.buttonAbort.Click += new System.EventHandler(this.buttonAbort_Click); 48 | // 49 | // buttonSave 50 | // 51 | resources.ApplyResources(this.buttonSave, "buttonSave"); 52 | this.buttonSave.Name = "buttonSave"; 53 | this.buttonSave.UseVisualStyleBackColor = true; 54 | this.buttonSave.Click += new System.EventHandler(this.buttonSave_Click); 55 | // 56 | // richTextBoxOutput 57 | // 58 | resources.ApplyResources(this.richTextBoxOutput, "richTextBoxOutput"); 59 | this.richTextBoxOutput.BackColor = System.Drawing.Color.White; 60 | this.richTextBoxOutput.Name = "richTextBoxOutput"; 61 | this.richTextBoxOutput.ReadOnly = true; 62 | this.richTextBoxOutput.VScroll += new System.EventHandler(this.richTextBoxOutput_VScroll); 63 | this.richTextBoxOutput.Enter += new System.EventHandler(this.richTextBoxOutput_Enter); 64 | // 65 | // labelworkCount 66 | // 67 | resources.ApplyResources(this.labelworkCount, "labelworkCount"); 68 | this.labelworkCount.Name = "labelworkCount"; 69 | // 70 | // progressBarX264 71 | // 72 | resources.ApplyResources(this.progressBarX264, "progressBarX264"); 73 | this.progressBarX264.Maximum = 1000; 74 | this.progressBarX264.Name = "progressBarX264"; 75 | // 76 | // labelProgress 77 | // 78 | resources.ApplyResources(this.labelProgress, "labelProgress"); 79 | this.labelProgress.Name = "labelProgress"; 80 | // 81 | // notifyIcon 82 | // 83 | resources.ApplyResources(this.notifyIcon, "notifyIcon"); 84 | this.notifyIcon.MouseClick += new System.Windows.Forms.MouseEventHandler(this.notifyIcon_MouseClick); 85 | // 86 | // WorkingForm 87 | // 88 | resources.ApplyResources(this, "$this"); 89 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 90 | this.Controls.Add(this.labelProgress); 91 | this.Controls.Add(this.labelworkCount); 92 | this.Controls.Add(this.progressBarX264); 93 | this.Controls.Add(this.richTextBoxOutput); 94 | this.Controls.Add(this.buttonSave); 95 | this.Controls.Add(this.buttonAbort); 96 | this.Name = "WorkingForm"; 97 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.WorkingForm_FormClosing); 98 | this.Load += new System.EventHandler(this.WorkingForm_Load); 99 | this.Resize += new System.EventHandler(this.WorkingForm_Resize); 100 | this.ResumeLayout(false); 101 | this.PerformLayout(); 102 | 103 | } 104 | 105 | #endregion 106 | 107 | private System.Windows.Forms.Button buttonAbort; 108 | private System.Windows.Forms.Button buttonSave; 109 | private System.Windows.Forms.RichTextBox richTextBoxOutput; 110 | private System.Windows.Forms.ProgressBar progressBarX264; 111 | private System.Windows.Forms.Label labelworkCount; 112 | private System.Windows.Forms.Label labelProgress; 113 | private System.Windows.Forms.NotifyIcon notifyIcon; 114 | } 115 | } -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/FormWizard.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace XwWizard 2 | { 3 | partial class FormWizard 4 | { 5 | /// 6 | /// 必需的设计器变量。 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// 清理所有正在使用的资源。 12 | /// 13 | /// 如果应释放托管资源,为 true;否则为 false。 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Windows 窗体设计器生成的代码 24 | 25 | /// 26 | /// 设计器支持所需的方法 - 不要 27 | /// 使用代码编辑器修改此方法的内容。 28 | /// 29 | private void InitializeComponent() 30 | { 31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormWizard)); 32 | this.btnNext = new System.Windows.Forms.Button(); 33 | this.btnPrev = new System.Windows.Forms.Button(); 34 | this.btnCancel = new System.Windows.Forms.Button(); 35 | this.SuspendLayout(); 36 | // 37 | // btnNext 38 | // 39 | this.btnNext.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 40 | this.btnNext.FlatAppearance.BorderColor = System.Drawing.Color.White; 41 | this.btnNext.FlatAppearance.BorderSize = 2; 42 | this.btnNext.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 43 | this.btnNext.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 44 | this.btnNext.ForeColor = System.Drawing.Color.White; 45 | this.btnNext.Location = new System.Drawing.Point(633, 438); 46 | this.btnNext.Name = "btnNext"; 47 | this.btnNext.Size = new System.Drawing.Size(75, 32); 48 | this.btnNext.TabIndex = 0; 49 | this.btnNext.Text = "下一步"; 50 | this.btnNext.UseVisualStyleBackColor = false; 51 | this.btnNext.Click += new System.EventHandler(this.btnNext_Click); 52 | // 53 | // btnPrev 54 | // 55 | this.btnPrev.AutoSize = true; 56 | this.btnPrev.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 57 | this.btnPrev.FlatAppearance.BorderColor = System.Drawing.Color.White; 58 | this.btnPrev.FlatAppearance.BorderSize = 2; 59 | this.btnPrev.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 60 | this.btnPrev.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 61 | this.btnPrev.ForeColor = System.Drawing.Color.White; 62 | this.btnPrev.Location = new System.Drawing.Point(552, 438); 63 | this.btnPrev.Name = "btnPrev"; 64 | this.btnPrev.Size = new System.Drawing.Size(75, 32); 65 | this.btnPrev.TabIndex = 1; 66 | this.btnPrev.Text = "上一步"; 67 | this.btnPrev.UseVisualStyleBackColor = false; 68 | this.btnPrev.Click += new System.EventHandler(this.btnPrev_Click); 69 | // 70 | // btnCancel 71 | // 72 | this.btnCancel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 73 | this.btnCancel.FlatAppearance.BorderColor = System.Drawing.Color.White; 74 | this.btnCancel.FlatAppearance.BorderSize = 2; 75 | this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 76 | this.btnCancel.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); 77 | this.btnCancel.ForeColor = System.Drawing.Color.White; 78 | this.btnCancel.Location = new System.Drawing.Point(471, 438); 79 | this.btnCancel.Name = "btnCancel"; 80 | this.btnCancel.Size = new System.Drawing.Size(75, 32); 81 | this.btnCancel.TabIndex = 2; 82 | this.btnCancel.Text = "取消"; 83 | this.btnCancel.UseVisualStyleBackColor = false; 84 | // 85 | // FormWizard 86 | // 87 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); 88 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 89 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(12)))), ((int)(((byte)(67)))), ((int)(((byte)(122))))); 90 | this.ClientSize = new System.Drawing.Size(720, 480); 91 | this.Controls.Add(this.btnCancel); 92 | this.Controls.Add(this.btnPrev); 93 | this.Controls.Add(this.btnNext); 94 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 95 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 96 | this.MaximizeBox = false; 97 | this.Name = "FormWizard"; 98 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 99 | this.Text = "快速通道"; 100 | this.Load += new System.EventHandler(this.FormWizard_Load); 101 | this.ResumeLayout(false); 102 | this.PerformLayout(); 103 | 104 | } 105 | 106 | #endregion 107 | 108 | private System.Windows.Forms.Button btnNext; 109 | private System.Windows.Forms.Button btnPrev; 110 | private System.Windows.Forms.Button btnCancel; 111 | } 112 | } 113 | 114 | -------------------------------------------------------------------------------- /mp4box/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /ControlExs/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/FormEx/FormEx.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep1.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep4.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep5.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /ControlExs/ControlExs/QQControls/QQMessageBox/QQMessageBox.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /mp4box/Cmd.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | using System.Diagnostics; 26 | using System.Windows.Forms; 27 | using System.IO; 28 | using System.Threading; 29 | 30 | namespace mp4box 31 | { 32 | class Cmd 33 | { 34 | 35 | /// 36 | /// 自动加引号 37 | /// 38 | /// 39 | /// 40 | public static string FormatPath(string path) 41 | { 42 | if (string.IsNullOrEmpty(path)) { return null; } 43 | string ret = null; 44 | ret = path.Replace("\"", ""); 45 | if (ret.Contains(" ")) { ret = "\"" + ret + "\""; } 46 | return ret; 47 | } 48 | 49 | /// 50 | /// concat:D:\一二三123.png 可以防止FFMpeg不认中文名输入文件的Bug 51 | /// 52 | /// 53 | /// 54 | public static string ConcatProtocol(string path) 55 | { 56 | return FormatPath("concat:" + path); 57 | } 58 | 59 | /// 60 | /// 防止文件或目录重名 61 | /// 62 | /// 原路径 63 | /// 不会重名的路径 64 | public static string GetSuitablePath(string oriPath_) 65 | { 66 | if (string.IsNullOrEmpty(oriPath_)) { return null; } 67 | string oriPath = oriPath_.Replace("\"", string.Empty);//去掉引号 68 | 69 | if ((!File.Exists(oriPath)) && (!Directory.Exists(oriPath))) 70 | { 71 | return oriPath; 72 | } 73 | int i = 0; 74 | string ext = Path.GetExtension(oriPath); 75 | string str = oriPath.Remove(oriPath.Length - ext.Length) + "_" + i; 76 | while (File.Exists(str + ext) || Directory.Exists(str + ext)) 77 | { 78 | i++; 79 | str = oriPath + "_" + i; 80 | } 81 | 82 | return str + ext; 83 | } 84 | /// 85 | /// 输入:目标文件的 路径或所在目录; 86 | /// 输入:原始文件的路径; 87 | /// 输出:输出文件的路径。 88 | /// 用目标目录或文件路径(取自tbOutput),和输入的文件,返回一个供输出的文件路径。 89 | /// 90 | /// 目标目录或文件路径 91 | /// 输入的文件(若DestDirOrFile是文件,则忽略此项) 92 | /// 换扩展名 93 | /// 94 | public static string GetSimilarFilePath(string DestDirOrFile_, string SrcFile_, string dotExtension) 95 | { 96 | if (string.IsNullOrEmpty(DestDirOrFile_)) { return null; } 97 | if (string.IsNullOrEmpty(SrcFile_)) { return null; } 98 | string DestDirOrFile = DestDirOrFile_.Replace("\"", string.Empty); 99 | string SrcFile = SrcFile_.Replace("\"", string.Empty);//去掉引号 100 | 101 | if (DestDirOrFile.EndsWith("\\"))//目录 102 | { 103 | if (string.IsNullOrEmpty(dotExtension))//没有指定扩展名 104 | { 105 | return DestDirOrFile + Path.GetFileName(SrcFile); 106 | } 107 | else//指定了扩展名 108 | { 109 | return DestDirOrFile + Path.GetFileNameWithoutExtension(SrcFile) + dotExtension; 110 | } 111 | } 112 | else 113 | { 114 | //单文件,已经设置好了输出 115 | //DestDirOrFile是文件路径 116 | 117 | if (string.IsNullOrEmpty(dotExtension))//没有指定扩展名 118 | { 119 | return DestDirOrFile; 120 | } 121 | else//指定了扩展名 122 | { 123 | return ChangeExt(DestDirOrFile, dotExtension);//换扩展名 124 | } 125 | } 126 | } 127 | /// 128 | /// 用目标目录或文件路径(取自tbOutput),和输入的文件,返回一个供输出的文件路径。 129 | /// 130 | /// 目标目录或文件路径 131 | /// 输入的文件 132 | /// 133 | public static string GetSimilarFilePath(string DestDirOrFile, string SrcFile) 134 | { 135 | return GetSimilarFilePath(DestDirOrFile, SrcFile, null); 136 | } 137 | /// 138 | /// 更换扩展名(保留绝对路径) 139 | /// 140 | /// 141 | /// 142 | /// 143 | public static string ChangeExt(string srcFile, string ext) 144 | { 145 | return GetDir(srcFile) + Path.GetFileNameWithoutExtension(srcFile) + ext; 146 | } 147 | /// 148 | /// 获取文件目录,带“\” 149 | /// 150 | /// 文件路径 151 | /// 152 | public static string GetDir(string path) 153 | { 154 | string fileDir = Path.GetDirectoryName(path); 155 | if (fileDir.EndsWith("\\")) 156 | { 157 | return fileDir; 158 | } 159 | else 160 | { 161 | return fileDir + "\\"; 162 | } 163 | } 164 | 165 | } 166 | } 167 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep2.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/WizardSteps/FormStep3.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | 17, 17 122 | 123 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/XwWizard.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {671085C2-29E1-4396-BED4-9A760D977F7B} 9 | Library 10 | Properties 11 | XwWizard 12 | XwWizard 13 | v3.5 14 | 512 15 | 16 | 17 | x86 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | x86 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | 38 | 39 | true 40 | bin\Debug\ 41 | DEBUG;TRACE 42 | full 43 | AnyCPU 44 | prompt 45 | MinimumRecommendedRules.ruleset 46 | 47 | 48 | bin\Release\ 49 | TRACE 50 | true 51 | pdbonly 52 | AnyCPU 53 | prompt 54 | MinimumRecommendedRules.ruleset 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | Form 70 | 71 | 72 | FormWizard.cs 73 | 74 | 75 | Code 76 | 77 | 78 | 79 | 80 | 81 | 82 | Form 83 | 84 | 85 | FormStep1.cs 86 | 87 | 88 | Form 89 | 90 | 91 | FormStep2.cs 92 | 93 | 94 | Form 95 | 96 | 97 | FormStep3.cs 98 | 99 | 100 | Form 101 | 102 | 103 | FormStep4.cs 104 | 105 | 106 | Form 107 | 108 | 109 | FormStep5.cs 110 | 111 | 112 | FormWizard.cs 113 | 114 | 115 | ResXFileCodeGenerator 116 | Resources.Designer.cs 117 | Designer 118 | 119 | 120 | True 121 | Resources.resx 122 | True 123 | 124 | 125 | FormStep1.cs 126 | 127 | 128 | FormStep2.cs 129 | 130 | 131 | FormStep3.cs 132 | 133 | 134 | FormStep4.cs 135 | 136 | 137 | FormStep5.cs 138 | 139 | 140 | SettingsSingleFileGenerator 141 | Settings.Designer.cs 142 | 143 | 144 | True 145 | Settings.settings 146 | True 147 | 148 | 149 | 150 | 157 | -------------------------------------------------------------------------------- /XwWizard/WindowsFormsApplication1/MediaInfoTool.cs: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------ 2 | // Copyright (C) 2011-2014 Maruko Toolbox Project 3 | // 4 | // Authors: LYF 5 | // 6 | // Licensed under the Apache License, Version 2.0 (the "License"); 7 | // you may not use this file except in compliance with the License. 8 | // You may obtain a copy of the License at 9 | // 10 | // http://www.apache.org/licenses/LICENSE-2.0 11 | // 12 | // Unless required by applicable law or agreed to in writing, software 13 | // distributed under the License is distributed on an "AS IS" BASIS, 14 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 15 | // express or implied. 16 | // See the License for the specific language governing permissions 17 | // and limitations under the License. 18 | // ------------------------------------------------------------------- 19 | // 20 | 21 | using System; 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | using System.Text; 25 | using System.IO; 26 | using MediaInfoLib; 27 | 28 | namespace XwWizard 29 | { 30 | class MediaInfoTool 31 | { 32 | public static bool IsVideo(string filePath) 33 | { 34 | if (!File.Exists(filePath)) 35 | { 36 | return false; 37 | } 38 | 39 | MediaInfo MI = new MediaInfo(); 40 | MI.Open(filePath); 41 | 42 | //string vid = MI.Get(StreamKind.Video, 0, "ID"); 43 | string video = MI.Get(StreamKind.Video, 0, "Format"); 44 | 45 | MI.Close(); 46 | 47 | if (string.IsNullOrEmpty(GetVideoFormat(filePath))) 48 | { 49 | return false; 50 | } 51 | else 52 | { 53 | return true; 54 | } 55 | } 56 | 57 | public static bool IsAudio(string filePath) 58 | { 59 | if (!File.Exists(filePath)) 60 | { 61 | return false; 62 | } 63 | 64 | if (string.IsNullOrEmpty(GetAudioFormat(filePath))) 65 | { 66 | return false; 67 | } 68 | else 69 | { 70 | return true; 71 | } 72 | } 73 | 74 | public static string GetVideoFormat(string filePath) 75 | { 76 | if (!File.Exists(filePath)) 77 | { 78 | return null; 79 | } 80 | 81 | MediaInfo MI = new MediaInfo(); 82 | MI.Open(filePath); 83 | 84 | //string vid = MI.Get(StreamKind.Video, 0, "ID"); 85 | string video = MI.Get(StreamKind.Video, 0, "Format"); 86 | 87 | MI.Close(); 88 | 89 | return video; 90 | } 91 | 92 | public static string GetAudioFormat(string filePath) 93 | { 94 | if (!File.Exists(filePath)) 95 | { 96 | return null; 97 | } 98 | 99 | MediaInfo MI = new MediaInfo(); 100 | MI.Open(filePath); 101 | 102 | //string aid = MI.Get(StreamKind.Audio, 0, "ID"); 103 | string audio = MI.Get(StreamKind.Audio, 0, "Format"); 104 | 105 | MI.Close(); 106 | 107 | return audio; 108 | } 109 | 110 | public static string GetVideoBitrate(string filePath) 111 | { 112 | if (!File.Exists(filePath)) 113 | { 114 | throw new ArgumentException(filePath, "filePath"); 115 | } 116 | 117 | MediaInfo MI = new MediaInfo(); 118 | MI.Open(filePath); 119 | 120 | string vBitRate = MI.Get(StreamKind.Video, 0, "BitRate/String"); 121 | 122 | MI.Close(); 123 | 124 | return vBitRate; 125 | } 126 | 127 | public static string GetContainer(string filePath) 128 | { 129 | if (!File.Exists(filePath)) 130 | { 131 | throw new ArgumentException(filePath, "filePath"); 132 | } 133 | 134 | MediaInfo MI = new MediaInfo(); 135 | MI.Open(filePath); 136 | 137 | string container = MI.Get(StreamKind.General, 0, "Format"); 138 | 139 | MI.Close(); 140 | 141 | return container; 142 | } 143 | 144 | public static bool NeedEncoding(string filePath) 145 | { 146 | //TODO: 判断是否需要转码 147 | //H264 + (AAC/MP3)则不需要 148 | 149 | string vBitrate = GetVideoBitrate(filePath); 150 | if (!string.IsNullOrEmpty(vBitrate)) 151 | { 152 | vBitrate = vBitrate.Trim().ToLower(); 153 | if (vBitrate.Contains("mbps")) 154 | { 155 | System.Diagnostics.Debug.WriteLine("码率过高" + vBitrate); 156 | return true; 157 | } 158 | if (vBitrate.Contains("kbps")) 159 | { 160 | double kbps = 0.0; 161 | if (double.TryParse(vBitrate.Replace("kbps", "").Replace(" ", ""), out kbps)) 162 | { 163 | if (kbps >= 2500) 164 | { 165 | System.Diagnostics.Debug.WriteLine("码率过高" + vBitrate); 166 | return true; 167 | } 168 | } 169 | } 170 | } 171 | //码率过高 172 | 173 | string audio = GetAudioFormat(filePath); 174 | string video = GetVideoFormat(filePath); 175 | 176 | Func CheckAudio = ((string audioFormat) => 177 | { 178 | if(string.IsNullOrEmpty(audioFormat)) 179 | { 180 | return false; 181 | } 182 | 183 | return audioFormat.Equals("AAC") || 184 | audioFormat.Equals("MPEG Audio") || 185 | audioFormat.Equals("PCM"); 186 | }); 187 | 188 | Func CheckVideo = ((string videoFormat) => 189 | { 190 | if (string.IsNullOrEmpty(videoFormat)) 191 | { 192 | return false; 193 | } 194 | 195 | return videoFormat.Equals("AVC"); 196 | }); 197 | 198 | bool bCheckAudio = CheckAudio(audio); 199 | bool bCheckVideo = CheckVideo(video); 200 | 201 | bool audioOk = false; 202 | bool videoOk = false; 203 | 204 | if (bCheckAudio)//符合AAC编码 205 | { 206 | audioOk = true; 207 | } 208 | else if (string.IsNullOrEmpty(audio) && bCheckVideo)//没有音频流,但是视频流符合标准 209 | { 210 | audioOk = true; 211 | } 212 | 213 | if (bCheckVideo)//符合标准 214 | { 215 | videoOk = true; 216 | } 217 | else if (string.IsNullOrEmpty(video) && bCheckAudio)//没有视频流,但是音频流符合标准 218 | { 219 | videoOk = true; 220 | } 221 | 222 | return !(audioOk && videoOk); 223 | } 224 | 225 | public static bool NeedMux(string filePath) 226 | { 227 | string container = GetContainer(filePath); 228 | if (!string.IsNullOrEmpty(container)) 229 | { 230 | if (container.Equals("Flash Video")) 231 | { 232 | return false; 233 | } 234 | } 235 | 236 | return true; 237 | } 238 | } 239 | } 240 | --------------------------------------------------------------------------------