找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
技术宅的结界 › 门户 › 查看主题

wav ogg mp3 相互转换

发布者: imperialeast | 发布时间: 2026-10-10 09:52| 查看数: 116| 评论数: 3|帖子模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本帖最后由 imperialeast 于 2026-10-10 09:56 编辑

Option Explicit
'作者:夏*()

Dim Ipic(4) As IPictureDisp, XIA As XForm, Px As Long, Py As Long

Private Sub Form_Load()
Set Ipic(0) = LoadPicture(App.Path & "\MWO\MWO_Nor.bmp")
Set Ipic(1) = LoadPicture(App.Path & "\MWO\MWO_Ovr.jpg")
Set Ipic(2) = LoadPicture(App.Path & "\MWO\MWO_Dwn.jpg")
Set Ipic(3) = LoadPicture(App.Path & "\MWO\MWO_Gry.jpg")
Set Ipic(4) = LoadPicture(App.Path & "\MWO\Any.bmp")
With XIA
    .hWnd = XFM.hWnd
    .UseMainMask = True
    .MainMaskColor = RGB(255, 0, 255)
    .CoordinateMoveX = 3
    .DoUPramters = CStr(XFM.hWnd)
    .UseCurrentDC = False
    .hDC = XFM.hDC
    .Hotkey = "Ctrl+L"
    .UseCheckBox = True
    .UserCursorWay = App.Path & "\"
    .UserMainCursor = App.Path & "\XMAIN.cur"
    .UseSlider = False
    .UseSysPopMenu = True
    .UseSystemStyle = False
    .UseToolTip = True
    .lpCapRect = "0,0,510,0"
   
    .XShape = "0,0,580,254"
    .XCtrl = App.Path & "\MWO\UI.ini"
    .XNormal = Ipic(0).Handle
    .XOver = Ipic(1).Handle
    .XDown = Ipic(2).Handle
    .XGray = Ipic(3).Handle
    .XAny = Ipic(4).Handle
End With
SetMyWindow XIA, AddressOf DoSub

'UpDateBackUI XIA, 0
  SetRoundRect XFM.hWnd, 0, 0, 580, 254, 3, 3

             With lFont(2)
                  .Caption = "输入>>>"
                  .ChrAngle = 0
                  .FontName = "黑体"
                  .ForeColor = vbWhite
                  .Left = 20
                  .Top = 76
                  .TextHeight = 12
                  .TextWidth = 7
                  .Weight = 600
             End With
             With lFont(3)
                  .Caption = "输出>>>"
                  .ChrAngle = 0
                  .FontName = "黑体"
                  .ForeColor = vbWhite
                  .Left = 20
                  .Top = 126
                  .TextHeight = 12
                  .TextWidth = 7
                  .Weight = 600
             End With
            
              With lFont(4)
                  .Caption = "作者:夏煜(QQ:499932452)"
                  .FontName = "黑体"
                  .ForeColor = vbWhite
                  .ChrAngle = 0
                  .Left = 180
                  .Top = 54
                  .TextHeight = 12
                  .TextWidth = 7
                  .Weight = 500
              End With
            SetAbstractW lFont()
BG2.Show

End Sub





Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Px = X * Screen.TwipsPerPixelX: Py = Y * Screen.TwipsPerPixelY
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then Me.Left = Me.Left + (X * Screen.TwipsPerPixelX - Px): BG2.Left = Me.Left - Screen.TwipsPerPixelX: Me.Top = Me.Top + (Y * Screen.TwipsPerPixelY - Py): BG2.Top = Me.Top - Screen.TwipsPerPixelY



End Sub

Private Sub Form_Unload(Cancel As Integer)
Unload BG2
End Sub

Private Sub Kbp_Click(Index As Integer)
Dim I As Integer
    Select Case Index
           Case 0
             Kbp(0).Checked = Not Kbp(0).Checked
            If Kbp(0).Checked = True Then
             BitRate = "32"
             For I = 0 To 8
              If I <> 0 Then Kbp(I).Checked = False
             Next
             End If
           Case 1
           
            Kbp(1).Checked = Not Kbp(1).Checked
            If Kbp(1).Checked = True Then
            BitRate = "56"
             For I = 0 To 8
              If I <> 1 Then Kbp(I).Checked = False
             Next
            
             End If
           Case 2
             Kbp(2).Checked = Not Kbp(2).Checked
             If Kbp(2).Checked = True Then
             BitRate = "80"
             For I = 0 To 8
              If I <> 2 Then Kbp(I).Checked = False
             Next
             End If
           
           Case 3
             Kbp(3).Checked = Not Kbp(3).Checked
             If Kbp(3).Checked = True Then
             BitRate = "96"
             For I = 0 To 8
              If I <> 3 Then Kbp(I).Checked = False
             Next
             End If
           
           Case 4
             Kbp(4).Checked = Not Kbp(4).Checked
             If Kbp(4).Checked = True Then
             BitRate = "128"
             For I = 0 To 8
              If I <> 4 Then Kbp(I).Checked = False
             Next
             End If
           
           Case 5
             Kbp(5).Checked = Not Kbp(5).Checked
             If Kbp(5).Checked = True Then
             BitRate = "160"
             For I = 0 To 8
              If I <> 5 Then Kbp(I).Checked = False
             Next
             End If
           Case 6
             Kbp(6).Checked = Not Kbp(6).Checked
             If Kbp(6).Checked = True Then
             BitRate = "192"
             For I = 0 To 8
              If I <> 6 Then Kbp(I).Checked = False
             Next
             End If
           Case 7
            Kbp(7).Checked = Not Kbp(7).Checked
            If Kbp(7).Checked = True Then
            BitRate = "256"
             For I = 0 To 8
              If I <> 7 Then Kbp(I).Checked = False
             Next
             End If
           Case 8
             Kbp(8).Checked = Not Kbp(8).Checked
             If Kbp(8).Checked = True Then
             BitRate = "320"
             For I = 0 To 8
              If I <> 8 Then Kbp(I).Checked = False
             Next
             End If
       End Select
