AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) CredUIPromptForWindowsCredentials - Dialog Position ändern
Thema durchsuchen
Ansicht
Themen-Optionen

CredUIPromptForWindowsCredentials - Dialog Position ändern

Ein Thema von taveuni · begonnen am 17. Mär 2011 · letzter Beitrag vom 14. Feb 2024
Antwort Antwort
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#1

CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 10:15
Hallo zusammen,

Ich benutze in einer Applikation CredUIPromptForWindowsCredentials
um einen Login Dialog anzuzeigen und die Windows Credentials zu prüfen.
Der Dialog erscheint im Screencenter was in diesem Fall ungünstig ist.

Da der Dialog Modal erzeugt wird habe ich keine Möglichkeit diesen danach zu verschieben.
Auch im Funktionsaufruf sehe ich keine Möglichkeit die Koordinaten mitzugeben.

Hat da jemand eine Idee?

Gruss Werner
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 10:41
1. mit findwindow das Fenster suchen
2. mit SetWindowPos die Koordinaten ändern
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 11:41
Hallo WM_ClOSE,

Ich versuchte im Ausgangspost darzulegen das dies eben leider nicht möglich ist.
Denn: Der WinApi Aufruf 'CredUIPromptForCredentialsW' (stdcall; external 'Credui.dll')
ist eine Funktion welche das Modale Fenster mit Parametern erzeugt.

Wo und wann soll ich also hier das Fenster verschieben?

Delphi-Quellcode:
// mit diesem Aufruf wird der Dialog Modal angezeigt.
Result := CredUIPromptForCredentialsW(@UIInfo, PWideChar(Server), 0, 0, PWideChar(User),
          CREDUI_MAX_USERNAME_LENGTH * 2, PWideChar(PW), CREDUI_MAX_PASSWORD_LENGTH * 2, Save, Flags);
// Hier ist er wieder weg
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 11:48
Logischer weise in einem zweiten Thread, der durch das Fenster nicht blockiert wird.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 11:59
Du musst das ganze also asynchron machen:
entweder mit BeginThread:
Delphi-Quellcode:
procedure SetPos(param:Pointer);
begin
  Auf Dialog warten; //vllt mit while warten, bis dialog mit findwindow zu finden ist.
  Findwindow(...);
  SetWindowPos(...);
end;

procedure TDeineKlasse.DeineMethode;
begin
  ...
  BeginThread(nil, 0,@SetPos, Pointer(XKoordinate),0, cTemp);
  deindialog;
  ...
end;
oder mit TThread;

enn das auch nicht geht, dann sorry!

//redbox im urlaub?
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 13:04
Ach soo...

Stimmt. Ich werd's mal versuchen.

Edit:
Habs versucht und klappt einwandfrei.
Danke Euch beiden!
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (17. Mär 2011 um 14:10 Uhr)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 17. Mär 2011, 15:04
Nur zur Info:
Man sollte einen Passwortdialog für Benutzerdaten auf einem eigenen Desktop anzeigen. Aber ich weiß, dass es viel Aufwand ist und MS mal so eine Funktion von sich aus anbieten sollte.
Zumindest lässt sich so Schadsoftware unter dem aktuellen Benutzer überlisten.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#8

AW: CredUIPromptForWindowsCredentials - Dialog Position ändern

  Alt 14. Feb 2024, 18:26
Nur zur Info:
Man sollte einen Passwortdialog für Benutzerdaten auf einem eigenen Desktop anzeigen.
Das MSDN-Library durchsuchenCredUIPromptForCredentials (Post #5) sollte man nach Möglichkeit nicht mehr verwenden.
Aber das urspünglich genannte MSDN-Library durchsuchenCredUIPromptForWindowsCredentials (Post #1) hat dafür einen Parameter MSDN-Library durchsuchenCREDUIWIN_SECURE_PROMPT.

Allerdings ist er nur "benutzbar", wenn man auch einen richtigen CredentialProvider verwendet. Also nicht CREDUIWIN_GENERIC, sondern z.B. aus CertSelectionGetSerializedBlob.
Wenn doch, dann geht der Dialog nicht direkt auf, sondern erstmal ein Vordialog "Willst du das Passwortfenster öffnen?", bei OK dann "Drücke Strg+Alt+Entf um in den sicheren Bereich zu gelangen" und danach kommt erst der Dialog im neuen Sicherheits-Desktop (Wählt man dort dann abbrechen, muß man im ursprünglichen Vordialog dann auch nochmal manuell Abbrechen wählen).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (14. Feb 2024 um 18:30 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz