AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Netzwerkkennwort dialog anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Netzwerkkennwort dialog anzeigen

Ein Thema von SleepyMaster · begonnen am 5. Jul 2004 · letzter Beitrag vom 11. Jul 2004
 
NicoDE
(Gast)

n/a Beiträge
 
#25

Re: Netzwerkkennwort dialog anzeigen

  Alt 11. Jul 2004, 16:09
Zitat von DaFox:
Aber was machst bei Windows < XP?
Keine Ahnung.
Ich kenne in der Richtung nur noch den 'Xxx auswählen'-Dialog (die objsel.dll ruft den 'Netzwerkkennwort eingeben'-Dialog auf... vielleicht gibt's ja ein Flag um das selbst anzeigen zu lassen... MSDN/Google/Mathias).
Delphi-Quellcode:
uses
  ActiveX, ObjSel;

////////////////////////////////////////////////////////////////////////////////
//
// Test - 'Select User' dialog
//

function InitObjectPicker(Picker: IDsObjectPicker): HRESULT;
var
  ScopeInit: array [0..0] of TDSOPScopeInitInfo;
  InitInfo: TDSOPInitInfo;
begin
  if nil = Picker then
    Result := E_INVALIDARG
  else
  begin
    ZeroMemory(@ScopeInit, SizeOf(ScopeInit));
    ScopeInit[0].cbSize := SizeOf(TDSOPScopeInitInfo);
    ScopeInit[0].flType := DSOP_SCOPE_TYPE_TARGET_COMPUTER;
    ScopeInit[0].flScope := DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE;
    ScopeInit[0].FilterFlags.Uplevel.flBothModes := DSOP_FILTER_USERS;
    ScopeInit[0].FilterFlags.flDownlevel := DSOP_DOWNLEVEL_FILTER_USERS;

    ZeroMemory(@InitInfo, SizeOf(InitInfo));
    InitInfo.cbSize := SizeOf(InitInfo);
    InitInfo.cDsScopeInfos := SizeOf(ScopeInit) div SizeOf(TDSOPScopeInitInfo);
    InitInfo.aDsScopeInfos := @ScopeInit;
    InitInfo.flOptions := DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK;

    Result := Picker.Initialize(InitInfo);
  end;
end;

function ProcessSelectedObjects(DatObj: IDataObject): HRESULT;
var
  StgMed: TStgMedium;
  FmtEtc: TFormatEtc;
  SelLst: PDSSelectionList;
  Index: ULONG;
  Text: string;
begin
  if nil = DatObj then
    Result := E_INVALIDARG
  else
  begin
    with FmtEtc do
    begin
      cfFormat := RegisterClipboardFormat(CFSTR_DSOP_DS_SELECTION_LIST);
      ptd := nil;
      dwAspect := DVASPECT_CONTENT;
      lindex := -1;
      tymed := TYMED_HGLOBAL;
    end;
    Result := DatObj.GetData(FmtEtc, StgMed);
    if Succeeded(Result) then
    begin
      SelLst := PDS_SELECTION_LIST(GlobalLock(StgMed.hGlobal));
      if SelLst <> nil then
      try
        Text := '';
        for Index := 0 to SelLst.cItems - 1 do
        begin
          Text := Text + Format(
            'Object : %u'#13#10 +
            ' Name : %s'#13#10 +
            ' Class: %s'#13#10 +
            ' Path : %s'#13#10 +
            ' UPN : %s'#13#10, [
            Index,
            WideCharToString(SelLst.aDsSelection[Index].pwzName),
            WideCharToString(SelLst.aDsSelection[Index].pwzClass),
            WideCharToString(SelLst.aDsSelection[Index].pwzADsPath),
            WideCharToString(SelLst.aDsSelection[Index].pwzUPN)]);
        end;
        ShowMessage(Text);
      finally
        GlobalUnlock(StgMed.hGlobal);
      end
      else
        Result := E_POINTER;

      ReleaseStgMedium(StgMed);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Picker: IDsObjectPicker;
  DatObj: IDataObject;
begin
  if Succeeded(CoInitialize(nil)) then
  try
    if Succeeded(CoCreateInstance(CLSID_DsObjectPicker, nil,
      CLSCTX_INPROC_SERVER, IID_IDsObjectPicker, Picker)) then
    try
      if Succeeded(InitObjectPicker(Picker)) then
        case Picker.InvokeDialog(Self.Handle, DatObj) of
          S_OK:
            try
              ProcessSelectedObjects(DatObj);
            finally
              DatObj := nil;
            end;
          S_FALSE:
            ShowMessage('Dialog wurde vom Benutzer abgebrochen.');
        end;
    finally
      Picker := nil;
    end;
  finally
    CoUninitialize;
  end;
end;
Angehängte Dateien
Dateityp: pas objsel_361.pas (19,8 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz