Sign in to follow this  
Followers 0
Spiff59

Help with shlwapi DLL call

3 posts in this topic

Can someone point out what it takes to get the PathMatchSpec or PathMatchSpecW function working?

$str = "C:\CONFIG.SYS"
;$str = "C:\CONFIG.SYS" & Chr(0)
$mask = "*.SYS"
;$mask = "*.SYS" & Chr(0) & Chr(0)

If DllCall("shlwapi.dll","int","PathMatchSpecW","wstr",$str,"wstr",$mask) Then Beep(800,100)

Thanks.

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

What a dumb function*.

DllCall() returns an array.

$sFile = "C:\CONFIG.SYS"
$sFileType = "*.SYS"


$aCall = DllCall("shlwapi.dll", "int", "PathMatchSpecW", "wstr", $sFile, "wstr", $sFileType)
; error checking missing here

If $aCall[0] Then Beep(800, 100)

$sFile = "C:\CONFIG.SYS"
If StringRegExpReplace($sFile, ".*\.", "") = "SYS" Then Beep(800, 100)

edit:

* for use with AutoIt

Edited by trancexx

♡♡♡

.

eMyvnE

Share this post


Link to post
Share on other sites

#3 ·  Posted (edited)

Well, it does what it does, matches a string against a DOS filename filter.

StringRegExp's (like the one above) are bogging down the last test version I posted in this thread: FileListToArray

I just thought I'd see if a DLL call could get any where near competing as far as performance. It doesn't. The PathMatchSpecEx function looked interesing, it accepts a semi-colon delimited string containing multiple filename filters. Unfortunately, it is Vista only (and likely still slower than a complex StringRegExp that uses alternation).

Edit: By the way, thank you for the answer. MSDN said PathMatchSpecExW returned an integer, I'd overlooked that my return was actually coming from DLLCall. :) It was 1:30am and I'm not sure both my brain cells were firing at the time.

Edited by Spiff59

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0