End Sub

Private Sub LAME_Click()
    LAME.Checked = Not LAME.Checked
    If LAME.Checked = True Then
       Ogg.Checked = False
    End If
     GetQuality
                 
           If OutFolder = "" Then Exit Sub
                 If UCase(Right(SongWay, 3)) <> "WAV" Then
                 OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "WAV"
               Else
                If XFM.Ogg.Checked = True Then
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "OGG"
                  Else
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "MP3"
                End If
            End If
              ToutStr = OutFolder & "\" & OutName
             lFont(1).Caption = GetShtFileName(ToutStr)
             SetAbstract lFont()
            ' UpDateBackUI XIA
End Sub

Private Sub Ogg_Click()
    Ogg.Checked = Not Ogg.Checked
    If Ogg.Checked = True Then
       LAME.Checked = False
    End If
GetQuality
          If OutFolder = "" Then Exit Sub
                If UCase(Right(SongWay, 3)) <> "WAV" Then
                 OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "WAV"
               Else
                If XFM.Ogg.Checked = True Then
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "OGG"
                  Else
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "MP3"
                End If
            End If
             ToutStr = OutFolder & "\" & OutName
             lFont(1).Caption = GetShtFileName(ToutStr)
             SetAbstract lFont()
            ' UpDateBackUI XIA
End Sub

Private Sub Quty_Click(Index As Integer)
Dim I As Integer
  Select Case Index
         Case 0
            Quty(0).Checked = Not Quty(0).Checked
            If Quty(0).Checked = True Then
            For I = 0 To 2
             If I <> 0 Then Quty(I).Checked = False
            Next
            If LAME.Checked = True Then
             Quality = " -f"
            End If
            If Ogg.Checked = True Then
             Quality = " -q 2 "
            End If
            End If
         Case 1
            Quty(1).Checked = Not Quty(1).Checked
            If Quty(1).Checked = True Then
            For I = 0 To 2
             If I <> 1 Then Quty(I).Checked = False
            Next
            If LAME.Checked = True Then
             Quality = ""
            End If
             If Ogg.Checked = True Then
             Quality = " -q 5 "
            End If
            End If
         Case 2
            Quty(2).Checked = Not Quty(2).Checked
            If Quty(2).Checked = True Then
            For I = 0 To 2
             If I <> 2 Then Quty(I).Checked = False
            Next
            If LAME.Checked = True Then
             Quality = " -h"
            End If
             If Ogg.Checked = True Then
             Quality = " -q 10 "
            End If
            End If
  End Select
End Sub


Public Sub GetQuality()
            If Quty(0).Checked = True Then
            If LAME.Checked = True Then
             Quality = " -f"
            End If
            If Ogg.Checked = True Then
             Quality = " -q 2 "
            End If
            End If
            
            If Quty(1).Checked = True Then
            If LAME.Checked = True Then
             Quality = ""
            End If
             If Ogg.Checked = True Then
             Quality = " -q 5 "
            End If
            End If
            
            If Quty(2).Checked = True Then
            If LAME.Checked = True Then
             Quality = " -h"
            End If
             If Ogg.Checked = True Then
             Quality = " -q 10 "
            End If
            End If
            
End Sub


Public Sub GetBitRate()
Dim I As Integer
For I = 0 To 8
   If Kbp(I).Checked = True Then Exit For
  Next
  
  Select Case I
       Case 0
       BitRate = "32"
       Case 1
       BitRate = "56"
       Case 2
       BitRate = "80"
       Case 3
       BitRate = "96"
       Case 4
       BitRate = "128"
       Case 5
       BitRate = "160"
       Case 6
       BitRate = "192"
       Case 7
       BitRate = "256"
       Case 8
       BitRate = "320"
  End Select
End Sub


Private Sub Timer1_Timer()
BG2.Left = Me.Left - Screen.TwipsPerPixelX
BG2.Top = Me.Top - Screen.TwipsPerPixelY
Timer1.Enabled = False
End Sub
'bg2 form
Private delp As DELTEPNGINF

Private Sub Form_Activate()
  XFM.SetFocus
End Sub

Private Sub Form_Load()
Me.Width = 610 * Screen.TwipsPerPixelX
Me.Height = 294 * Screen.TwipsPerPixelY
DrawAlphaPNG BG2.hWnd, BG2.hDC, App.Path & "\MWO\bgx.png", 610, 294, delp, 255
Me.Left = XFM.Left - Screen.TwipsPerPixelX
Me.Top = XFM.Top - Screen.TwipsPerPixelY

End Sub

Private Sub Form_Unload(Cancel As Integer)
DeletePNG delp
End Sub

'mod
Option Explicit

'Author:XiaYu(ImperialEast---夏煜 2024-04-19)


