IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

[NetShareAdd] besoin d'aide...


Sujet :

Web & réseau Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut [NetShareAdd] besoin d'aide...
    Bonjour

    J'ai besoin de pouvoir partager un répertoire au travers d'un logiciel Delphi.

    J'ai trouvé ce code qui fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
     
      _SHARE_INFO_2 = record
         shi2_netname: LPWSTR;
         shi2_type: DWORD;
         shi2_remark: LPWSTR;
         shi2_permissions: DWORD;
         shi2_max_uses: DWORD;
         shi2_current_uses: DWORD;
         shi2_path: LPWSTR;
         shi2_passwd: LPWSTR;
      end;
      PSHARE_INFO_2= ^_SHARE_INFO_2;
     
      TForm1 = class(TForm)
        Button1: TButton;
     
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      Share: PSHARE_INFO_2;
      ParamErr: lpdword;
      Rep : longint;
     
    const
     STYPE_DISKTREE = 0;
     STYPE_PRINTQ = 1;
     STYPE_DEVICE = 2;
     STYPE_IPC = 3;
     STYPE_DFS = 100;
     STYPE_SPECIAL = $80000000;
     
     ACCESS_NONE = 0;
     ACCESS_READ  = 1;
     ACCESS_WRITE = 2;
     ACCESS_CREATE = 4;
     ACCESS_EXEC = 8;
     ACCESS_DELETE = 16;
     ACCESS_ATRIB = 32;
     ACCESS_PERM = 64;
     ACCESS_ALL = (ACCESS_READ+ACCESS_WRITE+ACCESS_CREATE+ACCESS_EXEC+ACCESS_DELETE+ACCESS_ATRIB+ACCESS_PERM);
     
    implementation
     
    function NetShareAdd(servername: LPWSTR;
        level: DWORD;
        buf: pSHARE_INFO_2;
        parm_err: LPDWORD):LongWord; stdcall; external 'netapi32.dll';
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      new(share);
      Share^.shi2_netname := 'TESTSHARE'; //nom de partage du dossier
      Share^.shi2_type := STYPE_DISKTREE; // disk drive
      Share^.shi2_remark := 'TESTSHARE to test NetShareAdd'; // zone commentaire
      Share^.shi2_permissions := ACCESS_ALL; //definition des droits
      Share^.shi2_max_uses := 4;  // nb max de users simultane
      Share^.shi2_current_uses := 0;
      Share^.shi2_path := 'D:\icones';   //ici le chemin du dossier a partager
      Share^.shi2_passwd := Nil; // nil si pas password
     
      rep := NetShareAdd(nil, 2, SHARE, ParamErr);
      if rep = 0 then
        messagedlg('OK Dossier partagé',mtInformation,[mbOK], 0)
      else
        messagedlg(inttostr(rep) + ' - ' +SysErrorMessage(rep),mtWarning, [mbOK], 0);
      dispose(share);
    end;
     
    end.
    Cependant, je n'arrive pas à trouver l'utilisation de SvrApi.dll (permettant le partage sous Win9x).
    Sur le site MSDN, ils expliques les différences dans les paramètres, mais je suis incapable de les convertir en Delphi.

    D'autre part, si je crée les partages il faut que je puisse les supprimer ... mais même problème avec NetShareDel

    Si quelqu'un sait ou je peux me procurer un fichier d'aide, un tuto ou quoi que ce soit à ce sujet, je suis prenneur..

    merci

    PS: J'ai trouvé aussi une version C# qui est complète mais ... en C#
    CV :
    - LinkedIn
    - Viadeo

  2. #2
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Voici les bouts de code pour NetShareDel (Suppression du partage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function NetShareDel(servername: LPWSTR;
        netname : LPWSTR;
        reserved : DWORD):LongWord; stdcall; external 'netapi32.dll';
    .....
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i : integer;
    begin
      i := 0;
      rep := NetShareDel(nil, 'TESTSHARE', 0);
      if rep = 0 then
        messagedlg('OK Dossier partagé',mtInformation,[mbOK], 0)
      else
        messagedlg(inttostr(rep) + ' - ' +SysErrorMessage(rep),mtWarning, [mbOK], 0);
    end;
    Donc ca c'était pour les windows 2000/NT/XP.

    Maintenant il reste à savoir comment on fait sous les OS Win9x.
    CV :
    - LinkedIn
    - Viadeo

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    en regardant dans le SDK il s'agit d'un entête différent ( sans rentrer dans les détails ). Essai ceci :

    Pour NetShareAdd :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Sous NT
     
    NET_API_STATUS NetShareAdd(
      LPWSTR servername,
      DWORD level,
      LPBYTE buf,
      LPDWORD parm_err
    );
     
    function NetShareAdd(servername: LPTSTR; level: DWORD; const buf: Pointer;  parm_err: PDWORD): NET_API_STATUS; stdcall;
     
    Sous 98
    extern API_FUNCTION
     NetShareAdd(
      const char FAR * pszServer,       
      short sLevel,                     
      const char FAR * pbBuffer,        
      unsigned short cbBuffer          
    );
    function NetShareAdd(const pszServer: PChar; sLevel: SmallInt; pbBuffer: Pointer;  cbBuffer: Word): NET_API_STATUS; stdcall;
    Pour NetShareDel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Sous NT
    NET_API_STATUS NetShareDel(
      LMSTR servername,
      LMSTR netname,
      DWORD reserved
    );
     
    function NetShareDel(servername: LPTSTR; netname: LPTSTR;  reserved: DWORD): NET_API_STATUS; stdcall;
     
    Sous 98
    extern API_FUNCTION
     NetShareDel(
      const char FAR * pszServer,       
      const char FAR * pszNetName,      
      unsigned short usReserved        
    );
     
    function (const pszServer: PChar; const pszNetName: PChar; usReserved: Word): NET_API_STATUS; stdcall;
    Les entêtes de fonctions Delphi proviennent des API Lanman.pas du site JEDI .

  4. #4
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Merci beaucoup

    Cela va me permettre d'avancer bien plus vite que je l'imaginais.
    merci encore !!!

    a bientot
    ben
    CV :
    - LinkedIn
    - Viadeo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29
  3. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo