Fenêtre de selection d' un PC dans un réseau local ...

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 5 janv. 2007 à 16:15
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 8 janv. 2007 à 13:34
Salut à tous !

Bem je crois que le titre est clair.
Je savais faire cela mais maintenant que j' en ai besoin je ne me rapelle plus du nom de la fonction.
Je crois que c' est une API de Windows.
La fonction devrait me renvoyer le nom du poste seleccionné, du moins, c' est de ça que j' ai besoin.

Merci pour votre aide.
A+

5 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 janv. 2007 à 17:47
Salut Mauricio,

je ne suis pas sûr d'avoir bien compris..mais je t'envoie qd même cette fonction :

function TFaccueil.ComputerName: string;
var
  lpBuffer: array[0..MAX_COMPUTERNAME_LENGTH] of char;
  nSize: dword;
begin
  nSize := Length(lpBuffer);
  if GetComputerName(lpBuffer, nSize) then
    result := lpBuffer
  else
    result := '';
end;

et bonne année !

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
5 janv. 2007 à 18:16
çà devrait mieux te plaire..

function SHBrowseForFolder
(var BrowseInfo: TBrowseInfo): PItemIDList; stdcall;


Value Meaning :


BIF_BROWSEFORCOMPUTER Only returns computers. If the user selects anything other than a computer, the OK button is grayed.
BIF_BROWSEFORPRINTER Only returns printers. If the user selects anything other than a printer, the OK button is grayed.
BIF_RETURNONLYFSDIRS Only returns file system directories. If the user selects folders that aren't part of the file system, the OK button is grayed.
BIF_BROWSEINCLUDEFILES The browse dialog will display files as well as folders




uses ShellAPI, ShlObj;
...
function BrowseDialog
 (const Title: string; const Flag: integer): string;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  Result:='';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName;
    lpszTitle := PChar(Title);
    ulFlags := Flag;
  end;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := TempPath;
    GlobalFreePtr(lpItemID);
  end;
end;

a+


cantador
0
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
6 janv. 2007 à 00:32
Salut Mauricio!
...
C'est tout ce que j'avais à dire.  :)))

PS: C'est toujours quand t'en n'as pas besoin que tu trouves des trucs. Et quand t'en as besoin, tu ne te souviens plus...  Ca doit être un bug de notre espèce.
Tu reviens chez nous?
T'as fini de replanter ton champs d'herbes?   lollllllllllll
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
8 janv. 2007 à 11:45
Salut,

merci à toi Cantador pour ta réponse ...
Malheureusement elle ne marche pas dans le cas de ficgure de sélection d' un PC.

Mais ça m' a permis de trouver sur le net une solution très proche de celle que tu m' as donné:

      function NetworkBrowsing(parent_window: HWND; Caption: String): String;
      var
        lpbi:   _browseInfo;
        dn:   String;
        idlist:   ITEMIDLIST;
        ridlist:   PITEMIDLIST;
        ppMalloc:   IMalloc;
      begin
        try
          //   Get   pointer   to   network   root :
          SHGetSpecialFolderLocation(parent_window,   CSIDL_NETWORK,   PITEMIDLIST(idlist));
          //   Initialise   &   display   dialog   box
          lpbi.hwndOwner := Parent_window;
          lpbi.pidlRoot := PITEMIDLIST(idlist);
          SetLength(dn, 255);
          lpbi.pszDisplayName := PChar(dn);
          lpbi.lpszTitle := PChar(caption);
          lpbi.ulFlags := BIF_BROWSEFORCOMPUTER;
          lpbi.lpfn := nil;
          ridlist := SHBrowseForFolder(lpbi);

          // Return only the name of the 'thing' selected:
          Result:=lpbi.pszDisplayName;

          // Free   memory :
          if   ridlist = nil   then
              Result := ''
          else begin
            SHGetMalloc(ppMalloc);
            ppMalloc.Free(ridlist);
          end;
        except
          Result:='';
        end;
      end;

Haaa, Cari, je ne suis jamais vraiment parti!
Des fois je viens jeter un oeil sur les sources :)

A bientôt,
Mauricio
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
8 janv. 2007 à 13:34
J' ai oublié de préciser que dans ce cas (solution proposée par Cantador), la fonction renvoie une chaine vide, aller savoir pourquoi ...
Par contre elle marche très bien lorsqu' il sagit de renvoyer un répertoire.
A+
0
Rejoignez-nous