Public SongWay As String, BitRate As Integer, Quality As String, OutName As String, OutFolder As String, InFolder As String, lFont(4) As FONTINFO, ToutStr As String
Private CmdStr As String
Sub DoSub(ByVal ID As Long, ByVal lpStr As String, ByVal lpStrPramter As String)
  Select Case ID
         
         Case 1001
            ToutStr = ""
            SetControlEnabled 1003, True
            SongWay = GetFilePaths(XFM.hWnd, "打开WAVE文件>>>", "Music File|*.wav;*.mp3;*.ogg", Explorer窗口, App.Path, Chr(0))
            SongWay = Trim(Replace(SongWay, Chr(0), ""))
            With lFont(0)
                  .Caption = GetShtFileName(SongWay)
                  .ChrAngle = 0
                  .FontName = "宋体"
                  .ForeColor = vbWhite
                  .Left = 30
                  .Top = 92
                  .TextHeight = 12
                  .TextWidth = 7
                  .Weight = 500
             End With
            
           
             ' SetAbstractW lFont
             ' UpDateBackUI XIA
            InFolder = Left(SongWay, InStrRev(SongWay, "."))
            'XFM.P.Cls
            SetCheckBoxChecked 2001, False
            If UCase(Right(SongWay, 3)) <> "WAV" Then
                 OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "WAV"
                   If UCase(Right(SongWay, 3)) = "OGG" Then
                      XFM.Ogg.Checked = True
                      XFM.LAME.Checked = False
                      XFM.GetQuality
                   End If
               Else
                If XFM.Ogg.Checked = True Then
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "OGG"
                  Else
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "MP3"
                End If
            End If
           
             With lFont(1)
                  .Caption = ""
                  .ChrAngle = 0
                  .FontName = "宋体"
                  .ForeColor = vbWhite
                  .Left = 30
                  .Top = 142
                  .TextHeight = 12
                  .TextWidth = 7
                  .Weight = 500
             End With
             SetAbstractW lFont
             ' UpDateBackUI XIA
            OutFolder = ""
            XFM.GetBitRate
            XFM.Cls
         Case 1002
              If UCase(Right(SongWay, 3)) <> "WAV" Then
                 OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "WAV"
               Else
                If XFM.Ogg.Checked = True Then
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "OGG"
                  Else
                  OutName = Mid(SongWay, InStrRev(SongWay, "\") + 1, InStrRev(SongWay, ".") - InStrRev(SongWay, "\")) & "MP3"
                End If
            End If
            
             OutFolder = GetFoldPath(XFM.hWnd, "选择要存放文件的文件夹", BNormal普通)
             ToutStr = OutFolder & "\" & OutName
             lFont(1).Caption = GetShtFileName(ToutStr)
             SetAbstractW lFont
             ' UpDateBackUI XIA
             XFM.Cls
         Case 1003
           
           '处理数据转换
           XFM.GetQuality
           XFM.GetBitRate
           '//MsgBox Quality & "," & BitRate
           If ToutStr = "" Then Exit Sub
           SetControlEnabled 1003, False
           If UCase(Right(ToutStr, 3)) <> "WAV" Then
                    'L.A.M.E
                    If XFM.LAME.Checked = True Then
                      '2 Class  type  " --abr " / " -b "
                      CmdStr = App.Path & "\MWO\lame.exe" & Quality & " --abr " & BitRate & " " & """" & SongWay & """"
                      Shell CmdStr, vbHide
                      Do Until GetID("lame.exe") = 0
                       DoEvents
                      Loop
                     FileCopy SongWay & ".Mp3", ToutStr
                     On Error Resume Next
                     Kill SongWay & ".Mp3"
                     SetCheckBoxChecked 2001, True
                    End If
                    'OGG
                    If XFM.Ogg.Checked = True Then
                      CmdStr = App.Path & "\MWO\oggenc.exe" & Quality & " -b " & BitRate & " " & """" & SongWay & """"
                      Shell CmdStr, vbHide
                       Do Until GetID("oggenc.exe") = 0
                       DoEvents
                       Loop
                        If LCase(InFolder & "Ogg") <> LCase(ToutStr) Then
                            FileCopy InFolder & "Ogg", ToutStr
                            On Error Resume Next
                            Kill InFolder & "Ogg"
                        End If
                        SetCheckBoxChecked 2001, True
                    End If
                  
               Else
                  If UCase(Right(SongWay, 3)) = "MP3" Then
                   '  XFM.LAME.Checked = True
                   '  XFM.Ogg.Checked = False
                   'L.A.M.E
                   ' If XFM.LAME.Checked = True Then
                      '2 Class  type  " --abr " / " -b "
                   '   CmdStr = App.Path & "\MWO\lame.exe" & " --decode " & """" & SongWay & """"
                   '   Shell CmdStr, vbHide
                   '  Do Until GetID("lame.exe") = 0
                   '  Loop
                   '  FileCopy SongWay & ".WAV", XFM.TOUT.Text
                   '  On Error Resume Next
                   '  Kill SongWay & ".wav"
                   '  MsgBox "文件已经转换完成!", vbInformation, "提示:"
                   ' End If
                   Mp3ToWave SongWay, ToutStr, XFM.P
                   SetCheckBoxChecked 2001, True
                 Else
                    XFM.Ogg.Checked = True
                    XFM.LAME.Checked = False
                    'OGG
                    If XFM.Ogg.Checked = True Then
                      CmdStr = App.Path & "\MWO\oggdec.exe " & """" & SongWay & """"
                      Shell CmdStr, vbHide
                      Do Until GetID("oggdec.exe") = 0
                      DoEvents
                      Loop
                     
                      If LCase(InFolder & "Wav") <> LCase(ToutStr) Then
                       FileCopy InFolder & "Wav", ToutStr
                       On Error Resume Next
                       Kill InFolder & "Wav"
                      End If
                     SetCheckBoxChecked 2001, True
                    End If
                End If
            End If
         Case 1004
              XFM.PopupMenu XFM.Menu
         Case 2001
            If GetCheckBoxChecked(2001) = True Then SetCheckBoxChecked 2001, False
         Case 2002
            If ToutStr <> "" Then OpenFolderAndSelectFile XFM.P.hWnd, ToutStr

         Case Else
   End Select
End Sub


Function GetRightWidth(ByVal FileName As String) As Long
  Dim Lgth As Integer, I As Integer, Val As Integer
  Lgth = Len(FileName)
   For I = 1 To Lgth
    If Asc(Mid(FileName, I, 1)) < 0 Then
    Val = Val + 14
    Else
    Val = Val + 7
    End If
   Next
GetRightWidth = Val
End Function


Function GetShtFileName(ByVal FileName As String) As String
Dim H_Str As String, M_Str As String, E_Str As String
If GetRightWidth(FileName) > 427 Then
  H_Str = Left(FileName, InStr(FileName, "\"))
  M_Str = "......" & "\"
  E_Str = Right(FileName, Len(FileName) - InStrRev(FileName, "\"))
  GetShtFileName = H_Str & M_Str & E_Str
  Else
  GetShtFileName = FileName
End If
End Function
'api 声明
Option Explicit
'作者:夏煜 QQ{499932452}  Email:imperialeast@126.com


Public Enum uFileX
    Normal = 0
    All = 1
    User = 2
End Enum

Public Enum uFMsg
   lBstrSize = 0
   lBstrCreateTime = 1
   lBstrAccessTime = 2
   lBstrWriteTime = 3
   lBstrVertion = 4
   lBstrProductVer = 5
   lBstrProgType = 6
   lBstrSysType = 7
   lBstrFileVersion = 8
End Enum

Public Enum KeyII
  KeyShift = 1
  KeyAlt = 2
  KeyCtrl = 3
End Enum

Public Enum WndStyle
窗口置前ForeWnd = 0
最小化Minimize = 1
闪动Flash = 2
End Enum

Public Enum CmdShow
  还原Restore = 9
  最大化Max = 3
  最小化Min = 6
  显示窗口Show = 5
  隐藏窗口Hide = 0
  最大化MaxActive = 3  '//  Active Form
  最小化MinActive = 2 '//  Active Form
  显示窗口ShowNoActive = 4 '// No change Active Form
  普通显示ShowNormal = 1
  最小化MinNoActive = 7 '// No change Active Form
End Enum

Public Enum THD
    恢复Resume = 0
    挂起Suspend = 1
End Enum

Public Enum UPriority
  Real实时 = &H100
  High高 = &H80
  High_Normal高于标准 = 32768
  Nomal标准 = &H20
  Low_Nomal低于标准 = 16384
  Idle低 = &H40
End Enum

Public Type PROCESSINFO
  lpFilename As String
  lpMemory As Long
  lpAddress As Long
  lpProgType As String
End Type

Public Type PRECT
   Top As Long
   Left As Long
   Bottom As Long
   Right As Long
   Width As Long
   Height As Long
   hWnd As Long
   WindowCaptionHeight As Long
   Size As Long
End Type

Public Enum TipMark
  Errs = 3
  Exc = 2
  Tip = 1
End Enum

Public Enum ATTRY
       Archive存档 = &H20
       Compressed卷名 = &H800
       Durectory目录文件夹 = &H10
       Hidden隐藏 = &H2
       Normal普通 = &H80
       ReadOnly只读 = &H1
       System系统 = &H4
       Temporary别名 = &H100
End Enum

Public Enum BrowseX
    BNormal普通 = &H1
    BEX扩展 = &H2
    BTEXTEX文本 = &H4
    BComputer计算机 = &H1000
    BPrinter打印机 = &H2000
    BNOHIDE无隐藏 = &H8
End Enum

Public Enum OpenX
    ReadOnly只读 = &H1
    WritePrompt写入 = &H2
    HideOnly隐藏 = &H4
    NoChange未变 = &H8
    ShowHelp帮助 = &H10
    EnableHook钩子 = &H20
    EnableTemplate模板 = &H40
    EnableTemplateHandle模板句柄 = &H80
    NoValidate无证 = &H100
    AllowMultiSelect多行选择 = &H200
    ExDifferent扩展 = &H400
    PathExit路径退出 = &H800
    FileExit文件退出 = &H1000
    CreateTemprompt创建写入 = &H2000
    ShareAware共享提示 = &H4000
    NoReadOnlyRtn无只读返回 = &H8000
    NoTestCreate无文件创建检测 = &H10000
    NoNetworkBtn无工作按钮 = &H20000
    NoLongNames无长名称 = &H40000                     '  force no long names for 4.x modules
    Explorer窗口 = &H80000                                     '  new look commdlg
    NoDereferenceLinks = &H100000
    LongNames长名称 = &H200000                      '  force long names for 3.x modules
End Enum

Public Type DELTEPNGINF
            Size As Long
            hDC As Long
            OldObj As Long
            NowObj As Long
            Token As Long
            Height As Long
            Width As Long
End Type

Private Type FONTINFO
        ForeColor As Long
        Left As Long
        Top As Long
        Weight As Long
        Caption As String
        ChrAngle As Long
        TextWidth As Long
        TextHeight As Long
        FontName As String
        LineDistance As Long
End Type


Declare Function GetFileVertionExA Lib "SysCtrl.dll" (ByVal FileName As String, ByVal uType As uFileX, Optional ByVal ChoseFileMsg As uFMsg, Optional ByVal UseErr As Boolean = True, Optional UseIntUnit As Boolean = False) As String
Declare Function SpaceFree Lib "SysCtrl.dll" () As Long
Declare Function SetPopMenuII Lib "SysCtrl.dll" (ByVal hWnd As Long, Optional ByVal ID As Long, Optional uSys As Boolean) As Boolean
Declare Function AnyMove Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function SetHotKey Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal Key1 As String, Optional ByVal Key2 As KeyII) As Long
Declare Function GetGratingPos Lib "SysCtrl.dll" (ByVal hWnd As Long, Line As Long, Row As Long) As Long   '获取光栅位置
Declare Function GetTextByhWnd Lib "SysCtrl.dll" (ByVal hWnd As Long, Buff As String, Optional ByVal Lines As Long) As Long
Declare Function GetTxtCount Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function SetWindow Lib "SysCtrl.dll" (ByVal hWnd As Long, Optional Style As WndStyle) As Long
Declare Function SetWindowTopFace Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal IsToTop As Boolean) As Long
Declare Function SetFrmAlpha Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal uAlpha As Long) As Long
Declare Function SetAlphaExA Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal uAlpha As Long, Optional ByVal AlphaColor As Long = -1) As Long
Declare Sub MD64 Lib "SysCtrl.dll" (ByVal ToAddCode As String, ByVal IsDecode As Boolean, ToGetCode As String)
Declare Function MDX64 Lib "SysCtrl.dll" (ByVal ToAddCode As String, ByVal IsDecode As Boolean) As String
Declare Function SetWindowCursor Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal CursorPos As String) As Long
'Declare Function SetRoundRect Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal PixW As Long, ByVal PixH As Long, ByVal CircleX As Long, ByVal CircleY As Long, Optional ByVal fX As Long, Optional ByVal fY As Long) As Long
Declare Function SetOwnerWindow Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal MoveCaption As Boolean) As Long
Declare Function ShowFrm Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal lStyle As CmdShow) As Long
Declare Function LoadText Lib "SysCtrl.dll" (ByVal lpStr As String, Optional ByVal GetLine As Long) As String
Declare Function GetProcess Lib "SysCtrl.dll" (Optional ByVal lName As String, Optional ByVal PID As Long) As String
Declare Function GetMyID Lib "SysCtrl.dll" (Optional ByVal hWnd As Long) As Long
Declare Function GetID Lib "SysCtrl.dll" (ByVal lName As String) As Long
Declare Function GetNameID Lib "SysCtrl.dll" (ByVal uFindName As String) As String
Declare Function GetThreads Lib "SysCtrl.dll" (ByVal PID As Long) As String                                   '/Test
Declare Function GetThread Lib "SysCtrl.dll" (ByVal PID As Long) As String
Declare Function SetThreads Lib "SysCtrl.dll" (ByVal PID As Long, Optional Style As THD) As Long
Declare Function SetThread Lib "SysCtrl.dll" (ByVal TID As Long, Optional Style As THD) As Long
Declare Function CloseProcessThread Lib "SysCtrl.dll" (ByVal PTID As Long, ByVal UsedProcess As Boolean) As Long
Declare Function GetModules Lib "SysCtrl.dll" (Optional ByVal PID As Long) As String
Declare Function GetModule Lib "SysCtrl.dll" (Optional ByVal PID As Long) As String
Declare Function SetPriority Lib "SysCtrl.dll" (ByVal ProcessID As Long, Optional ByVal UGet As UPriority) As Long
Declare Function GetPriority Lib "SysCtrl.dll" (ByVal ProcessID As Long, Optional ByRef LngPriority As Long) As String
Declare Function GetProcessMemory Lib "SysCtrl.dll" (ByVal ProcessID As Long, ByVal Flags As Boolean) As String
Declare Function GetProcessWay Lib "SysCtrl.dll" (ByVal ProcessID As Long) As String
Declare Function GetProcessInfo Lib "SysCtrl.dll" (ByVal ProcessID As Long, Info As PROCESSINFO) As Long
Declare Function GetEntireDriveInfo Lib "SysCtrl.dll" (GainDriveMsg As String, Optional ByVal SendStringTohWnd As Long) As Long
Declare Function CallAnyKeyEvent Lib "SysCtrl.dll" (ByVal vbKeyCode As String, ByVal SendKey As Boolean, Optional Parameter) As Long
Declare Function AnyKeyToKeyCode Lib "SysCtrl.dll" (ByVal KeyChr As String, ByVal InvalidChr As String, CodeBuff As String) As Long
Declare Function CallAnyMouseEvent Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal PosX As Long, ByVal PosY As Long, ByVal Flags As Long) As Long
Declare Function GetWindowhWndByStr Lib "SysCtrl.dll" (ByVal lpWindowCaption As String, ByVal SysWindow As Boolean, GainhWnd As Long, Optional ByVal lpChildSysWindow As String) As Long
Declare Function GetWindowPosByStr Lib "SysCtrl.dll" (ByVal lpWindowCaption As String, lpRect As PRECT, Optional ByVal hWnd As Long, Optional SysWindow As Boolean, Optional ByVal lpChildSysWindow As String) As Long
Declare Function GetUserNameExA Lib "SysCtrl.dll" () As String
Declare Function GetServiceState Lib "SysCtrl.dll" (ByVal ServiceName As String, ByVal ComputerName As String) As String
Declare Function SetServiceState Lib "SysCtrl.dll" (ByVal ServiceName As String, ByVal ComputerName As String, ByVal Flags As Long) As Long
Declare Function OpenFolderAndSelectFile Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal lpFilename As String) As Long
Declare Function GetSystemDPI Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function GetSystemTypeA Lib "SysCtrl.dll" () As String
Declare Function GetNowXY Lib "SysCtrl.dll" (ByVal XY As Long, ByVal IsX As Boolean, Optional ByVal IsPositive As Boolean = True) As Long
Declare Function AddTheam Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function DelTheam Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function CreateToolTipA Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal CtrlhWnd As Long, ByVal uTipText As String, Optional ByVal MaxWidth As Long, Optional ByVal Ball As Boolean = False, Optional ByVal uTitle As String, Optional ByVal ForeColor As Long, Optional ByVal BackColor As Long, Optional ByVal picMark As TipMark) As Long
Declare Function RemoveTool Lib "SysCtrl.dll" (ByVal hWnd As Long) As Long
Declare Function SetTipText Lib "SysCtrl.dll" (ByVal CtlhWnd As Long, ByVal uTipText As String, Optional ByVal uTitle As String) As Long
Declare Sub SetTipColor Lib "SysCtrl.dll" (ByVal ForeColor As Long, ByVal BackColor As Long)
Declare Sub SetTipStyle Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal TipBall As Boolean, ByVal TipAlways As Boolean, Optional ByVal Ico As TipMark, Optional ByVal uTitle As String)
Declare Sub DelToolTip Lib "SysCtrl.dll" ()
Declare Function hWndGet Lib "SysCtrl.dll" () As Long
Declare Sub SetDelay Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal NewValue As Long)
Declare Sub UpdateText Lib "SysCtrl.dll" (ByVal uhWnd As Long, ByVal uText As String)
Declare Function SetProtectThread Lib "SysCtrl.dll" (ByVal ProcessID As Long, ByVal Protect As Boolean) As Long
Declare Function ShowFileAttrib Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal FileName As String) As Long
Declare Function CreateFolder Lib "SysCtrl.dll" (ByVal lpStr As String) As Long
Declare Function DeleteFF Lib "SysCtrl.dll" (ByVal lpStr As String, ByVal IsFile As Boolean) As Long
Declare Function SetFolderIcon Lib "SysCtrl.dll" (ByVal lpFolderWay As String, ByVal IconWay As String) As Long
Declare Function SetFolderBackGround Lib "SysCtrl.dll" (ByVal lpFolderWay As String, ByVal PictureWay As String) As Long
Declare Function SetFolderTypeCode Lib "SysCtrl.dll" (ByVal lpFolderWay As String, ByVal Flags As Long) As Long
Declare Function CreateFolderA Lib "SysCtrl.dll" (ByVal lpStr As String) As Long
Declare Function GetFileAttr Lib "SysCtrl.dll" (ByVal uFile As String) As String
Declare Function SetFileAttr Lib "SysCtrl.dll" (ByVal lStr As String, ByVal Attr As ATTRY) As Long
Declare Function GetFoldPath Lib "SysCtrl.dll" (ByVal hWnd As Long, Optional ByVal BrowText As String, Optional ByVal Style As BrowseX) As String
Declare Function GetFilePaths Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal DialogTitle As String, ByVal uFilter As String, ByVal Style As OpenX, Optional ByVal StartPos As String, Optional Separator As String = ",") As String
Declare Function DrawPNG Lib "SysCtrl.dll" (ByVal hDC As Long, ByVal PngWay As String, ByVal PosX As Long, ByVal PosY As Long) As Long
Declare Function DrawAlphaPNG Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal hDC As Long, ByVal PngWay As String, ByVal ScaleWidth As Long, ByVal ScaleHeight As Long, DelPngINF As DELTEPNGINF, Optional ByVal Alpha As Long = 255) As Long
Declare Function DeletePNG Lib "SysCtrl.dll" (DelPng As DELTEPNGINF) As Long
Declare Function DrawPNGRect Lib "SysCtrl.dll" (ByVal hDC As Long, ByVal PngWay As String, ByVal X As Long, ByVal Y As Long, ByVal DrawX As Long, ByVal DrawY As Long, Optional ByVal DrawWidth As Long, Optional ByVal DrawHeight As Long) As Long
Declare Function DrawAnyAlphaPNG Lib "SysCtrl.dll" (ByVal hWnd As Long, ByVal hDC As Long, ByVal PngWay As String, ByVal WinWidth As Long, ByVal WinHeight As Long, DelPngINF As DELTEPNGINF, Optional ByVal X As Long, Optional ByVal Y As Long, Optional ByVal DrawXWidth As Long, Optional ByVal DrawXHeight As Long, Optional ByVal DrawX As Long, Optional ByVal DrawY As Long, Optional ByVal DrawWidth As Long, Optional ByVal DrawHeight As Long, Optional ByVal Alpha As Long = 255) As Long
Declare Function DrawAnyChr Lib "SysCtrl.dll" (ByVal hDC As Long, ByVal AnyChr As String, ByVal PosX As Long, PosY As Long, Optional ByVal ChrAngle As Long = 0, Optional ByVal ForeColor As Long = vbBlack, Optional ByVal BackColor As Long = vbWhite, Optional ByVal FontSize As Long = 12, Optional ByVal IsAlpha As Boolean = True) As Long
Declare Function DrawAnyText Lib "SysCtrl.dll" (ByVal hDC As Long, lpFont As FONTINFO) As Long
Declare Function SetFont Lib "SysCtrl.dll" (ByVal hDC As Long, ByVal ChrWidth As Long, ByVal ChrHeight As Long, Optional ByVal ForeColor As Long = vbBlack, Optional ChrAngle As Long = 0, Optional Weight As Long = 400, Optional ByVal FontName As String = "Times New Roman") As Boolean

