On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 291
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.07.07 01:01. Заголовок: Как можно воспользоваться Windо-вым запросом пароля ?


Уважаемые гуру ! Надеюсь на вашу подсказку и снисхождения.....

Надоел в своих прогах простой запрос на ввод пароля.
Как к терминалу хХарбора подключить стандартный Windows-запрос пароля.
Если к терминалу прицепили "диалог проводника- сохранение или запись файла, папки...", то наверно можно и этот вызвать ! А как ?



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 54 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 312
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.08.07 12:21. Заголовок: Re:


Нашел:
CredUIPromptForCredentials
http://msdn2.microsoft.com/en-us/library/aa375177.aspx

и

только начиная с XP
в висте так вообще вот эта CredUIPromptForWindowsCredentials

http://www.ishodniki.ru/art/print.php?cat=1&id=467&show=net

А как сделать рабочую программку, не знаю.
Знатоки "С" - помогите !!!!


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 571
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.08.07 10:40. Заголовок: Re:


Эта функция находится в credui.dll, которая есть в XP
Во-первых, тебе понадобится файл wincred.h, которого нет в bcc55, но есть в bcc582

Но я думаю что с этим файлом будет работать и bcc55. Давай емайл

Набросал функцию. Извини, не проверял (с) Брат

Переменную dwFlags сформируй сам. Не очень понятно как формировать pfSave

#pragma BEGINDUMP

#include <windows.h>
#include <wincred.h>
#include "hbapi.h"

HB_FUNC( WINLOGON )
{
char szTarget[256];
char szUserName[256];
char szPassword[256];
PBOOL pfSave;
DWORD WINAPI ulRet;
DWORD dwFlags = 0;

szTarget[255] = 0;
szUserName[255] = 0;
ulRet = CredUIPromptForCredentials(
NULL,
szTarget,
NULL,
0,
szUserName,
255,
szPassword,
255,
pfSave,
dwFlags);

hb_retl( (ulRet == NO_ERROR) ? TRUE : FALSE );
}


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 572
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.08.07 10:41. Заголовок: Re:


в конце надо добавить

#pragma ENDDUMP

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 313
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.08.07 11:02. Заголовок: Re:


Pasha пишет:

 цитата:
Давай емайл



30195@mail.ru

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 573
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 06.08.07 12:27. Заголовок: Re:


отправил wincred.h

Надо еще добавить описание
DWORD ulRet;

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 314
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.08.07 20:22. Заголовок: Re:


Pasha пишет:

 цитата:
Надо еще добавить описание
DWORD ulRet;



А куда нужно добавить ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 315
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.08.07 00:32. Заголовок: Re:


Сделал тестовый пример и не собирается.
Помогите кто может.

FUNCTION MAIN()
LOCAL cPassword := "andrey", cUserName := "Admin", cTarget := "None"

IF Os_IsWinXP() .OR. Os_IsWinVista() .OR. Os_IsWin2003()
? WINLOGON(cTarget,cUserName,cPassword)
ELSE
ALERT("Only for WinXP, Win2003, WinVista !")
ENDIF

RETURN NIL
*********************************************************
/*Эта функция "CredUIPromptForCredentials" находится в credui.dll, которая есть в XP
Во-первых, тебе понадобится файл wincred.h, которого нет в bcc55, но есть в bcc582
Но я думаю что с этим файлом будет работать и bcc55
Переменную dwFlags сформируй сам. Не очень понятно как формировать pfSave
*/

#pragma BEGINDUMP

#include <windows.h>
#include <wincred.h>
#include "hbapi.h"

HB_FUNC( WINLOGON )
{
char szTarget[256];
char szUserName[256];
char szPassword[256];
PBOOL pfSave;
DWORD WINAPI ulRet;
DWORD dwFlags = 0;

szTarget[255] = 0;
szUserName[255] = 0;
ulRet = CredUIPromptForCredentials(
NULL,
szTarget,
NULL,
0,
szUserName,
255,
szPassword,
255,
pfSave,
dwFlags);

hb_retl( (ulRet == NO_ERROR) ? TRUE : FALSE );
}

#pragma ENDDUMP


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 576
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.08.07 10:43. Заголовок: Re:


какая ошибка при сборке ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 577
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.08.07 11:23. Заголовок: Re:


Похоже не будет работать эта функция под bcc55
Надо не только wincred.h, а и остальные *.h от мелкософт
Нужен bcc582


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 380
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.01.08 11:46. Заголовок: Адаптировал для свои..


Адаптировал для своих нужд. Может кому-то еще пригодится


 цитата:


#define NO_ERROR 0

#define ERROR_CANCELLED 1223
#define ERROR_INVALID_FLAGS 1004
#define ERROR_INVALID_PARAMETER 87
#define ERROR_NO_SUCH_LOGON_SESSION 1312

