Lazarus
Home
Help
TinyPortal
Search
Login
Register
Lazarus
»
Forum
»
Programming
»
General
»
How get/read special paths?
Free Pascal
Website
Downloads
Wiki
Documentation
Bugtracker
Mailing List
Lazarus
Website
Downloads (Laz+FPC)
Packages (OPM)
FAQ
Wiki
Documentation (RTL/FCL/LCL)
Bugtracker
CCR Bugs
IRC channel
GIT
Mailing List
Other languages
Foundation
Website
Useful Wiki Links
Project Roadmap
Getting the Source
Screenshots
How to use the forum
About donations (wiki)
Bookstore
Computer Math and Games in Pascal
(preview)
Lazarus Handbook
Search
Advanced search
Recent
Big Numbers Math
by
iLya2IK
[
Today
at 07:13:20 am]
Lazarus for Windows on aa...
by
dbannon
[
Today
at 07:02:55 am]
BUG REPORT: Unable to gen...
by
dbannon
[
Today
at 06:29:49 am]
Database standards OR Am ...
by
cdbc
[
Today
at 06:24:05 am]
Offical launch of the 1 B...
by
Gustavo 'Gus' Carreno
[
Today
at 12:50:46 am]
what to do if my target M...
by
Laksen
[
Today
at 12:49:12 am]
For-in loop over constant...
by
ASerge
[
Today
at 12:36:09 am]
Converting a string/index...
by
TRon
[April 18, 2024, 11:56:37 pm]
exclude ALL packages from...
by
PascalDragon
[April 18, 2024, 11:33:29 pm]
Demoscene The Champs Crac...
by
KodeZwerg
[April 18, 2024, 11:29:50 pm]
Poll: Watches and Display...
by
440bx
[April 18, 2024, 10:55:14 pm]
How to: create DLL file f...
by
paule32
[April 18, 2024, 10:23:59 pm]
Have anyone develop UEFI ...
by
PascalDragon
[April 18, 2024, 10:14:15 pm]
The weird Rewrite bug
by
PascalDragon
[April 18, 2024, 09:58:53 pm]
Assign (textfile) not com...
by
PascalDragon
[April 18, 2024, 09:51:50 pm]
Question for people who h...
by
PascalDragon
[April 18, 2024, 09:44:32 pm]
Linux Workspaces -- StayO...
by
AmatCoder
[April 18, 2024, 08:34:20 pm]
I just released a commerc...
by
Seenkao
[April 18, 2024, 07:57:21 pm]
Access violation when re-...
by
TRon
[April 18, 2024, 07:37:31 pm]
[SOLVED] assembler name i...
by
TRon
[April 18, 2024, 07:26:33 pm]
A fairly simple sound sol...
by
KodeZwerg
[April 18, 2024, 07:01:52 pm]
Step-into the field sette...
by
Martin_fr
[April 18, 2024, 06:54:19 pm]
[Fun Fact] PNG and Micros...
by
Ten_Mile_Hike
[April 18, 2024, 06:24:19 pm]
HTTP/2+HTTP/1.1+WebSocket...
by
iLya2IK
[April 18, 2024, 06:14:30 pm]
Improvement of TFPTimerTh...
by
AlexTP
[April 18, 2024, 05:56:38 pm]
« previous
next »
Print
Pages: [
1
]
Author
Topic: How get/read special paths? (Read 2448 times)
Borneq
Full Member
Posts: 248
How get/read special paths?
«
on:
January 24, 2020, 09:19:01 pm »
In open-file dialog , espacially on Windows, are special paths:
Desktop,Download, OneDrive etc
and network paths.
How to read network paths, iterate over network folders?
Logged
Bart
Hero Member
Posts: 5290
Re: How get/read special paths?
«
Reply #1 on:
January 24, 2020, 09:26:01 pm »
Unit WinDirs has usefull functions for that IIRC.
Bart
Logged
PascalDragon
Hero Member
Posts: 5481
Compiler Developer
Re: How get/read special paths?
«
Reply #2 on:
January 25, 2020, 11:33:32 am »
You need to retrieve a
IShellItem
instance for the special folder you want to list the contents of(in case of networks its
CLSID_NETWORK
). Then you need to enumerate the items of that instance. I currently can't provide you with any code as I'd have to piece it together myself again. However we've used such code at work, so I can show you the necessary functions/interfaces on Monday.
Please note that this will only enumerate those items that Windows discovered by itself as well (thus using the current user's credentials). This means that if NetBIOS browsing is disabled for example (which is the default in Windows 10) then you won't be able to find older shares (e.g. hosted by older NAS). Or if WS-Discovery is disabled on a Windows 7 you won't be able to see shares provided by Windows 10. You can see the used detection method by going to
My Network Places
, changing to
Details
view and then enabling the column
Detection method
(German:
Erkennungsmethode
). It will contain entries like
WSD
,
NetBIOS
and
SSDP
.
Logged
Borneq
Full Member
Posts: 248
Re: How get/read special paths?
«
Reply #3 on:
January 28, 2020, 10:44:09 pm »
I need Windows dirs but also Linux dirs : Downloads , Documents, Uset home (tilda).
And need local network folders. Network especially in Windows, because VirtualBox shared folder for Windows is in network.
Wher can I get examples?
Logged
mangakissa
Hero Member
Posts: 1131
Re: How get/read special paths?
«
Reply #4 on:
January 29, 2020, 08:56:12 am »
https://forum.lazarus.freepascal.org/index.php?topic=35841.0
https://forum.lazarus.freepascal.org/index.php?topic=25954.0
https://wiki.freepascal.org/Multiplatform_Programming_Guide
https://www.freepascal.org/docs-html/rtl/sysutils/getuserdir.html
Logged
Lazarus 2.06 (64b) / FPC 3.0.4 / Windows 10
stucked on Delphi 10.3.1
Borneq
Full Member
Posts: 248
Re: How get/read special paths?
«
Reply #5 on:
January 29, 2020, 03:18:30 pm »
Thanks.
In Linux , DVD and USB drives are usually mounted in /media but how read true mounting points?
In can't find how to read network dirs in Windows, probably I must use SHGetDesktopFolder.
Here is piece of very old my Delphi code: (about SHGetDesktopFolder but not related to networks)
Code: Pascal
[Select]
[+]
[-]
var
FileInfo
:
TSHFileInfo
;
ImageListHandle
:
THandle
;
NewPIDL
:
PItemIDList
;
begin
OLECheck
(
SHGetDesktopFolder
(
FIDesktopFolder
)
)
;
FIShellFolder
:
=
FIDesktopFolder
;
FIDList
:
=
TList
.
Create
;
ImageListHandle
:
=
SHGetFileInfo
(
''
,
0
,
FileInfo
,
SizeOf
(
FileInfo
)
,
SHGFI_SYSICONINDEX
or
SHGFI_SMALLICON
)
;
ImageList
.
Handle
:
=
ImageListHandle
;
{ SendMessage(ListView.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle);
ImageListHandle := SHGetFileInfo('C:\',
0,
FileInfo,
SizeOf(FileInfo),
SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
SendMessage(ListView.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, ImageListHandle);}
OLECheck
(
SHGetSpecialFolderLocation
(
Application
.
Handle
,
CSIDL_DRIVES
,
NewPIDL
)
)
;
SetPath
(
NewPIDL
)
;
ActiveControl
:
=
cbPath
;
cbPath
.
SelStart
:
=
0
;
cbPath
.
SelLength
:
=
Length
(
cbPath
.
Text
)
;
Logged
winni
Hero Member
Posts: 3197
Re: How get/read special paths?
«
Reply #6 on:
January 29, 2020, 03:31:46 pm »
Hi!
In Linux you can read all mounted drives from
/proc/mounts
This is reaonly! And a loafFromFile will fail - read it one string after another!
The mountpoint for external drives is different in different distros.
It may be also /run/media
Winni
Logged
Print
Pages: [
1
]
« previous
next »
Lazarus
»
Forum
»
Programming
»
General
»
How get/read special paths?
TinyPortal
© 2005-2018