Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: WinAPI ::  cwinapi messagebox mit passwortabfrage     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
sean1612
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.09.2015
Beiträge: 31
Beitrag sean1612 Mitglied 17:29:30 26.11.2016   Titel:   cwinapi messagebox mit passwortabfrage            Zitieren

yo jungs.will n programm schreiben das als erstes ne messagebox ausgibt in der ich ein passwort eingeben muss um aufs programm zugreifen zu koennen.suche schon tagelang.finde nicht was funzt.helft ma bitte
axels.
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.10.2016
Beiträge: 31
Beitrag axels. Mitglied 17:35:02 26.11.2016   Titel:              Zitieren

Lies erstmal wie der Laden hier läuft

https://www.c-plusplus.net/forum/200753
Mr C
Unregistrierter




Beitrag Mr C Unregistrierter 09:44:02 27.11.2016   Titel:              Zitieren

In MsgBox password eingeben ? :D :D
Mach dir eigenes Fenster für Password eingabe.
Mr C
Unregistrierter




Beitrag Mr C Unregistrierter 09:58:18 27.11.2016   Titel:   Nachtrag            Zitieren

für Anfang sollte reichen:
https://latedev.wordpress ....... ws-dialogs-from-c-part-2/
http://www.cplusplus.com/articles/E6vU7k9E/#WIN-e1
merano
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.12.2006
Beiträge: 743
Beitrag merano Mitglied 23:08:35 29.11.2016   Titel:   Re: Nachtrag            Zitieren

Mr C schrieb:
für Anfang sollte reichen:
https://latedev.wordpress ....... ws-dialogs-from-c-part-2/
http://www.cplusplus.com/articles/E6vU7k9E/#WIN-e1


Die Vorschläge sehen alle ok aus.

Ein Dialog mit einem Edit-Control mit dem Style "ES_PASSWORD" würde wohl der
gewünschten Lösung entsprechen.
\xDEADBEAF
Unregistrierter




Beitrag \xDEADBEAF Unregistrierter 07:11:54 30.11.2016   Titel:              Zitieren

Ich hatte da mal 'ne gute Bibliothek entdeckt, weiss nicht mehr wo und wie die genau hieß, war wohl von Trollsoft. Ich hatte den Eindruck die ist für Leute gemacht die noch nicht oft bis nie programmiert haben und die es sich gerne einfach machen. Ich fang gleich mal an zu suchen vieleicht find ich sie ja wieder, dann ich geb dir dann hier Bescheid und füg auch noch ein Codebeispiel mit dazu.
sean1612
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.09.2015
Beiträge: 31
Beitrag sean1612 Mitglied 08:19:15 04.12.2016   Titel:   simple messagebox            Zitieren

hi.kann mir mal einer erklaeren wieso der code nicht funkt.



#include <windows.h>

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "CodeBlocksWindowsApp";
LPCTSTR Caption = L"Application Programming Interface";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPCTSTR lpszArgument,
int nCmdShow)
{

MessageBox( NULL,
L"Welcome to Win32 Application Development\n"
L"You will learn about functions, classes, "
L"communication, and other cool stuff\n"
L"Are you ready to rumble!!!!!!!!!!!!!!",
Caption,
MB_YESNOCANCEL | MB_ICONQUESTION);

return 0;


HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default colour as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Code::Blocks Template Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

/* Make the window visible on the screen */
ShowWindow (hwnd, nCmdShow);

/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}

/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}


/* This function is called by the Windows function DispatchMessage() */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}



compiler meldet cannot convert const wchar_t to const CHAR
sean1612
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.09.2015
Beiträge: 31
Beitrag sean1612 Mitglied 09:17:55 04.12.2016   Titel:              Zitieren

hab jetzt den code und der compiler sagt 0 errors und warnings aber kompiliert nicht




#include <windows.h>

/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "CodeBlocksWindowsApp";
LPCTSTR Caption = "Application Programming Interface";

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPCTSTR lpszArgument,
int nCmdShow)
{

MessageBox( NULL,
"Welcome to Win32 Application Development\n"
"You will learn about functions, classes, "
"communication, and other cool stuff\n"
"Are you ready to rumble!!!!!!!!!!!!!!",
Caption,
MB_YESNOCANCEL | MB_ICONQUESTION);

return 0;


HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default colour as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Code::Blocks Template Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
544, /* The programs width */
375, /* and height in pixels */
HWND_DESKTOP, /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);

/* Make the window visible on the screen */
ShowWindow (hwnd, nCmdShow);

/* Run the message loop. It will run until GetMessage() returns 0 */
while (GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);
}

/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}


/* This function is called by the Windows function DispatchMessage() */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
default: /* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}
\xDEADBEAF
Unregistrierter




Beitrag \xDEADBEAF Unregistrierter 16:57:21 04.12.2016   Titel:              Zitieren

Liegt an den fehlenden Codetags.
merano
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.12.2006
Beiträge: 743
Beitrag merano Mitglied 21:59:40 04.12.2016   Titel:              Zitieren

sean1612 schrieb:
hab jetzt den code und der compiler sagt 0 errors und warnings aber kompiliert nicht


Das widersricht sich ja schonmal selbst.

C++:
LPCTSTR Caption = "Application Programming Interface";


kommentiert VS mit:

Code:
error C2440: 'Initialisierung': 'const char [34]' kann nicht in 'LPCTSTR' konvertiert werden.


Wenn man Unicode (default=on) abschaltet, gehts (mit Schmerzen) weiter bis:

Code:
error C2731: 'WinMain': Überladen der Funktion nicht möglich


Was wohl an "LPCTSTR lpszArgument" liegt.

Wenn man das ausbessert und mindestens das return auskommentiert kann man
die Applikation starten und es kommt das erwartbare Ergebnis.

>Das man Code-Tags verwenden sollte wurde ja schon angemerkt.

>Wie man Zeichenketten UNICODE konform definiert solltest du dir ansehen.

Soll der Code zur ursprünglichen Frage passen?
merano
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.12.2006
Beiträge: 743
Beitrag merano Mitglied 22:26:49 04.12.2016   Titel:              Zitieren

Beispiel für die ursprüngliche Frage:

How to Create a Single Line Edit Control
https://msdn.microsoft.com/de-de/library/windows/desktop/hh298434.aspx
Mox
Unregistrierter




Beitrag Mox Unregistrierter 09:56:19 05.12.2016   Titel:              Zitieren

Um dann jetzt doch einfach mal auf die Frage zu antworten: Die gesuchte Funktion heißt CredUIPromptForWindowsCredentials. Allerdings funktioniert nur die W Version. Nur mal für Spaß:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <Windows.h>
#include <tchar.h>
#include <CommCtrl.h>
#include <wincred.h>
 
EXTERN_C int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
    CREDUI_INFO ui = {};
    ULONG package = 0, size = 0;
    void* pBuffer = nullptr;
 
    ui.cbSize = sizeof(ui);
    ui.pszMessageText = TEXT("My MessageText");
    ui.pszCaptionText = TEXT("My CaptionText");
 
    InitCommonControls();
    if(ERROR_SUCCESS == CredUIPromptForWindowsCredentials(&ui, 0, &package, nullptr, 0, &pBuffer, &size, nullptr, CREDUIWIN_GENERIC))
    {
        SecureZeroMemory(pBuffer, size);
        CoTaskMemFree(pBuffer);
    }
 
    return(0);
}
C++ Forum :: WinAPI ::  cwinapi messagebox mit passwortabfrage   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.