Hello,
Here is a new plugin for you. Lately, the insufficient support for desktop file browsing was a few times a topic here in the forum.
Now I offer you a plugin, that treats exactly this problem. I hope you can use it.
Here is the command list:
String GetFirstSystemDrive()
String GetNextSystemDrive()
String GetSystemDriveType(String Drive)
String GetSystemDriveInformation(String Drive, Integer InfoType)
InfoType(0) = Serial
InfoType(1) = Component Length (max number of chars between backslashes)
InfoType(2) = File-System (FAT, NTFS, ...)
InfoType(3) = Volume Name
Integer CreateFolder(String FolderName)
String GetWorkingDirectory()
Integer DeleteFolder(String FolderName)
Integer SetWorkingDirectory(String Path)
Integer FileCopy(String SourceFile, String DestFile, Integer Overwrite)
Overwrite(0) = Exists file will not overwritten.
Overwrite(1) = Exists file will overwritten.
Integer FileMove(String SourceFile, String DestFile)
Integer FolderMove(String SourceFolder, DestFolder)
Integer FileDelete(String FileName)
String GetFirstFile(String FolderFile)
String GetNextFile()
Integer GetCurrentFileAttributes()
Integer GetFileAttributes(String FileName)
String GetCurrentFileCreationDate(Integer SeperatorChar)
String GetCurrentFileCreationTime(Integer SeperatorChar)
String GetCurrentFileLastAccessDate(Integer SeperatorChar)
String GetCurrentFileLastAccessTime(Integer SeperatorChar)
String GetCurrentFileLastWriteDate(Integer SeperatorChar)
String GetCurrentFileLastWriteTime(Integer SeperatorChar)
Integer GetCurrentFileSizeLow()
Integer GetCurrentFileSizeHigh()
String GetCurrentFileSizeAsHexString(Integer Long) ('Long' means SizeHigh:SizeLow)
String GetCurrentFileSizeAsString(Integer Long) ('Long' means SizeHigh:SizeLow)
String GetFullPathFromFile(String FileName)
String GetFirstFolder(String Path)
String GetNextFolder()
The commands starting with 'GetCurrentFile ...'. Refer to the file obtained with GetFirstFile and GetNextFile.
[UPDATE:27-04-2017]

New Function ChooseFileDialog

New Function SaveAsDialog

New Function MessageBox
Function in detail:
String ChooseFileDialog(String Title, String Filter, Integer MultiSelect)
If you enable multi select, and select multiple files. This returns a string containing the selected directory and then all files in it. All are separated by the pipe ('|').
String SaveAsDialog(String Title, String Filter)
Integer MessageBox(String Message, String Title)
Integer MessageBox(String Message, String Title, Integer Buttons)
Integer MessageBox(String Message, String Title, Integer Buttons, Integer Icon)
Integer MessageBox(String Message, String Title, Integer Buttons, Integer Icon, Integer DefaultButton)
Buttons(0) = The message box contains one push button: OK.
Buttons(1) = The message box contains two push buttons: OK and Cancel.
Buttons(2) = The message box contains three push buttons: Abort, Retry, and Ignore.
Buttons(3) = The message box contains two push buttons: Yes and No.
Buttons(4) = The message box contains two push buttons: Yes and No.
Buttons(5) = The message box contains two push buttons: Retry and Cancel.
Buttons(6) = The message box contains three push buttons: Cancel, Try Again, Continue. Use this message box type instead of (2) Abort, Retry, and Ignore.
Icon(16) = A stop-sign icon appears in the message box.
Icon(32) = A question-mark icon appears in the message box.
Icon(48) = An exclamation-point icon appears in the message box.
Icon(64) = An icon consisting of a lowercase letter i in a circle appears in the message box.
DefaultButton = Set the button to default. 0, 1 or 2 (e.g. 0=Cancel, 1=Try Again, 2=Continue)
return value can be ...
0 = unexpected error.
1 = The OK button was selected.
2 = The Cancel button was selected.
3 = The Abort button was selected.
4 = The Retry button was selected.
5 = The Ignore button was selected.
6 = The Yes button was selected.
7 = The No button was selected.
10 = The Try Again button was selected.
11 = The Continue button was selected.
[UPDATE:06-05-2017]

New Function - String GetCL()
[UPDATE:16-10-2018]

Added 64Bit DLL
[UPDATE:02-03-2019]

Added New Function - Void SetDialogPosition(Integer PosX, Integer PosY) -> Set the Position for ChooseFileDialog and SaveAsDialog

Added New Function - Void SetInitialDir(String Directory) -> Set the Initial Directory for ChooseFileDialog and SaveAsDialog
[UPDATE:07-04-2019]

Added New Function - Void SetWindowStyle(Integer Style) -> Set the Style of AppGameKit output window ->
StyleFlags

Added New Function - Void SetWindowExStyle(Integer ExStyle) -> Set the ExStyle of AppGameKit output window ->
ExStyleFlags
[UPDATE:03-07-2019]

Added New Function - Void OpenDateTimePicker() -> Open a modal DateTimePicker dialog

Added New Function - Integer GetDateYear() -> returns the selected year.

