![]() |
Re: Netzwerkkennwort dialog anzeigen
hallo nico,
könntest du nicht öfter langeweile haben :?: :mrgreen: raik |
Re: Netzwerkkennwort dialog anzeigen
Zitat:
Und irgendjemand muss da nochmal durch und die Parameter auf var/out/const (in/out/optional) überprüfen und eventuell Wrapper schreiben damit das Programm auf älteren Windows-Versionen noch startet... |
Re: Netzwerkkennwort dialog anzeigen
Nico, klasse!! Wieder was gelernt.
Aber was machst bei Windows < XP? Gruß, Markus PS: Den Dialog hab' ich als Resource nur in WinInet.dll gefunden... |
Re: Netzwerkkennwort dialog anzeigen
Jo! Super 1000 Dank! Echt spitze!
|
Re: Netzwerkkennwort dialog anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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; |
Re: Netzwerkkennwort dialog anzeigen
Zitat:
|
Re: Netzwerkkennwort dialog anzeigen
Zitat:
topic: der 'Netzwerkkennwort eingeben'-Dialog kommt wahrscheinlich wenn versucht wird Objekte von anderen Rechnern (mit o.g. Funktion) anzeigen zu lassen - damit herumzuspielen überlasse ich dem geneigten Entwickler :) |
Re: Netzwerkkennwort dialog anzeigen
Ich hab´s auch nicht böse aufgefasst. Ich musste nur daran denken, dass es Leute gibt, die meinen Namen in Suchmaschinen eintippen ... und DaFox meinte, er stolpert dann in seinen Log-Files drüber. :? Was wollen diese Leute erfahren? Und warum fragen sie nicht einfach mich?
Abgesehen davon hast du mich erwischt. Undokumentierte API-Funktionen haben mich schon immer interessiert. ;) |
Re: Netzwerkkennwort dialog anzeigen
Hi Mathias!
Zitat:
Ich würde es einfach als Anerkennung Deiner guten Arbeit ansehen. Gruß, Markus |
Re: Netzwerkkennwort dialog anzeigen
Zitat:
TOPIC: Nach einem Blick auf CPasswordDialog (objsel.dll) sieht es erstmal so aus als ob man den nicht direkt aufrufen kann. Er wird anscheinend nur von den internen Klassen CBindInfo und CServerInfo (AskForCredsViaSendMessage/AskForCredsViaPostMessage) aufgerufen. Und das scheint nur der Falle zu sein, falls man den Objektauswahl-Dialog (s.o.) aufruft um Objekte von anderen Systemen abzufragen... ...bleibt also die Frage was Du vorher gemacht hast um diesen Dialog zu sehen (und ob Du nur den Passwort-Dialog anzeigen willst - dann halt nur ab WinXP mit Angabe eines ähnlichen Textes wie CPasswordDialog (s.w.o)). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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