’api声明
Option Explicit
'作者:夏煜 QQ{499932452}  Email:imperialeast@126.com


Type WAVE_ERR
     L_FirstErrPos As Long
     L_LastErrPos() As Long
     R_FirstErrPos As Long
     R_LastErrPos() As Long
End Type

Enum ToAnyBit
     To8 = 8
     To16 = 16
     To24 = 24
     To32 = 32
End Enum

Type LSTDATAINFO
     ID As String * 4
     Size As Long
End Type

Type WAVEDATAINFO
     NumChannels As Integer     '声道
     SapleRate As Long          '采样频率
     ByteRate As Long
     BitsPerSaple As Integer    '采样位数
     BlockAlign As Integer      '采样字节
     DataPos As Long
     DataSize As Long
End Type

Type RMSINFO
     L_AverRMS As Single
     R_AverRMS As Single
     L_RMS As Single
     R_RMS As Single
     MinWaveVal As Long
     Min2WaveVal As Long
     MaxWaveVal As Long
     Max2WaveVal As Long
End Type

Type RMSAVER
     L_AverRMS As Single    'RMS 均衡值
     R_AverRMS As Single
End Type

Enum NChannel
     [Left Channel]
     [Right Channel]
     [Double Channel]
End Enum


Declare Function GetHeadInfoMsg Lib "WavJoin.dll" (ByVal lpWay As String, ListDat() As Byte, ByRef Dat As String, Optional ByRef Dlist As String) As Long
Declare Function GetByteRate Lib "WavJoin.dll" (ByVal lpWav As String) As Long
Declare Function GetBitPerSaple Lib "WavJoin.dll" (ByVal lpWav As String) As Long
Declare Function GetChannels Lib "WavJoin.dll" (ByVal lpWav As String) As Long
Declare Function GetBlockAlign Lib "WavJoin.dll" (ByVal lpWav As String) As Long
Declare Function GetWavDataSize Lib "WavJoin.dll" (ByVal lpWav As String) As Long
Declare Function GetWantData Lib "WavJoin.dll" (Dat() As Byte, ByRef GetDat() As Byte, Optional Start As Integer = 0, Optional Length As Integer = 0) As Long
Declare Function WavAdd Lib "WavJoin.dll" (ByVal FileWay As String, ByVal File2Way As String, ByVal OutPutWay As String) As Long
Declare Function GetListINFO Lib "WavJoin.dll" (Dat() As Byte) As String
Declare Function StringToBytes Lib "WavJoin.dll" (ByVal lpStr As String, GainDat() As Byte) As Boolean
Declare Function WavAddEX Lib "WavJoin.dll" (ByVal FileWay As String, ByVal File2Way As String, ByVal OutPutWay As String) As Long
Declare Function CreateWaveForm Lib "WavJoin.dll" (ByVal lpWav As String, ByVal pHDC1 As Object, ByVal pHDC2 As Object, ByVal DrawWaveWidth As Long, ByVal DrawWaveHeight As Long, Optional ByVal AmplitudePram As Long = 35) As Long
Declare Function GetFileErrSign Lib "WavJoin.dll" () As Long
Declare Function CreateWaveFormEx Lib "WavJoin.dll" (ByVal lpWav As String, ByVal pHDC1 As Object, ByVal pHDC2 As Object, Optional ByVal AmplitudePram As Long = 10000, Optional ByVal MaxDistance As Long = 100000) As Long
Declare Function CreateWaveFormExs Lib "WavJoin.dll" (ByVal lpWav As Variant, ByVal pHDC1 As Object, ByVal pHDC2 As Object, Optional ByVal AmplitudePram As Long = 10000, Optional ByVal MaxDistance As Long = 50000, Optional ByVal Try As Boolean = False, Optional ByVal Decibel As Integer = 0) As Long
Declare Function CreateMsWaveForm Lib "WavJoin.dll" (ByVal lpWav As String, ByVal pHDC1 As Object, ByVal pHDC2 As Object, ByVal StartDataPos As Long, ByVal EndDataPos As Long, Optional ByVal AmplitudePram As Long = 10000, Optional ByVal MaxDistance As Long = 20000, Optional ByVal Try As Boolean = False) As Long
Declare Function CreateBuffMsWaveForm Lib "WavJoin.dll" (ByVal lpWav As String, ByVal pHDC1 As Object, ByVal pHDC2 As Object, ByVal StartDataPos As Long, ByVal EndDataPos As Long, Optional ByVal AmplitudePram As Long = 10000, Optional ByVal MaxDistance As Long = 10000) As Long
Declare Function CreateWaveFormDotExs Lib "WavJoin.dll" (ByVal lpWav As Variant, ByVal pHDC1 As Object, ByVal pHDC2 As Object, Optional ByVal AmplitudePram As Long = 10000, Optional ByVal MaxDistance As Long = 50000, Optional ByVal Try As Boolean = False, Optional ByVal Decibel As Integer = 0, Optional ByVal StartPos As Long = 0, Optional ByVal EndPos As Long = 0) As Long
Declare Function GetWaveDataErr Lib "WavJoin.dll" (ByVal lpWav As String, WERR As WAVE_ERR) As Boolean
Declare Function GetWaveDataFirstErr Lib "WavJoin.dll" (ByVal lpWav As String, Optional ByVal IsExtend As Boolean = False) As Long
Declare Function WaveDataDBChanged Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOutPut As String, Optional ByVal Decibel As Integer = 0) As Boolean
Declare Function WaveBuffDbBitChanged Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOutWay As String, ByVal ToBit As Long, Optional ByVal Decibel As Integer = 0) As Boolean
Declare Function WaveDbBitChanged Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOutWay As String, ByVal ToBit As ToAnyBit, Optional ByVal Decibel As Integer = 0) As Boolean
Declare Function CreateListWaveFile Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOut As String, ListDI() As LSTDATAINFO, ListStr() As String) As Boolean
Declare Function GetWavDataInfo Lib "WavJoin.dll" (ByVal lpWav As String, WDI As WAVEDATAINFO) As Boolean
Declare Function GetWaveRMS Lib "WavJoin.dll" (ByVal lpWav As String, tRMS As RMSINFO, Optional ByVal StartSign As Long = 0, Optional ByVal EndSign As Long = 0, Optional ByVal XDot As Long = 10000) As Boolean
Declare Function GetWaveAverRMS Lib "WavJoin.dll" (ByVal lpWav As String, tRMS As RMSAVER, Optional ByVal StartSign As Long = 0, Optional ByVal EndSign As Long = 0, Optional ByVal XDot As Long = 10000) As Boolean
Declare Function GetWaveBuffAverRMS Lib "WavJoin.dll" (ByVal lpWav As String, tRMS As RMSAVER, ByVal StartSign As Long, ByVal EndSign As Long, Optional ByVal XDot As Long = 10000) As Boolean
Declare Function GetWavMusicLength Lib "WavJoin.dll" (ByVal lpWav As String) As Single
Declare Function WaveSplit Lib "WavJoin.dll" (ByVal lpWav As String, ByVal DatStartPos As Long, ByVal DatEndPos As Long, ByVal lpOutPutWay As String) As Boolean
Declare Function WaveSplitEx Lib "WavJoin.dll" (ByVal lpWav As String, ByVal DatStartPos As Long, ByVal DatEndPos As Long, ByVal lpOutPutWay As String) As Boolean
Declare Function WriteLRWaveFile Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOutWay As String, Optional ByVal IsL As Boolean = True) As Boolean
Declare Function GetOneChannelData Lib "WavJoin.dll" (ByVal lpWav As String, ByVal StartPos As Long, ByVal EndPos As Long, ChooseChannel As NChannel, ByRef AudioData() As Integer) As Boolean
Declare Function WriteWaveTwoChToOneChannel Lib "WavJoin.dll" (ByVal lpWav As String, ByVal lpOutWay As String, ChooseChannel As NChannel) As Boolean
Declare Function Mp3ToWave Lib "WavJoin.dll" (ByVal Mp3File As Variant, ByVal WaveFileOut As String, ByVal Ctrl As Object) As Boolean         'Ctrl 一般位PictureBox控件

屏幕截图 2026-10-09 134735.png

MWO.rar

1.26 MB, 下载次数: 7

最新评论

YY菌 发表于 2026-10-10 10:32:14
有没有考虑过,把mp3转成mp3.wav(就是data段不是PCM数据而是mp3数据的wav文件,fmt段需要存MPEGLAYER3WAVEFORMAT结构体,而不是WAVEFORMATEX或PCMWAVEFORMAT)?
还有ogg也可以转成ogg.wav哦(fmt存OGGWAVEFORMAT结构体,data段存ogg数据)
imperialeast 发表于 7 天前
YY菌 发表于 2026-10-10 10:32
有没有考虑过,把mp3转成mp3.wav(就是data段不是PCM数据而是mp3数据的wav文件,fmt段需要存MPEGLAYER3WAVE ...

这个只是利用现成的exe进行转换,完全没有涉及数据的结构以及数据,第三方的类似ffmpeg的转换,没有技术门槛。就是傻瓜式调用转换命令
YY菌 发表于 6 天前
imperialeast 发表于 2026-10-11 08:17
这个只是利用现成的exe进行转换,完全没有涉及数据的结构以及数据,第三方的类似ffmpeg的转换,没有技术 ...

我试过ffmpeg转出来的mp3.wav是错的,data段的确存的是mp3数据,但fmt存在的还是WAVEFORMATEX,巨硬的wav解码器根本就不认ffmpeg瞎搞的错误结构。
后来我直接自己写了个mp3转wav的程序(查MSDN文档,然后手动填充正确的MPEGLAYER3WAVEFORMAT格式结构)才OJBK了。

浏览过的版块

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2026-10-18 20:16 , Processed in 0.015820 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表