Spriggsy's API Collection - SpriggsySpriggs - 12-13-2024
Brought back my API collection to GitHub.
Quote:REST, HTTP, HTTPS API using CURL, urlmon, _OPENCONNECTION (Windows)
Address Validation API (smartystreets.com)
Currency Exchange Rate API (exchangerate-api.com)
Profanity Check/Censor API (purgomalum.com)
Phone Number Verification API (apilayer.com)
Insult Generator API (evilinsult.com)
Sentiment API (sentimapi)
Breaking News API (newsapi.org)
Kitten Image Replacer API (placekitten)
Image from Hash API (robohash)
Screenshot of Webpage API (screenshotlayer.com)
NASA Astronomy Pic of the Day API (nasa.gov) Updated 08/20/2020 Updated with source I had posted elsewhere. Much more efficient code.
DCUO Census API (daybreakcensus)
Online Movie Database API (omdb) Updated 10/18/2020 (Using Wininet WinAPI for internet connectivity)
Lyrics API (lyrics.ovh)
Weather API using GeoLocation from IP Address (various API vendors) Added 08/18/20 since it was missing from collection
Owlbot Dictionary API Added 08/19/2020
Genderize API Added 09/20/2020
QR Tag API Added 09/20/2020
Gravatar Image from email address hash API (gravatar, wordpress) Updated 10/18/2020 (Using Wininet WinAPI for internet connectivity)
WinAPI Libraries (Windows)
UuidCreate, UuidCreateSequential, UuidHash (rpcrt4, Wininet) UUID Creation and MAC Address Lookup (uuidtools and macvendors.com) Updated 10/17/2020
SHFileOperation (Shell32) Added 09/22/2020
GetComputerName, GetUsername (Kernel32 , Advapi32) Added 09/22/2020
FindExecutableA (Shell32) Added 09/26/2020
ShellAboutA (Shell32) Added 09/26/2020
mciSendStringA (WINMM) Record and playback audio (updated source with ffmpeg waveform drawing.) Added 09/26/2020
DoEnvironmentSubstA, GetEnvironmentVariableA, ExpandEnvironmentStringsA (Shell32) (Works similarly to ENVIRON$ but with some extra functionality and speed. Added 09/26/2020
ExractIcon, DrawIcon (Shell32 , User32) Added 09/27/2020
SetWindowPos, GetForegroundWindow (User32) Credit to Pete and visionmercer, original post here Added 09/27/2020
AnimateWindow (User32) Added 09/30/2020
FlashWindow/FlashWindowEx (User32) Added 10/02/2020
capCreateCaptureWindow (Avicap32) Records webcam footage to AVI file Added 10/02/2020
OpenProcess, TerminateProcess (Kernel32) Kill process by name or PID Added 10/05/2020
MessageBeep (User32) Plays WAV audio for common message sounds Added 10/05/2020
OpenClipboard, GetClipboardData (User32) Added 10/07/2020
GetBinaryType (Kernel32) Added 10/09/2020
GetTempPath, GetTempFileName (Kernel32) Added 10/09/2020
GetDateFormat, GetCurrencyFormat (Kernel32) Added 10/09/2020
OpenProcess, ReadProcessMemory, WriteProcessMemory (Kernel32) Complete rewrite 02/17/21 (Peeping Tom, a powerful PEEK/POKE library for QB64)
XInputGetState, XInputSetState, XInputGetBatteryInformation (Xinput1_4) Tests an XInput enabled controller Added 10/26/2020
(Wininet) Various Wininet FTP functions for uploading, downloading, directory listing, etc. Added 11/17/2020
SHOpenWithDialog (Shell32) Invokes the "Open With" dialog in Windows Added 02/06/2021
Cross-Platform Libraries (Windows, Macintosh, and Linux)
pipecom $INCLUDE file that pipes console output to QB64. Win (using WinAPI), Mac, and Linux (using C libraries).Added 02/12/2021
encodeBase64, decodeBase64 (Crypt32, base64 (Linux and Mac)) Added 11/05/2020
mapvar, getmappedvalue (mappedvar) Header file that creates variables mapped to strings. Added 12/20/2020
(preproc) Header file that allows for usage of multiple preprocessor macros available to us in C++. Added 12/23/2020
Miscellaneous APIs / Libraries
hid_read, hid_write (hidapi) Provides HID access to devices over Bluetooth and USB connection (Windows) Test source for interfacing with Nintendo Switch Pro Controller over Bluetooth HID. Added 12/07/2020.
spriggsyspriggs/Spriggsy-s-API-Collection: Spriggsy's API Collection
Originally posted here:
Spriggsy's API Collection
RE: Spriggsy's API Collection - Pete - 12-14-2024
Quality stuff!
I'm going to check this weekend if I have one of your recycle bin api utilities on one of my drives.
+2 for re-upping these goodies.
Pete
RE: Spriggsy's API Collection - SpriggsySpriggs - 12-14-2024
That sounds familiar, Pete. I think you and I talked about that a while back.
RE: Spriggsy's API Collection - grymmjack - 12-15-2024
Sweet! Thanks for bringing the repo back @SpriggsySpriggs
Glad YOU seem to be back too?
RE: Spriggsy's API Collection - Pete - 12-15-2024
Spriggsy, you are a genius!
I found it, and it worked as advertised, to recycle a file. What I did not try is the bin info and the empty bin functions.
I forgot that the routines also do copy and rename.
Anyway, for those who are interested, here is the code Spriggsy put together...
Code: (Select All)
'$CONSOLE:ONLY
'_DEST _CONSOLE
'To - From, From - To Flags
CONST FO_MOVE = &H1
CONST FO_COPY = &H2
CONST FO_DELETE = &H3
CONST FO_RENAME = &H4
'File Op Flags
CONST FOF_MULTIDESTFILES = &H1
CONST FOF_CONFIRMMOUSE = &H2
CONST FOF_SILENT = &H4
CONST FOF_RENAMEONCOLLISION = &H8
CONST FOF_NOCONFIRMATION = &H10
CONST FOF_WANTMAPPINGHANDLE = &H20
CONST FOF_ALLOWUNDO = &H40
CONST FOF_FILESONLY = &H80
CONST FOF_SIMPLEPROGRESS = &H100
CONST FOF_NOCONFIRMMKDIR = &H200
CONST FOF_NOERRORUI = &H400
CONST FOF_NOCOPYSECURITYATTRIBS = &H800
CONST FOF_NORECURSION = &H1000
CONST FOF_NO_CONNECTED_ELEMENTS = &H2000
CONST FOF_WANTNUKEWARNING = &H4000
CONST FOF_NORECURSEREPARSE = &H8000
CONST FOF_NO_UI = FOF_SILENT
'Return Values
CONST DE_SAMEFILE = &H71
CONST DE_MANYSRC1DEST = &H72
CONST DE_DIFFDIR = &H73
CONST DE_ROOTDIR = &H74
CONST DE_OPCANCELLED = &H75
CONST DE_DESTSUBTREE = &H76
CONST DE_ACCESSDENIEDSRC = &H78
CONST DE_PATHTOODEEP = &H79
CONST DE_MANYDEST = &H7A
CONST DE_INVALIDFILES = &H7C
CONST DE_DESTSAMETREE = &H7D
CONST DE_FLDDESTISFILE = &H7E
CONST DE_FILEDESTISFLD = &H80
CONST DE_FILENAMETOOLONG = &H81
CONST DE_DEST_IS_CDROM = &H82
CONST DE_DEST_IS_DVD = &H83
CONST DE_DEST_IS_CDRECORD = &H84
CONST DE_FILE_TOO_LARGE = &H85
CONST DE_SRC_IS_CDROM = &H86
CONST DE_SRC_IS_DVD = &H87
CONST DE_SRC_IS_CDRECORD = &H88
CONST DE_ERROR_MAX = &HB7
CONST UNKNOWN = &H402
CONST ERRORONDEST = &H10000
CONST DE_ROOTDIR_ERRORONDEST = &H10074
TYPE SHFILEOPSTRUCTA
hwnd AS _OFFSET
$IF 64BIT THEN
wfunc AS _UNSIGNED _INTEGER64 'To - From, From - To Flags
$ELSE
wfunc AS _UNSIGNED LONG
$END IF
pFrom AS _OFFSET
pTo AS _OFFSET
fFlags AS LONG
fAnyOperationsAborted AS _BYTE
hNameMappings AS _OFFSET
lpszProgressTitle AS _OFFSET
END TYPE
TYPE SHQUERYRBINFO
$IF 64BIT THEN
cbsize AS _INTEGER64
i64Size AS _INTEGER64
i64NumItems AS _INTEGER64
$ELSE
cbsize AS LONG
i64Size AS _INTEGER64
i64NumItems AS _INTEGER64
$END IF
END TYPE
DECLARE DYNAMIC LIBRARY "Shell32"
FUNCTION FileOperation% ALIAS SHFileOperationA (lpFileOp AS SHFILEOPSTRUCTA)
FUNCTION EmptyRecycleBin% ALIAS SHEmptyRecycleBinA (BYVAL hwnd AS LONG, BYVAL pszRootPath AS _OFFSET, BYVAL dwFlags AS LONG)
FUNCTION QueryRecycleBin~& ALIAS SHQueryRecycleBinA (pszRootPath AS STRING, pSHQueryRBInfo AS SHQUERYRBINFO)
END DECLARE
'Test code
IF _FILEEXISTS(_DIR$("desktop") + "this is a test.txt") = 0 THEN
OPEN _DIR$("desktop") + "this is a test.txt" FOR OUTPUT AS #1
CLOSE #1
END IF
PRINT Copy(_DIR$("desktop") + "this is a test.txt", _DIR$("desktop") + "this is a test as well.txt")
_DELAY 2
PRINT Rename(_DIR$("desktop") + "this is a test as well.txt", _DIR$("desktop") + "this is a test also.txt")
_DELAY 2
PRINT Recycle(_DIR$("desktop") + "this is a test also.txt")
_DELAY 2
PRINT GetRecycleInfo
_DELAY 2
PRINT EmptyBin
FUNCTION GetRecycleInfo$
DIM RecycleInfo AS SHQUERYRBINFO
DIM path AS STRING
DIM a~&
path = "" + CHR$(0)
RecycleInfo.cbsize = LEN(RecycleInfo)
a~& = QueryRecycleBin(path, RecycleInfo)
GetRecycleInfo = _TRIM$(STR$(RecycleInfo.i64Size)) + " " + _TRIM$(STR$(RecycleInfo.i64NumItems))
END FUNCTION
FUNCTION Recycle% (file AS STRING)
DIM lpFileOp AS SHFILEOPSTRUCTA
DIM doublenull AS STRING
doublenull = CHR$(0) + CHR$(0)
file = file + doublenull
lpFileOp.hwnd = _WINDOWHANDLE
lpFileOp.wfunc = FO_DELETE
lpFileOp.pFrom = _OFFSET(file)
lpFileOp.fFlags = FOF_ALLOWUNDO + FOF_WANTNUKEWARNING
Recycle = FileOperation(lpFileOp)
END FUNCTION
FUNCTION Copy% (file AS STRING, dest AS STRING)
DIM lpFileOp AS SHFILEOPSTRUCTA
DIM doublenull AS STRING
doublenull = CHR$(0) + CHR$(0)
file = file + doublenull
dest = dest + doublenull
lpFileOp.hwnd = _WINDOWHANDLE
lpFileOp.wfunc = FO_COPY
lpFileOp.pFrom = _OFFSET(file)
lpFileOp.pTo = _OFFSET(dest)
lpFileOp.fFlags = FOF_ALLOWUNDO
Copy = FileOperation(lpFileOp)
END FUNCTION
FUNCTION Move% (file AS STRING, dest AS STRING)
DIM lpFileOp AS SHFILEOPSTRUCTA
DIM doublenull AS STRING
doublenull = CHR$(0) + CHR$(0)
file = file + doublenull
dest = dest + doublenull
lpFileOp.hwnd = _WINDOWHANDLE
lpFileOp.wfunc = FO_MOVE
lpFileOp.pFrom = _OFFSET(file)
lpFileOp.pTo = _OFFSET(dest)
lpFileOp.fFlags = FOF_ALLOWUNDO
Move = FileOperation(lpFileOp)
END FUNCTION
FUNCTION Rename% (file AS STRING, newname AS STRING)
DIM lpFileOp AS SHFILEOPSTRUCTA
DIM doublenull AS STRING
doublenull = CHR$(0) + CHR$(0)
file = file + doublenull
newname = newname + doublenull
lpFileOp.hwnd = _WINDOWHANDLE
lpFileOp.wfunc = FO_RENAME
lpFileOp.pFrom = _OFFSET(file)
lpFileOp.pTo = _OFFSET(newname)
lpFileOp.fFlags = FOF_ALLOWUNDO
Rename = FileOperation(lpFileOp)
END FUNCTION
FUNCTION EmptyBin%
DIM drive AS STRING
drive = ""
EmptyBin = EmptyRecycleBin(0, _OFFSET(drive), 0)
END FUNCTION
So what I did was modified it to use my own folder, instead of the desktop...
Code: (Select All)
Print "Press any key to start...": Sleep
'Test code
If _FileExists("c:\temporary\" + "this is a test.txt") = 0 Then
Open ("c:\temporary\" + "this is a test.txt") For Output As #1
Close #1
End If
Print Copy("c:\temporary\" + "this is a test.txt", "c:\temporary\" + "this is a test as well.txt")
Print "A copy was made. Ready to rename the copy?": Sleep
Print Rename("c:\temporary\" + "this is a test as well.txt", "c:\temporary\" + "this is a test also.txt")
Print "Ready to recycle?": Sleep
Print Recycle("c:\temporary\" + "this is a test also.txt")
So another +2 for you!
Pete
RE: Spriggsy's API Collection - SpriggsySpriggs - 12-16-2024
Oof! I can definitely tell that is some old code lol. I need to rewrite that code!
(12-15-2024, 12:10 PM)grymmjack Wrote: Sweet! Thanks for bringing the repo back @SpriggsySpriggs
Glad YOU seem to be back too?
I mostly brought it back for one specific user. And I got tired of hunting stuff down in my zip folder so I just went ahead and made it a public repo again so I don't have to do that.
RE: Spriggsy's API Collection - madscijr - 12-16-2024
(12-13-2024, 07:38 PM)SpriggsySpriggs Wrote: Brought back my API collection to GitHub.
...
spriggsyspriggs/Spriggsy-s-API-Collection: Spriggsy's API Collection
...
Thanks Spriggsy! These help make the impossible possible.
I wonder, do we have a resident Linux or Mac expert that can figure out the equivalents for those platforms, to help make this cross-platform?
RE: Spriggsy's API Collection - SpriggsySpriggs - 12-16-2024
I have no idea if we've got a Linux expert. I know Luke is really good at Linux. He made a video player in QB64 using it.
RE: Spriggsy's API Collection - SpriggsySpriggs - 12-17-2024
It turns out I'll need to go through these things to make them v4.0 compatible.
|