PROCEDURE main()
Local pCredUI_Info
Local cTargetName := "server\bux"
Local cUserName := "User1"
Local cPassword := "my^ъpasw"
Local lSave := .t.
Local nFlags := 0
Local nResult

pCredUI_Info := CredUI_Info( 0, "My Message", "My Caption", 0 )

nResult := CredUIPrompt( pCredUI_Info, cTargetName, 0, @cUserName, @cPassword, lSave, nFlags )

if nResult == NO_ERROR
? "Пользователь : ", cUserName
? "Пароль : ", cPassword
elseif nResult == ERROR_CANCELLED
? "Пользователь выбрал Cancel."
elseif nResult == ERROR_INVALID_FLAGS
? "ERROR_INVALID_FLAGS - придется смотреть документацию :-("
elseif nResult == ERROR_INVALID_PARAMETER
? "ERROR_INVALID_PARAMETER - придется смотреть документацию :-("
elseif nResult == ERROR_NO_SUCH_LOGON_SESSION
? "ERROR_NO_SUCH_LOGON_SESSION - придется смотреть документацию :-("
else //-1000
? "Невозможно загрузить credui.dll"
endif

pCredUI_Info := Nil

RETURN 0

#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

#define CREDUI_MAX_CAPTION_LENGTH 128
#define CREDUI_MAX_MESSAGE_LENGTH 32767

#define CREDUI_MAX_PASSWORD_LENGTH 256
#define CREDUI_MAX_USERNAME_LENGTH 513

typedef struct _CREDUI_INFO
{
DWORD cbSize;
HWND hwndParent;
PCTSTR pszMessageText;
PCTSTR pszCaptionText;
HBITMAP hbmBanner;
} CREDUI_INFO, *PCREDUI_INFO;

typedef DWORD (CALLBACK* CredUIPromptForCredentials)(PCREDUI_INFO, PCTSTR, void*, DWORD, PCTSTR, ULONG, PCTSTR, ULONG, BOOL*, DWORD );
static PCREDUI_INFO hb_parCredUI_Info( int iParam );

HB_FUNC( CREDUIPROMPT )
{
HINSTANCE hDLL = LoadLibrary( "credui.dll" );
LONG lRes = -1000L;

if ( hDLL )
{
CredUIPromptForCredentials CredUIPrompt = (CredUIPromptForCredentials) GetProcAddress(hDLL, "CredUIPromptForCredentialsA");

if ( CredUIPrompt != NULL )
{
PCREDUI_INFO pUiInfo = hb_parCredUI_Info( 1 );
LPSTR pszTargetName = hb_parc( 2 );
DWORD dwAuthError = hb_parni( 3 );
LPSTR pszUserName = hb_parcx(4);
LPSTR pszPassword = hb_parcx(5);
BOOL pfSave = hb_parl( 6 );
DWORD dwFlags = hb_parni( 7 );

char* szUserName = hb_xgrab( CREDUI_MAX_USERNAME_LENGTH + 1 );
char* szPassword = hb_xgrab( CREDUI_MAX_PASSWORD_LENGTH + 1 );

strcpy( szUserName, pszUserName );
strcpy( szPassword, pszPassword );

lRes = CredUIPrompt( pUiInfo, pszTargetName, NULL, dwAuthError, szUserName, CREDUI_MAX_USERNAME_LENGTH, szPassword, CREDUI_MAX_PASSWORD_LENGTH, &pfSave, dwFlags );

hb_storc( szUserName, 4 );
hb_storc( szPassword, 5 );

hb_xfree( szUserName );
hb_xfree( szPassword );

if ( ISBYREF(6) )
{
hb_storl( pfSave, 6 );
}
}

FreeLibrary( hDLL );
}

hb_retnl( lRes );
}

/*
destructors, it's executed automatically
*/

static HB_GARBAGE_FUNC( hb_CREDUI_INFO_Destructor )
{
PCREDUI_INFO * ppCredUI_Info = (PCREDUI_INFO*) Cargo;

if( ppCredUI_Info && *ppCredUI_Info )
{
PCREDUI_INFO pInfo = ( PCREDUI_INFO ) ppCredUI_Info;

hb_xfree( (LPSTR) pInfo->pszMessageText );
hb_xfree( (LPSTR) pInfo->pszCaptionText );

if( pInfo->hbmBanner != NULL )
{
DeleteObject( pInfo->hbmBanner );
pInfo->hbmBanner = NULL;
}

*ppCredUI_Info = NULL;
}
}

