pathisrelative (shlwapi)
Last changed: ehaddan-173.11.6.57

.
Summary
Returns TRUE if the path is relative, or FALSE if it is absolute.

C# Signature:

[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]
static extern bool PathIsRelative([In] string lpszPath);

VB.NET Signature

''' <summary>
''' Searches a path and determines if it is relative.
''' </summary>
''' <param name="pszPath">A pointer to a null-terminated string of maximum length MAX_PATH that contains the path to search.</param>
''' <returns>Returns TRUE if the path is relative, or FALSE if it is absolute.</returns>
<DllImport("shlwapi.dll", EntryPoint:="PathIsRelativeW",  SetLastError:=True, CharSet:=CharSet.Unicode)> _
Public Function PathIsRelative(<MarshalAs(UnmanagedType.LPTStr)>pszPath As String) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function

VB Signature:

'THIS IS UNTESTED!!!
Private Declare Function PathIsRelative Lib "shlwapi" _
      Alias "PathIsRelativeA" (ByVal pszPath As String) As Long

User-Defined Types:

None.

Alternative Managed API:

The '''Path.IsPathRooted''' function works the same, but the return value is opposite.  
It returns '''true''' for an absolute path, and '''false''' for a relative path.

Notes:

None.

Tips & Tricks:

None

Sample Code:

C# Example

    [DllImport("shlwapi.dll", CharSet = CharSet.Auto)] static extern bool PathIsRelative([In] string lpszPath);
    public static bool IsRelativePath(string path)
    {
        return PathIsRelative(path);
    }

    //nunit test
    [Test]
    public void TestIsRelative()
    {
        Assert.AreEqual(true,IO.IsRelativePath(@"test.txt"),"Test 1");
        Assert.AreEqual(true, IO.IsRelativePath(@"..\test.txt"), "Test 2");
        Assert.AreEqual(true, IO.IsRelativePath(@"..\..\test.txt"), "Test 3");
        Assert.AreEqual(false, IO.IsRelativePath(@"C:\test.txt"), "Test 4");
    }

VB.NET Example

<DllImport("shlwapi.dll", EntryPoint:="PathIsRelativeW",  SetLastError:=True, CharSet:=CharSet.Unicode)> _
Public Function PathIsRelative(<MarshalAs(UnmanagedType.LPTStr)>pszPath As String) As <MarshalAs(UnmanagedType.Bool)> Boolean
End Function

Public Shared Function IsRelativePath(path As String) As Boolean
    Return PathIsRelative(path)
End  Function

'nunit test
<Test> _
Public Sub TestIsRelative()
      Assert.AreEqual(true,IsRelativePath("test.txt"),"Test 1")
      Assert.AreEqual(true, IsRelativePath("..\test.txt"), "Test 2")
      Assert.AreEqual(true, IsRelativePath("..\..\test.txt"), "Test 3")
      Assert.AreEqual(false, IsRelativePath("C:\test.txt"), "Test 4")
End Sub

Documentation