Added New Function - Integer GetDateMonth() -> returns the selected month.

Added New Function - Integer GetDateDay() -> returns the selected day.

Added New Function - Integer GetDateDayOfWeek() -> returns the selected day of week. 0 = Sunday, 1 = Monday ...

Added New Function - Integer GetDateHour() -> returns the selected hour.

Added New Function - Integer GetDateMinute() -> returns the selected minute.

Added New Function - Integer GetDateSecond() -> returns the selected second.

Added New Function - String GetDateString(String format) -> returns the selected date as a formated string
d = Day of Month without leading zero.
dd = Day of Month with leading zero.
ddd = Three chars day of week.
dddd= Full name of week.
M = Month as digits without leading zero.
MM = Month as digits with leading zero.
MMM = Three chars month name.
MMMM= Full name of month.
Y = Years last two gigits without leading zero.
YY = Years last two gigits with leading zero.
YYYY= Four digit Year.

Added New Function - String GetTimeString(String format) -> returns the selected time as a formated string
h = Hours - 12 hour clock without leading zero.
hh = Hours - 12 hour clock with leading zero.
H = Hours - 24 hour clock without leading zero.
HH = Hours - 12 hour clock with leading zero.
m = Minutes without leading zero.
mm = Minutes with leading zero.
s = Seconds without leading zero.
ss = Seconds with leading zero.
[UPDATE:06-07-2019]

Change OpenDateTimePicker - returns now 0 - clicking on cancel, 1- clicking on ok.
[UPDATE:19-10-2019]

Change GetCL - now returns a pipe ( | ) seperated string. Now you can access the arguments via the string functions. GetStringToken(comandline$, "|", token_number)
[UPDATE:01-12-2019]
Added New Function - Void SetWindowPosition(Integer posX, Integer posY, Integer zOrder, Integer width, Integer height, Integer flags) ->
wraps SetWindowPos function to set the AGK-Window.
posX, posY ->
set the position of the AGK-Window
width, height ->
set the size of the AGK-Window. Please let it at 0 (zero). I dont know what happens if not. Use instead Agk-Commands.
zOrder, flags ->
refer ms documentation of function SetWindowPos for more information. (Parameters hWndInsertAfter and uFlags)
Added New Function - String ChooseFolderDialog(String title, String initialDir) -> A Dialog to select a folder.
Fixed - The ChooseFileDialog filter sometimes has an unusual behavior.
[UPDATE:14-10-2020]

SetDialogPosition now set the position relative to its main window.
[UPDATE:29-11-2020]

ChooseFileDialog is now resizeable.
[UPDATE:16-02-2021]

Functions GetCursorX(Mode) and GetCursorY(Mode) added
Mode = 0 -> Mouse coordinates absolut.
Mode = 1 -> Mouse coordinate relative to client area off the active window.

Functions GetWindowX() and GetWindowY() added to receive the Window Position (top/left corner of the window)

Added GetMouseButtons() function. This receives the state of the mouse buttons.
Bit 1 (1) = Left Button
Bit 2 (2) = Right Button
Bit 3 (4) = Middle Button
Bit 4 (8) = Extra Button 1
Bit 5 (16) = Extra Button 2

Includes a tag definition file.
And some code snippets.
System-Drive-Enumeration:
type SystemDrive
Volume as String
VolName as String
Serial as String
ComLength as Integer
FileSystem as String
endtype
function GetDrives(drvList Ref as SystemDrive[])
drive as SystemDrive
drive.Volume = FileExplore.GetFirstSystemDrive()
drive.Serial = FileExplore.GetSystemDriveInformation(drive.Volume, 0)
drive.ComLength = Val(FileExplore.GetSystemDriveInformation(drive.Volume, 1))
drive.FileSystem = FileExplore.GetSystemDriveInformation(drive.Volume, 2)
drive.VolName = FileExplore.GetSystemDriveInformation(drive.Volume, 3)
while(len(drive.Volume) > 0)
drvList.Insert(drive)
drive.Volume = FileExplore.GetNextSystemDrive()
drive.Serial = FileExplore.GetSystemDriveInformation(drive.Volume, 0)
drive.ComLength = Val(FileExplore.GetSystemDriveInformation(drive.Volume, 1))
drive.FileSystem = FileExplore.GetSystemDriveInformation(drive.Volume, 2)
drive.VolName = FileExplore.GetSystemDriveInformation(drive.Volume, 3)
endwhile
endfunction drvList.length()
Folder Enumeration:
function GetFolders(fldList Ref as String[])
folder as String
folder = FileExplore.GetFirstFolder("Y:\*.*")
while(len(folder) > 0)
fldList.Insert(folder)
folder = FileExplore.GetNextFolder()
endwhile
endfunction fldList.length()
File Enumeration:
function GetFiles(fldList Ref as String[])
file as String
file = FileExplore.GetFirstFile("Y:\*.*")
while(len(file) > 0)
fldList.Insert(file)
file = FileExplore.GetNextFile()
endwhile
endfunction fldList.length()
Please tell me if you find bugs or have some suggestions.
And if you feel the urgent need to support this project then you are welcome to donate a few coins.