INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Windows DLL Credui



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

13.07.2015, 15:25 (Dieser Beitrag wurde zuletzt bearbeitet: 13.07.2015 15:26 von daoberle.)
Beitrag #1

daoberle Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Jul 2015

2014
2007
DE



Question Windows DLL Credui
Hallo,
ich hab eine Frage an die eingefleischten Labviewer hier im Forum. Ich würde gerne die "credui.dll" Datei aus dem Windows>system32 Ordner im Labview verwenden, so dass das "normale" Windows Login Fenster verwendet werden kann.

Ich habe es auch schon hinbekommen in C# den windows Login Dialog aufzurufen und aus dem Aufruf eine DLL zu bauen, die ich via .Net aufrufen kann. Es muss doch aber möglich sein, dies weniger umständlich mit Labview Boardmitteln zu machen. Aber irgendwie komme ich in Labview mit den Datentypen (komplexe Pointer usw.) der Credui.dll Funktionen nicht klar.

Die Funktion in der DLL, mit der man das Login Fenster aufrufen kann ist:
CredUIPromptForWindowsCredentialsW

der Prototyp der Funktion sieht wie folgt aus:
DWORD WINAPI CredUIPromptForWindowsCredentials(
_In_opt_ PCREDUI_INFO pUiInfo,
_In_ DWORD dwAuthError,
_Inout_ ULONG *pulAuthPackage,
_In_opt_ LPCVOID pvInAuthBuffer,
_In_ ULONG ulInAuthBufferSize,
_Out_ LPVOID *ppvOutAuthBuffer,
_Out_ ULONG *pulOutAuthBufferSize,
_Inout_opt_ BOOL *pfSave,
_In_ DWORD dwFlags
);

Vielleicht kann mir jemand weiterhelfen...
Danke schon mal im vorraus zu allem "sachdienlichen"
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2015, 17:21 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2015 12:15 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Windows DLL Credui
(13.07.2015 15:25 )daoberle schrieb:  Hallo,
ich hab eine Frage an die eingefleischten Labviewer hier im Forum. Ich würde gerne die "credui.dll" Datei aus dem Windows>system32 Ordner im Labview verwenden, so dass das "normale" Windows Login Fenster verwendet werden kann.

Ich habe es auch schon hinbekommen in C# den windows Login Dialog aufzurufen und aus dem Aufruf eine DLL zu bauen, die ich via .Net aufrufen kann. Es muss doch aber möglich sein, dies weniger umständlich mit Labview Boardmitteln zu machen. Aber irgendwie komme ich in Labview mit den Datentypen (komplexe Pointer usw.) der Credui.dll Funktionen nicht klar.

Die Funktion in der DLL, mit der man das Login Fenster aufrufen kann ist:
CredUIPromptForWindowsCredentialsW

der Prototyp der Funktion sieht wie folgt aus:
DWORD WINAPI CredUIPromptForWindowsCredentials(
_In_opt_ PCREDUI_INFO pUiInfo,
_In_ DWORD dwAuthError,
_Inout_ ULONG *pulAuthPackage,
_In_opt_ LPCVOID pvInAuthBuffer,
_In_ ULONG ulInAuthBufferSize,
_Out_ LPVOID *ppvOutAuthBuffer,
_Out_ ULONG *pulOutAuthBufferSize,
_Inout_opt_ BOOL *pfSave,
_In_ DWORD dwFlags
);

Vielleicht kann mir jemand weiterhelfen...
Danke schon mal im vorraus zu allem "sachdienlichen"

Dieses API ist recht komplex. Googling scheint anzugeben dass die ANSI Version dieses APIs immer nur einen Fehler zurückgibt. Also müsste man die Unicode Version aufrufen was erfordert dass man alle Strings von LabVIEW ANSI nach Unicode und danach wieder zurück wandeln muss.

Das wird alles ziemlich schnell ziemlich kompliziert. Da Du die .Net Implementation bereits hast, solltest Du das Prinzip ja kennen, denn was Du da mit PInvoke machen musst um dieses API (und anverwandte APIs) aufzurufen ist grundsätzlich dasselbe was man in LabVIEW mit der Call Library Node macht.

Du musst Unicode Buffer anlegen und initialisieren und korrekt in die PCREDUI_INFO structure zuweisen. Dazu alles auch für die Parameter, wobei Du aufpassen musst das für die _Out_ Buffers entsprechend viel uInt16 Elemente bereitstellst. Für die Pointer Parameter kann man direkt entsprechende Datetypen verwenden, aber für die Pointer innerhalb der Struct wird es schwieriger. Das sind nämlich 32 Bit Integer in 32 Bit LabVIEW und 64 Bit Integer in 64 Bit LabVIEW und da gibt es keinerlei automatische Möglichkeit um LabVIEW das machen zu lassen und daher muss man mittels Conditional Compile diese Dinge explicit programmieren.

Grundsätzlich alles nicht wirklich schwieriger dann PInvoke in .Net aber halt schon ziemlich viel Arbeit.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2015, 12:16 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2015 12:16 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: Windows DLL Credui
Im Anhang noch eine Library für die Abhandlung von Unicode Strings, die ich in LabVIEW 2009 überarbeitet habe um auch für 64 Bit LabVIEW korrekt zu funktionieren.


9.0 .llb  Unicode.llb (Größe: 160,44 KB / Downloads: 227)

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: