Accedi per seguire   
Seguaci 0
spiug

[Delphi] Accesso Remoto e RAS API

13 messaggi in questa discussione

Avevo Delphi aperto in quel momento :)

Tuttavia aggiungo un suggerimento...

ShellAPI è una unit mostruosamente grande e un po' ocmplessa da usare. L'alternativa è l'uso della google.jpgJedi Code Library, nella quale è inserita la unit JclShell. Questa unit mette a disposizione una serie di funzioni alternative alla ShellExecute tradizionale; una di queste è ShellExecEx, nella quale gli altri parametri oltre "Filename" sono opzionali. Pertanto, usando questa funzione, nell'esempio sopra citato ti basterebbe scrivere:

ShellExecEx('C:\Test\Prova.exe');

.. e basta.

Se poi ti interessa sapere come fare a lanciare un'applicazione dal tuo programma e attendere la fine dell'esecuzione dell'applicazione lanciata, non ti basta che pagar... ehm... rispondere a questo messaggio :P

115375[/snapback]

Insomma per usare la Jedi Code Library dovrei scaricarla vero??

Preferisco scaricare il meno possibile con la mia linea, dato che i risultati in finale sono gli stessi!!

Per fare in modo che apra direttamente la connessione ho scritto una cosa del genere:

ShellExecute(Application.Handle, 'open', '{BA126AD7-2166-11D1-B1D0-00805FC1270E}','','',1);

dato che facendo un collegamento alla mia connessione questo aveva come destinazione questa posizione nel registro (che credo sia quel codice tra le graffe), ma ovviamente non funziona...

...cosa devo mettere perchè si apra la finestrella per effettuare la connesione??

Non rieso a capire la directory (Pannello di controllo\Connessioni di rete\nome_connesione.estensione??), e cercando per il disco fisso non mi trova nessun file a riguardo, o per lo meno non sò dove e con che nome andare a cercare!!

Spero abbiate capito...

...non è questione di vita o di morte ma avevo aperto questa discussione giusto per questo!!

Per ora non ti disturbo per sapere come farlo aspettare la fine dell'esecuzione, ma se mi servirà ti terrò presente!!

Grazie!! :up1:

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Allora... Quello che vuoi fare e' richiamare un servizio del s.o. e non un programma esterno... Quindi devi agire in maniera differente (sempre attraverso l'utilizzo delle API di sistema oppure attraverso librerie esterne). Se mi dici, con precisione, cosa vuoi fare, vediamo che consigli possono uscire... Perche' se vuoi semplicemente collegarti a internet, gli approcci sono diversi :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Credo che spiug intenda chiamare le API di RAS... Vedrò di trovare qualcosa in rete

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Credo che spiug intenda chiamare le API di RAS... Vedrò di trovare qualcosa in rete

116511[/snapback]

