Skip to Content
VB Shell Programming
book

VB Shell Programming

by J.P. Hamilton
July 2000
Intermediate to advanced
392 pages
10h 19m
English
O'Reilly Media, Inc.
Content preview from VB Shell Programming

The PIDL Manager

Before we continue, we really need to discuss pidlMgr.cls. This class is a helper class that we will use to manage functions involving PIDLs. These helper functions include things like creating, copying, and deleting PIDLs, getting the last PIDL in a list of PIDLs, getting the next PIDL in a list of PIDLs, as well as additional functions that are more specific to our particular namespace extension.

So add a new class to the project called pidlMgr.cls, and let’s start implementing some of the functionality of this class.

Delete

We have used three functions from this class so far: Delete, Copy, and Create. Delete is by far the easiest of the functions to implement. It just wraps a call to IMalloc::Free. Delete looks like this:

'pidlMgr.cls

Private m_  pMalloc As IMalloc

Private Sub Class_Initialize(  )
    Set m_  pMalloc = GetMalloc
End Sub

Private Sub Class_Terminate(  )
    Set m_  pMalloc = Nothing
End Sub

Public Sub Delete(ByVal pidl As LPITEMIDLIST)
    m_  pMalloc.Free pidl
End Sub

Copy

Copy is used to make a copy of the PIDL:

Public Function Copy(ByVal pidlSource As LPITEMIDLIST) As LPITEMIDLIST
    Dim pidlTarget As LPITEMIDLIST
    Dim cbSource As UINT
    
    Copy = 0
    
    If (pidlSource = 0) Then
        Exit Function
    End If
    
    cbSource = GetSize(pidlSource)
    
    pidlTarget = m_pMalloc.Alloc(cbSource)
    If (pidlTarget > 0) Then
        CopyMemory ByVal pidlTarget, ByVal pidlSource, cbSource
        Copy = pidlTarget
    End If
    
End Function

Create

This method is a little more involved, but the reason for this requires some background ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

VBScript in a Nutshell

VBScript in a Nutshell

Matt Childs, Paul Lomax, Ron Petrusha
VB.NET Language in a Nutshell, Second Edition

VB.NET Language in a Nutshell, Second Edition

Steven Roman PhD, Ron Petrusha, Paul Lomax
Visual C++® 6 Unleashed

Visual C++® 6 Unleashed

Mickey Williams, David Bennett

Publisher Resources

ISBN: 1565926706Catalog PageErrata