![]() |
CredUIPromptForWindowsCredentials - Dialog Position ändern
Hallo zusammen,
Ich benutze in einer Applikation ![]() 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 |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
1. mit findwindow das Fenster suchen
2. mit SetWindowPos die Koordinaten ändern |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
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 |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
Logischer weise in einem zweiten Thread, der durch das Fenster nicht blockiert wird.
|
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
Du musst das ganze also asynchron machen:
entweder mit BeginThread:
Delphi-Quellcode:
oder mit TThread;
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; enn das auch nicht geht, dann sorry! //redbox im urlaub? |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
Ach soo...
Stimmt. Ich werd's mal versuchen. Edit: Habs versucht und klappt einwandfrei. Danke Euch beiden! |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
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. |
AW: CredUIPromptForWindowsCredentials - Dialog Position ändern
Zitat:
![]() Aber das urspünglich genannte ![]() ![]() 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). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 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