Автор | Сообщение |
|
| постоянный участник
|
Пост N: 291
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.07.07 01:01. Заголовок: Как можно воспользоваться Windо-вым запросом пароля ?
Уважаемые гуру ! Надеюсь на вашу подсказку и снисхождения..... Надоел в своих прогах простой запрос на ввод пароля. Как к терминалу хХарбора подключить стандартный Windows-запрос пароля. Если к терминалу прицепили "диалог проводника- сохранение или запись файла, папки...", то наверно можно и этот вызвать ! А как ?
|
|
|
Ответов - 54
, стр:
1
2
3
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 312
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.08.07 12:21. Заголовок: Re:
|
|
|
|
| Администратор
|
Пост 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 ); }
|
|
|
|
| Администратор
|
Пост N: 572
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.08.07 10:41. Заголовок: Re:
в конце надо добавить #pragma ENDDUMP
|
|
|
|
| постоянный участник
|
Пост N: 313
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.08.07 11:02. Заголовок: Re:
Pasha пишет: 30195@mail.ru
|
|
|
|
| Администратор
|
Пост N: 573
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.08.07 12:27. Заголовок: Re:
отправил wincred.h Надо еще добавить описание DWORD ulRet;
|
|
|
|
| постоянный участник
|
Пост N: 314
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.08.07 20:22. Заголовок: Re:
Pasha пишет: цитата: | Надо еще добавить описание DWORD ulRet; |
| А куда нужно добавить ?
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| Администратор
|
Пост N: 576
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.08.07 10:43. Заголовок: Re:
какая ошибка при сборке ?
|
|
|
|
| Администратор
|
Пост N: 577
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.08.07 11:23. Заголовок: Re:
Похоже не будет работать эта функция под bcc55 Надо не только wincred.h, а и остальные *.h от мелкософт Нужен bcc582
|
|
|
|
| постоянный участник
|
Пост 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 |
|
|
|
|
|
| постоянный участник
|
Пост N: 425
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.01.08 14:50. Заголовок: Петр пишет: Может к..
Петр пишет: цитата: | Может кому-то еще пригодится |
| Конечно понадобится !!! Большое спасибо !!! Куда пиво высылать ????
|
|
|
|
|
| постоянный участник
|
Пост N: 447
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.08 01:01. Заголовок: А как сделать чтоб О..
А как сделать чтоб ОКНО ПАРОЛЯ не пряталось под все другие открытые окна задач ? юзера мышкой тыкнут и бегут с криком задача не пускает работать....
|
|
|
|
| постоянный участник
|
Пост 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 )
|
|
|
|
| постоянный участник
|
Пост 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 Нет таких функций в хХарборе. Если есть у тебя, то можешь ли их дать ?
|
|
|
|
| постоянный участник
|
Пост N: 383
Зарегистрирован: 09.10.06
|
|
Отправлено: 01.02.08 12:03. Заголовок: Лично для тебя htt..
|
|
|
|
| постоянный участник
|
Пост N: 460
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.08 12:26. Заголовок: Не надо ловить по ме..
Не надо ловить по мелочам .... Эту функцию нашел, уже после отправки . А где взять LOADBITMAP() ?
|
|
|
|
| модератор
|
Пост N: 700
Зарегистрирован: 25.05.05
|
|
Отправлено: 01.02.08 12:40. Заголовок: Andrey пишет: где ..
Andrey пишет: /* 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 ); } }
|
|
|
|
| постоянный участник
|
Пост N: 461
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.08 12:58. Заголовок: Спасибо за функцию !..
Спасибо за функцию ! Только картинка в ПАРОЛЕ (MyLOGO) не появляется ! Что делать ?
|
|
|
|
| модератор
|
Пост N: 701
Зарегистрирован: 25.05.05
|
|
Отправлено: 01.02.08 13:22. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только картинка в ПАРОЛЕ (MyLOGO) не появляется ! |
| gfilatov пишет: цитата: | Arguments <cBitmap> is the name of resource |
| Картинка размера 320х60 должна быть добавлена в РЕСУРСЫ Win-приложения
|
|
|
|
| постоянный участник
|
Пост N: 462
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.02.08 17:37. Заголовок: gfilatov пишет: ..
gfilatov пишет: цитата: | <cBitmap> is the name of resource |
| Вот что значит читать как придется. Написано же чисто по английски "имя ресурса", читаешь по русски "имя или ресурс". Да, плохо когда читаешь не то что написано ! Спасибо Григорий за твое терпенье !!!
|
|
|
Ответов - 54
, стр:
1
2
3
All
[только новые]
|
|