/*
*/
static PCREDUI_INFO hb_parCredUI_Info( int iParam )
{
PCREDUI_INFO pCredUI_Info = (PCREDUI_INFO) hb_parptrGC( hb_CREDUI_INFO_Destructor, iParam );

if( pCredUI_Info )
{
return pCredUI_Info;
}
else
{
return NULL;
}
}

HB_FUNC( CREDUI_INFO )
{
CREDUI_INFO CredUI_Info = { 0 };
PCREDUI_INFO pCredUI_Info;

CredUI_Info.cbSize = sizeof( CREDUI_INFO );
CredUI_Info.hwndParent = ( HWND ) hb_parnl( 1 );
CredUI_Info.pszMessageText = hb_strndup( hb_parc(2), CREDUI_MAX_MESSAGE_LENGTH - 1);
CredUI_Info.pszCaptionText = hb_strndup( hb_parc(3), CREDUI_MAX_CAPTION_LENGTH - 1);

//Note: The bitmap size is limited to 320x60 pixels.
if( GetObjectType((HGDIOBJ) hb_parnl(4)) == OBJ_BITMAP )
{
CredUI_Info.hbmBanner = ( HBITMAP ) hb_parnl( 4 );
}

pCredUI_Info = ( PCREDUI_INFO ) hb_gcAlloc( sizeof(CREDUI_INFO), hb_CREDUI_INFO_Destructor );
*pCredUI_Info = CredUI_Info;

hb_retptrGC( (void*) pCredUI_Info );
}

#pragma ENDDUMP




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 425
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.01.08 14:50. Заголовок: Петр пишет: Может к..


Петр пишет:

 цитата:
Может кому-то еще пригодится



Конечно понадобится !!! Большое спасибо !!!
Куда пиво высылать ????

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 447
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.08 01:01. Заголовок: А как сделать чтоб О..


А как сделать чтоб ОКНО ПАРОЛЯ не пряталось под все другие открытые окна задач ?
юзера мышкой тыкнут и бегут с криком задача не пускает работать....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 382
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 01.02.08 09:57. Заголовок: При вызове функции C..


При вызове функции CredUI_Info в качестве первого параметра нужно указать хэндл родительского окна, например так:


hWnd := GetForegroundWindow()
hBitmap := LoadBitmap("MYLOGO")

pCredUI_Info := CredUI_Info( hWnd, "My Message", "My Caption", hBitmap )




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 455
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.08 11:52. Заголовок: Error: Unresolved ex..


Error: Unresolved external '_HB_FUN_GETFOREGROUNDWINDOW' referenced from D:\@\TEST_PASSWORD\TEST2.OBJ
Error: Unresolved external '_HB_FUN_LOADBITMAP' referenced from D:\@\TEST_PASSWORD\TEST2.OBJ

Нет таких функций в хХарборе. Если есть у тебя, то можешь ли их дать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 383
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 01.02.08 12:03. Заголовок: Лично для тебя htt..

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 460
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.08 12:26. Заголовок: Не надо ловить по ме..


Не надо ловить по мелочам ....
Эту функцию нашел, уже после отправки .
А где взять LOADBITMAP() ?

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 700
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 01.02.08 12:40. Заголовок: Andrey пишет: где ..


Andrey пишет:

 цитата:
где взять LOADBITMAP() ?





/*
Harbour MiniGUI 1.3 Extended (Build 33)
Author P.Chornyj

Function LoadBitmap()
---------------------
Syntax
LoadBitmap( cBitmap ) --> nHandle

Arguments
<cBitmap> is the name of resource

Returns
If the function succeeds,
the return value is the handle to the specified bitmap.
If the function fails, the return value is 0.
*/

HB_FUNC( LOADBITMAP )
{
PHB_ITEM bitmap = hb_param( 1, HB_IT_STRING );

if( bitmap != NULL )
{
hb_retnl( (LONG) LoadBitmap(GetModuleHandle(NULL), hb_parc(1)) );
}
else
{
hb_retnl( NULL );
}
}


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 461
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.08 12:58. Заголовок: Спасибо за функцию !..


Спасибо за функцию !

Только картинка в ПАРОЛЕ (MyLOGO) не появляется !
Что делать ?

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 701
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 01.02.08 13:22. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только картинка в ПАРОЛЕ (MyLOGO) не появляется !


gfilatov пишет:

 цитата:
Arguments
<cBitmap> is the name of resource


Картинка размера 320х60 должна быть добавлена в РЕСУРСЫ Win-приложения

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 462
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.08 17:37. Заголовок: gfilatov пишет: ..


gfilatov пишет:

 цитата:
<cBitmap> is the name of resource



Вот что значит читать как придется. Написано же чисто по английски "имя ресурса", читаешь по русски "имя или ресурс". Да, плохо когда читаешь не то что написано !
Спасибо Григорий за твое терпенье !!!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 54 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 380
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет