*/
Got something to write about? Check out our Article Builder.
*/

View \handler.bas

MP3 Property Page 1.0

Submitted By: JJProgrammer1
Rating: (Not rated) (Rate It)


Attribute VB_Name = "handler"
OPTION Explicit
' Window Styles
Public CONST WS_POPUP = &H80000000
Public CONST WS_CHILD = &H40000000
Public CONST WS_VISIBLE = &H10000000
Public CONST WS_GROUP = &H20000
Public CONST WS_TABSTOP = &H10000

Public CONST E_NOTIMPL = &H80004001
Public CONST IDCANCEL = 2
Public CONST IDNO = 7
Public CONST IDYES = 6
Public CONST GMEM_MOVEABLE = &H2
Public CONST MAX_PATH = 260
Public CONST PAGE_EXECUTE_READWRITE = &H40&
Public CONST S_FALSE = 1
Public CONST S_OK = 0
Public CONST SWP_NOSIZE = &H1
Public CONST SWP_NOZORDER = &H4
Public CONST SWP_SHOWWINDOW = &H40
Public CONST GWL_STYLE = (-16)
Public CONST GWL_EXSTYLE = (-20)

Public CONST WS_EX_CONTROLPARENT = &H10000

Public TYPE GUID
    Data1 AS LONG
    Data2 AS INTEGER
    Data3 AS INTEGER
    Data4(7) AS Byte
END TYPE
TYPE DLGTEMPLATE
    Style AS LONG
    dwExtendedStyle AS LONG
    cdit AS INTEGER
    x AS INTEGER
    y AS INTEGER
    cx AS INTEGER
    cy AS INTEGER
    Menu AS INTEGER
    Class AS STRING * 7
    Caption AS INTEGER
END TYPE
Public g_tDlgTemplate AS DLGTEMPLATE
Public m_lPropSheet AS LONG
Public m_lSheet AS LONG

DECLARE FUNCTION GetWindowLong Lib "user32" ALIAS "GetWindowLongA" (BYVAL hwnd AS LONG, BYVAL nIndex AS LONG) AS LONG
DECLARE FUNCTION SetWindowLong Lib "user32" ALIAS "SetWindowLongA" (BYVAL hwnd AS LONG, BYVAL nIndex AS LONG, BYVAL dwNewLong AS LONG) AS LONG
Public DECLARE FUNCTION AddPropertyPage Lib "propext.dll" (BYVAL lpfn AS LONG, BYVAL hPage AS LONG, BYVAL lparam AS LONG) AS LONG
Public DECLARE SUB CopyMemory Lib "kernel32" ALIAS "RtlMoveMemory" (pDest AS ANY, pSource AS ANY, BYVAL ByteLen AS LONG)
Public DECLARE FUNCTION CreatePropertySheetPage Lib "comctl32.dll" ALIAS "CreatePropertySheetPageA" (p AS PROPSHEETPAGE) AS LONG
Public DECLARE SUB DestroyPropertySheetPage Lib "comctl32.dll" (BYVAL hPage AS LONG)
Public DECLARE FUNCTION DragQueryFile Lib "shell32.dll" ALIAS "DragQueryFileA" (BYVAL HDROP AS LONG, BYVAL pUINT AS LONG, BYVAL lpStr AS STRING, BYVAL ch AS LONG) AS LONG
Public DECLARE FUNCTION GetDlgItem Lib "user32" (BYVAL hDlg AS LONG, BYVAL nIDDlgItem AS LONG) AS LONG
Public DECLARE FUNCTION GetPrivateProfileString Lib "kernel32" ALIAS "GetPrivateProfileStringA" (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS ANY, BYVAL lpDefault AS STRING, BYVAL lpReturnedString AS STRING, BYVAL nSize AS LONG, BYVAL lpFileName AS STRING) AS LONG
Public DECLARE FUNCTION GetWindowText Lib "user32" ALIAS "GetWindowTextA" (BYVAL hwnd AS LONG, BYVAL lpString AS STRING, BYVAL cch AS LONG) AS LONG
Public DECLARE FUNCTION GlobalAlloc Lib "kernel32" (BYVAL wFlags AS LONG, BYVAL dwBytes AS LONG) AS LONG
Public DECLARE FUNCTION GlobalFree Lib "kernel32" (BYVAL hMem AS LONG) AS LONG
Public DECLARE FUNCTION GlobalLock Lib "kernel32" (BYVAL hMem AS LONG) AS LONG
Public DECLARE FUNCTION GlobalUnlock Lib "kernel32" (BYVAL hMem AS LONG) AS LONG
Public DECLARE FUNCTION InsertMenu Lib "user32" ALIAS "InsertMenuA" (BYVAL hMenu AS LONG, BYVAL nPosition AS LONG, BYVAL wFlags AS LONG, BYVAL wIDNewItem AS LONG, BYVAL lpNewItem AS STRING) AS LONG
Public DECLARE FUNCTION OleRegEnumFormatEtc Lib "ole32.dll" (refclsid AS GUID, BYVAL dwDirection AS DATADIR, lpEnumFormatEtc AS IEnumFORMATETC) AS LONG
Public DECLARE FUNCTION ReleaseStgMedium Lib "ole32.dll" (pmedium AS STGMEDIUM) AS LONG
Public DECLARE FUNCTION SendDlgItemMessage Lib "user32" ALIAS "SendDlgItemMessageA" (BYVAL hDlg AS LONG, BYVAL nIDDlgItem AS LONG, BYVAL wMsg AS LONG, BYVAL wParam AS LONG, BYVAL lparam AS LONG) AS LONG
DECLARE FUNCTION SetDlgItemText Lib "user32" ALIAS "SetDlgItemTextA" (BYVAL hDlg AS INTEGER, BYVAL nIDDlgItem AS INTEGER, BYVAL lpString AS STRING) AS INTEGER
Public DECLARE FUNCTION SetWindowText Lib "user32" ALIAS "SetWindowTextA" (BYVAL hwnd AS LONG, BYVAL lpString AS STRING) AS LONG
Public DECLARE FUNCTION VirtualProtect Lib "kernel32" (BYVAL lpAddress AS LONG, BYVAL dwSize AS LONG, BYVAL flNewProtect AS LONG, ByRef lpflOldProtect AS LONG) AS LONG
Public DECLARE FUNCTION WPPString Lib "kernel32" ALIAS "WritePrivateProfileStringA" (BYVAL lpApplicationName AS STRING, BYVAL lpKeyName AS ANY, BYVAL lpString AS ANY, BYVAL lpFileName AS STRING) AS LONG
Public DECLARE FUNCTION SetParentAPI Lib "user32" ALIAS "SetParent" (BYVAL hWndChild AS LONG, BYVAL hWndNewParent AS LONG) AS LONG
Public DECLARE FUNCTION GetParent Lib "user32" (BYVAL hwnd AS LONG) AS LONG

Public DECLARE FUNCTION SetWindowPos Lib "user32" (BYVAL hwnd AS LONG, BYVAL hWndInsertAfter AS LONG, BYVAL x AS LONG, BYVAL y AS LONG, BYVAL cx AS LONG, BYVAL cy AS LONG, BYVAL uFlags AS LONG) AS Boolean


Public FUNCTION LOWORD(BYVAL lVal AS LONG) AS INTEGER
    LOWORD = lVal AND &HFFFF&
END FUNCTION

Public FUNCTION HIWORD(BYVAL lVal AS LONG) AS INTEGER
   
    HIWORD = 0
    IF lVal THEN
        HIWORD = lVal  &H10000 AND &HFFFF&
    END IF
   
END FUNCTION

Public FUNCTION GetAddress(BYVAL lpfn AS LONG)
    GetAddress = lpfn
END FUNCTION

Public SUB StrFromPtrW(pOLESTR AS LONG, strOut AS STRING)
    DIM ByteArray(255) AS Byte
    DIM intTemp AS INTEGER
    DIM intCount AS INTEGER
    DIM i AS INTEGER
   
    intTemp = 1
   
    'Walk the string and retrieve the first byte of each WORD.
    WHILE intTemp <> 0
        CopyMemory intTemp, BYVAL pOLESTR + i, 2
        ByteArray(intCount) = intTemp
        intCount = intCount + 1
        i = i + 2
    WEND
   
    'Copy the byte array to our string.
    CopyMemory BYVAL strOut, ByteArray(0), intCount
END SUB

Public SUB StrFromPtrA(pOLESTR AS LONG, strOut AS STRING)
    DIM ByteArray(255) AS Byte
    DIM intTemp AS INTEGER
    DIM intCount AS INTEGER
    DIM i AS INTEGER
   
    intTemp = 1
   
    'Walk the string and retrieve the first byte of each WORD.
    WHILE intTemp <> 0
        CopyMemory intTemp, BYVAL pOLESTR + i, 1
        ByteArray(intCount) = intTemp
        intCount = intCount + 1
        i = i + 1
    WEND
   
    'Copy the byte array to our string.
    CopyMemory BYVAL strOut, ByteArray(0), intCount
   
END SUB

Public FUNCTION SwapVtableEntry(pObj AS LONG, EntryNumber AS INTEGER, BYVAL lpfn AS LONG) AS LONG

    DIM lOldAddr AS LONG
    DIM lpVtableHead AS LONG
    DIM lpfnAddr AS LONG
    DIM lOldProtect AS LONG

    CopyMemory lpVtableHead, BYVAL pObj, 4
    lpfnAddr = lpVtableHead + (EntryNumber - 1) * 4
    CopyMemory lOldAddr, BYVAL lpfnAddr, 4

    CALL VirtualProtect(lpfnAddr, 4, PAGE_EXECUTE_READWRITE, lOldProtect)
    CopyMemory BYVAL lpfnAddr, lpfn, 4
    CALL VirtualProtect(lpfnAddr, 4, lOldProtect, lOldProtect)

    SwapVtableEntry = lOldAddr

END FUNCTION

Public FUNCTION TrimNull(str AS STRING) AS STRING
    str = Trim(str)
    TrimNull = Left(str, LEN(str) - 1)
END FUNCTION

Public SUB LOG(sMsg AS STRING)

    DIM hFile AS INTEGER
    hFile = FREEFILE

    OPEN App.Path & "/" & "raddata.log" FOR APPEND AS #hFile

    WRITE #hFile, sMsg
    CLOSE #hFile

END SUB

corner
© 1996-2008 CommunityHeaven LLC. All rights reserved. Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
North American business development: Nicolai Wadstrom. Publisher: Lars Hagelin.