Sì, pensavo pure io a quelle API (ho gia' del materiale da proporgli :))

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Sì, pensavo pure io a quelle API (ho gia' del materiale da proporgli :P)

116532[/snapback]

Si, voglio proprio che si connetta!!

Allora..cosa mi proponi di bello?? Api di ras?? :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Windows fornisce delle API per poter mettere in comunicazione un client e un server fra di loro sfruttando l’interfaccia RAS: Remote Access Service.

Tale servizio, utilizzabile tramite una serie di API Windows, permette, all’utente o al programmatore che ne fa uso, di connettersi in remoto ad un macchina server (RAS Server) e di avere l’accesso alla rete alla quale tale macchina è connessa.

Mentre per Visual C esiste un include file che si chiama ras.h, nel quale sono descritte le API di accesso remoto, per Delphi non esiste nulla di tale neppure nella versione Enterprise (e qui nascono i problemi...).

Per questo motivo, molti programmazioni si sono messi ad implementare proprie interfacce a queste API. Tra queste troviamo RASDial.

Questa unit può:

• Visualizzare le normali dialog box della connessione remota. Questo include la maschera di Dial-Up, la maschera di proprietà della connessione, e le maschere per la creazione di una connessione.

• Iniziare e terminare una connessione ras, usando le Dialog di connessione o le funzioni di basso livello.

• Creare, copiare e modificare le connessioni remote definite a livello di sistema.

• Poter conoscere quando una connessione remota inizia e finisce.

E molto altro ancora...

La prima cosa da sapere in caso di connessione remota è quale funzione utilizzare. Diciamo che l’implementazione minima di tali API è composta dall’utilizzo della funzione RasDial. Tale funzione serve appunto per effettuare la connessione fisica con un server remoto e riceve, fra i parametri, una struttura del tipo RasDialParams. Un particolare interessante di tale funzione è dato dal fatto che sia possibile chiamarla in due modi completamente diversi: sincrona e asincrona.

In caso di modalità sincrona la funzione non torna il controllo al programma fino a che non è stata impostata una connessione col server. Nel caso di connessione asincrona, la funziona ritorna subito il controllo al programma che l’ha utilizzata e l’esecuzione viene fatta in background. Ci sarà poi l’attivazione di un certo evento a farci capire quando la connessione è andata a buon fine oppure no.

Vediamo ora in dettaglio la struttura RasDialParams, e quali sono i suoi parametri:

TRASDIALPARAMS = packed record
 dwSize : DWORD;
 szEntryName : array [0..RAS_MaxEntryName] of Char;
 szPhoneNumber : array [0..RAS_MaxPhoneNumber] of Char;
 szCallbackNumber : array [0..RAS_MaxCallbackNumber] of Char;
 szUserName : array [0..UNLEN] of Char;
 szPassword : array [0..PWLEN] of Char;
 szDomain : array [0..DNLEN] of Char;
 {$IFDEF WINVER401}
 dwSubEntry : DWORD;
 dwCallbackId : DWORD;
 {$ENDIF}
 szPadding : array [0..2] of Char;
end;
PRASDIALPARAMS = ^TRASDIALPARAMS;

La DLL utilizzata da RAS è RASAPI32.DLL, ed è qui che sono contenute le funzioni di rasDial e rasHangUp. Tale DLL è presente all’interno di Windows, sempre che sia stato installato il supporto al Remote Access o Accesso Remoto. Per poter utilizzare le funzioni qui contenute basta utilizzare un LoadLibrary, o una funzione simile, per il caricamento della DLL in memoria, e un GetProcAddress, o una funzione equivalente per ottenere il puntatore alle funzioni RAS.

I programmatori C sono però più fortunati degli altri, in quanto Visual C o comunque un qualsiasi linguaggio C per Windows, fornisce, sia un file include ras.h che una libreria rasapi32.lib che occorre semplicemente includere al proprio progetto, per poter vedere il tutto funzionare a dovere.

Evabbe'... ma Delphi rimane sempre il meglio :)

Ciao ciao.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
:) ....si, ma in pratica??

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ti posto un esempio da studiare :P

Non dovresti trovare troppe difficolta' a modificarlo a tuo piacimento :)

Ciao ciao.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

A parte il fatto che mi dà un

fatal error:directory:File not found: 'Variants.dcu'.

...me lo trova qui...

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

a te non trovava l'errore?? Avevi provato a compilarlo?

....in ogni caso.... :):P ...non ci capisco molto...

...mi mostra una finestra che mi mostra pure lo stato della connessione, vero?

Allora cosa devo sistemare per far partire questo maledetto??

GRAZIE del tempo impiegato per costruire questo esempio!!

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Che versione di Delphi usi?

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Che versione di Delphi usi?

117017[/snapback]

Borland Delphi Professional v3.0 (Build 5.83)

Ma volendo avrei anche il 7.0 e Delphi Architet 2005 (trial) , ma visto che a scuola abbiamo quella versione ho ritenuto più appropriato tenere quella (mi è stata data dal prof!!)!!

Modificato da spiug

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

In qualche rivista di informatica e programmazione potresti rinvenire Delphi 6 Personal (più recente di D3).

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
Borland Delphi Professional v3.0 (Build 5.83)

Ma volendo avrei anche il 7.0 e Delphi Architet 2005 (trial) , ma visto che a scuola abbiamo quella versione ho ritenuto più appropriato tenere quella (mi è stata data dal prof!!)!!

117322[/snapback]

Azz!!!

Io pensavo avessi almeno la 6...

La Unit Variant fa parte delle librerie standard di Delphi... ma nella 3 non c'e' :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0