Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

TDD o Test-Driven Development
immagine docker per lavorare con lazarus e free pascal
Indice
Installare lazarus su mac osx sierra
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non)
Advanced Record Syntax: un esempio pratico
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
DB concetti fondamentali e DBGrid
Advanced Record Syntax
DB concetti fondamentali e ZeosLib
DB concetti fondamentali e connessioni standard
guida all'installazione di fpc trunk da subversion in linux gentoo
Creare un server multithread
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Free Pascal e Lazarus sul Raspberry Pi
fpcup: installazioni parallele di lazarus e fpc
Ubuntu - aggiornare free pascal e lazarus
Come interfacciare periferica twain
Lazarus 1.0
Aspetto retrò (Cmd Line)
Disporre le finestre in un blocco unico (come Delphi)
Zeos ... dietro le quinte (prima parte)
Lavorare con file in formato JSON con Lazarus
Overload di operatori
Dataset virtuale
Linux + Zeos + Firebird
Pascal Script
La gestione degli errori in Lazarus
Indy 10 - Invio email con allegati
Brute force
Le permutazioni
Da DataSource a Excel
StatusBar - aggirare l'errore variabile duplicata
Visualizzare un file Html esterno
Evidenziare voci TreeView
Toolbar
Direttiva $macro
Indy gestiore server FTP lato Client
TImage su Form e Panel
PopUpMenu sotto Pulsante (TSpeedButton)
Conversione numerica
Proprietà
Funzioni a parametri variabili
Overload di funzioni
Liste e puntatori
Conferma di chiusura di un applicazione
Il file: questo sconosciuto
UIB: Unified Interbase
System Tray con Lazarus
Intercettare tasti premuti
LazReport, PDF ed immagini
Lazarus e la crittografia
Ampliare Lazarus
Generare controlli RUN-TIME
TTreeview e Menu
TTreeView
Utilizzare Unità esterne
Lavorare con le directory
Realizzare programmi multilingua
Codice di attivazione
File INI
Esempio lista in pascal
Stabilire il sistema operativo
Recuperare codice HTML da pagina web
Trascinare un file nel programma
Mandare mail con Lazarus
Welcome to Italian community of Lazarus and Free Pascal. Please login or sign up.

Recenti

How To

Utenti
Stats
  • Messaggi totali: 20.582
  • Totale discussioni: 2.471
  • Online today: 25
  • Online ever: 5.949 (Luglio 30, 2026, 09:49:59 PM)
Utenti online
  • Users: 0
  • Guests: 29
  • Total: 29
29 Visitatori, 0 Utenti

[Risolto]Verifica esistenza di "\\tsclient"

Aperto da bonmario, Giugno 24, 2020, 09:14:28 AM

Discussione precedente - Discussione successiva

bonmario

Ciao a tutti,
dovrei fare una funzioncina, che mi permetta di capire se sono fisicamente al lavoro, o se mi sono collegato al PC del lavoro tramite RDP.

Ho notato che, quando mi collego tramite RDP, se apro Esplora Risorse, o comunque un qualsiasi file manager, sotto "Desktop\Rete", c'è la voce "\\tsclient". Questa voce non c'è invece quando sono fisicamente al lavoro, e quindi non mi connetto tramite RDP.

Ho quindi fatto questaa funzioncina di test:
    if DirectoryExistsUTF8('\\tsclient') then begin
      ShowMessage('Esiste !!!');
    end else begin
      ShowMessage('No !!!');
    end;


che però, quando eseguo, mi va sempre nel ramo del "No".

Qualcuno mi sa dire come faccio a verificare l'esistenza o meno di "\\tsclient"?

Grazie in anticipo, Mario

xinyiman

Hai già provato a giocare con il secondo parametro della funzione?

https://www.freepascal.org/docs-html/rtl/sysutils/directoryexists.html

Intendo il FollowLink. Con quello cambia qualcosa?

Diversamente se non trovi nulla posso consigliarti una soluzione alternativa. Scrivi una procedura che conta quanti file e cartelle sono contenute in quel percorso di rete. E gestisci le eccezioni da codice facendogli ritornare sempre quantità 0. Così se ti ritorna un valore superiore a 0 vuol dire che sei collegato da casa.

Qui la spiegazione per scorrere il contenuto delle directory: http://www.lazaruspascal.it/index.php?page=35

Qui la spiegazione per gestire le eccezioni: http://www.lazaruspascal.it/index.php?page=83
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

Da quello che ho capito, quel percorso non viene visto come una directory, quindi non mi funziona.

Ho fatto un passo avanti grazie al codice postato in questa discussione:
https://stackoverflow.com/questions/11602599/enumerate-list-of-network-computers-and-shared-folders-in-a-tree-view

Questo codice, serve però a fare un elenco di tutte le directories di rete.
Per funzionare, funziona, ma ci mette 10 secondi per tirarmi fuori l'unica, che è appunto "\\tsclient".
Adesso, devo capire se riesco in qualche modo a velocizzarla ...

Ciao, Mario

xinyiman

Citazione di: bonmario il Giugno 24, 2020, 11:35:34 AM
Da quello che ho capito, quel percorso non viene visto come una directory, quindi non mi funziona.

Appunto, se fai un conteggio del contenuto e la cartella è vuota vuol dire che non è collegata. Hai guardato i link che ti ho postato?
Ieri è passato, domani è futuro, oggi è un dono...

xinyiman

Un'altra strada potrebbe essere creare un file BAT, che richiama il comando "net use" parametrizzato per recuperare la lista delle unità di rete mappate.
Quando il file BAT funziona come vuoi tu lo richiami come programma esterno e ne interpreti il contenuto.
Ieri è passato, domani è futuro, oggi è un dono...

bonmario

Sì, ho guardato i link, ma nel mio caso specifico non mi servono.

Mi spiego meglio, anche perché mi sono reso conto di aver omesso una cosa fondamentale nel primo post.
Sia sul mio PC di casa, che su quello del lavoro c'è Windows 10.
Mi connetto tramite RDP, avendo impostato il fatto di condividere solo le "Unità USB collegate in seguito". Non sto qui a spiegare i motivi di questa scelta, perché ci vorrebbero ore !!!

Quindi, quando mi connetto, dalla macchina dell'ufficio, vedo solo "\\tsclient", che DirectoryExist non vede.
Se infilo una chiavetta USB nel mio pc di casa, dal pc del lavoro vedo "\\tsclient\E", che DirectoryExist riconosce benissimo come directory.

Il mio problema è appunto quello di vedere "\\tsclient" indipendentemente dal fatto che abbia inserito o meno una chiavetta USB nel mio PC di casa.

Tramite il link che ho postato prima, riesco a fare un elenco di tutte le directories remote, che nel mio caso è composto solo da "\\tsclient", ma per generare questo elenco, ci mette circa 10 secondi.

Ciao, Mario

bonmario

Dopo vari passaggi, sono capitato su questa pagina:
https://stackoverflow.com/questions/973802/detecting-remote-desktop-connection

Questa la funzioncina che ho fatto:
function IsRemoteSession:Boolean;
begin
   if (GetVariabileAmbiente('SESSIONNAME').StartsWith('RDP-')) then begin
     Result:=True;
   end else begin
     Result:=False;
   end;
end;


La cosa bella è che, potendo leggere una variabile di ambiente, posso fare la stessa cosa anche all'interno di un file bat.
Se non fosse stato così, visto che mi serviva pure lì, avrei dovuto fare un programma Lazarus apposta, per poter interpretare la risposta da un file bat.

Ciao, Mario

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.