Theotokos Posted January 10, 2023 Report Share Posted January 10, 2023 Boa Tarde! Preciso de uma idéia.... O sistema tem controle de acesso por senha / usuário, porem tem uns benditos que esquecem sua senha aberta (gerente) ai funcionário espertinho faz proveito disto e acessa opções que não poderia... Aí o cliente esta me enchendo o saco, para que eu evite isso... mas não faço ideia o que pode ser feito... Tinha pensado em colocar um TIMER para que qdo ficasse o sistema sem uso por algum tempo (inativo) o sistema pedisse a senha novamente... mas parece que isso já foi tentado por alguem aqui no forum e não deu certo, por causo do consumo de memória algo assim... ALGUMA IDÉIA? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 10, 2023 Report Share Posted January 10, 2023 Mira que simples: http://forums.fivetechsupport.com/viewtopic.php?f=6&t=42429&sid=4e043eeb6afc332310628e35560d3d7a Se for a senha MASTER... Pimba! Regards, saludos. Luiz Fernando and Theotokos 1 1 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 11, 2023 Author Report Share Posted January 11, 2023 Como que insere essa parte no sistema, eu incluir simplesmente no fonte principal e não compila // typedef struct tagLASTINPUTINFO { // UINT cbSize; // DWORD dwTime; // } LASTINPUTINFO, *PLASTINPUTINFO; WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO); typedef BOOL (WINAPI *GETLASTINPUTINFO_)(PLASTINPUTINFO); HB_FUNC( SYSIDLESECS ) { HINSTANCE handle= LoadLibrary("user32.dll"); if ( handle) { GETLASTINPUTINFO_ pFunc; pFunc = GetProcAddress( handle,"GetLastInputInfo" ); if (pFunc) { LASTINPUTINFO lpi; lpi.cbSize = sizeof(LASTINPUTINFO); if (!pFunc(&lpi)) { hb_retni(0); } else { hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) * 0.001 ); } } else { hb_retni(0); } } if (handle) { FreeLibrary( handle); } } #pragma ENDDUMP ***********************************************************************************************+ Quote Link to comment Share on other sites More sharing options...
Theotokos Posted January 11, 2023 Author Report Share Posted January 11, 2023 CONSGUI!!! rsrsrsrs #pragma BEGINDUMP #include "windows.h" #include "hbapi.h" #include <stdio.h> faltando isso Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted January 11, 2023 Report Share Posted January 11, 2023 Eu que tenho sistemas para cartórios a responsabilidade dos usuários é bem complicada. Tenho 4 métodos para gerenciar senhas 1-O usuário loga com a senha no sistema e tudo fica registrado no seu login. Porem se ele deixar o programa aberto outro pode fazer qualquer coisa em nome dele. 2-Todos os procedimentos de lançamentos, inclusões, alterações etc pede a senha novamente. Isto serve para os computadores onde varios usuarios acessam. 3-Todos os procedimentos nescessitam que passe o cartão RFid registrado para cada usuário. 4-Logon e reconhecimento do serial de um pendrive pessoal do usuario. O programa funcionara somente se o PenDrive estiver conectado no micro. (Veja em \Samples protect.prg) Na minha opnião o melhor método é o cartão RFid quando varias pessoas acessam o mesmo micro. Luiz Fernando 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 11, 2023 Report Share Posted January 11, 2023 1 hora atrás, giovanyvecchi disse: Eu que tenho sistemas para cartórios a responsabilidade dos usuários é bem complicada. Tenho 4 métodos para gerenciar senhas 1-O usuário loga com a senha no sistema e tudo fica registrado no seu login. Porem se ele deixar o programa aberto outro pode fazer qualquer coisa em nome dele. 2-Todos os procedimentos de lançamentos, inclusões, alterações etc pede a senha novamente. Isto serve para os computadores onde varios usuarios acessam. 3-Todos os procedimentos nescessitam que passe o cartão RFid registrado para cada usuário. 4-Logon e reconhecimento do serial de um pendrive pessoal do usuario. O programa funcionara somente se o PenDrive estiver conectado no micro. (Veja em \Samples protect.prg) Na minha opnião o melhor método é o cartão RFid quando varias pessoas acessam o mesmo micro. Excelente ideia. más, e o custo operacional disso? Para cartórios, blz. já que exploram os usuários em muitos $$$$$$, já para empresas comuns, não creio seja acessível, ou é? gracias por explanar, pls. Regards, saludos. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 11, 2023 Report Share Posted January 11, 2023 Completo: // C:\FWH..\SAMPLES\SYSIDLE.PRG - By Jose Alvarez. // MOD. EN: 08/11/2022 By kapiabafwh@gmail.com - Sao Paulo - Brasil. #include "FiveWin.ch" /* // function to exit the app when default 'x' number of seconds pass with no activity // from the keyboard or mouse. // attention! IT IS NOT THE TIME without activity of our application, it is the inactive time of the PC // función para salir de la aplicación cuando pasan 'x' cantidad de segundos predeterminados sin actividad // del teclado o raton. // ¡atención! NO ES EL TIEMPO sin actividad de nuestra aplicacion, es el tiempo inactivo de la PC // função para sair do aplicativo quando o número padrão 'x' de segundos passa sem atividade // do teclado ou mouse. // atenção! NÃO É O TEMPO sem atividade do nosso aplicativo, é o tempo inativo do PC */ STATIC oDlg, oFont, oTimerExit STATIC nInterval MEMVAR nSecondsToOut FUNCTION Fnct_Prueba() LOCAL oGet1, oBtnX2, cTitle, aGrad, oSay LOCAL cVar1 := [SYSIDLE.PRG: BY JOSE ALVAREZ. ] HB_GCALL( .F. ) nSecondsToOut := 55 // (segundos) nInterval := 1 * 60000 //(1 x 60000 = 1 minuto) aGrad := { { 0.30, CLR_WHITE, CLR_HCYAN },{ 0.30, CLR_WHITE, CLR_HCYAN } } cTitle := "MOVE MOUSE: PRUEBA DE SYSIDLE.PRG: BY JOSE ALVAREZ" DEFINE FONT oFont NAME "TAHOMA" SIZE 0, - 14 DEFINE DIALOG oDlg SIZE 600, 200 PIXEL TRUEPIXEL RESIZABLE ; TITLE cTitle GRADIENT aGrad FONT oFont @ 050, 10 GET oGet1 VAR cVar1 bitmap "..\bitmaps\chkyes.bmp" ; OF oDlg PIXEL SIZE 300, 24 FONT oFont ; ACTION( NIL ) oGet1:lBtnTransparent := .T. // transparent button get oGet1 oGet1:lAdjustBtn := .T. // Button Get Adjust Witdh oGet3 oGet1:lDisColors := .F. // Deactive disable color oGet1:nClrTextDis := CLR_WHITE // Color text disable status oGet1:nClrPaneDis := CLR_BLUE // Color Pane disable status @ 095, 10 SAY oSay PROMPT "This a Test: No Move Mouse Wait 1 Minute." ; OF oDlg SIZE 150, 14 COLOR CLR_BLACK, CLR_WHITE PIXEL FONT oFont ; TRANSPARENT ADJUST @ 120, 250 BTNBMP oBtnx2 SIZE 60, 60 PIXEL OF oDlg FLAT NOBORDER ; PROMPT "Exit" FILENAME "..\bitmaps\16x16\Exit.bmp" BOTTOM ; COLOR CLR_BLACK, nRgb( 238, 236, 219 ) ACTION( oDlg:End() ) oBtnX2:lCancel := .T. ACTIVATE DIALOG oDlg CENTERED ; ON INIT ( oGet1:SetFocus(), Fnct_StartCounterTime() ) RETURN NIL FUNCTION Fnct_StartCounterTime () DEFINE TIMER oTimerExit OF oDlg INTERVAL nInterval ; ACTION ( IIF( sysIdleSecs() > nSecondsToOut, fExit(), ) ) oTimerExit:Activate() RETURN NIL FUNCTION fExit() oTimerExit:Deactivate() oTimerExit:End() MsgAlert( 'Tu Sesión Finalizó Por Inactividad.', 'Fin de Sesión' ) oDlg:End() RELEASE FONT oFont FreeResources() Release All SysRefresh() HB_GCALL( .T. ) CLEAR MEMORY PostQuitMessage( 0 ) QUIT RETURN NIL // typedef struct tagLASTINPUTINFO { // UINT cbSize; // DWORD dwTime; // } LASTINPUTINFO, *PLASTINPUTINFO; #pragma BEGINDUMP #define _WIN32_WINNT 0x0500 #define WINVER 0x0500 #include "windows.h" #include "hbapi.h" WINUSERAPI BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO); typedef BOOL (WINAPI *GETLASTINPUTINFO_)(PLASTINPUTINFO); HB_FUNC( SYSIDLESECS ) { HINSTANCE handle = LoadLibrary("USER32.dll"); if ( handle) { GETLASTINPUTINFO_ pFunc; pFunc = GetProcAddress( handle,"GetLastInputInfo" ); if (pFunc) { LASTINPUTINFO lpi; lpi.cbSize = sizeof(LASTINPUTINFO); if (!pFunc(&lpi)) { hb_retni(0); } else { hb_retnd( ( DOUBLE ) ( GetTickCount() - lpi.dwTime ) * 0.001 ); } } else { hb_retni(0); } } if (handle) { FreeLibrary( handle); } } #pragma ENDDUMP // FIN / END Regards, saludos. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted January 11, 2023 Report Share Posted January 11, 2023 Leitor RFid é barato Tenho sistema de postos de combustiveis que usa tb. https://produto.mercadolivre.com.br/MLB-2747444333-leitor-rfid-mifare-125khz-com-interface-usb-_JM#position=1&search_layout=stack&type=item&tracking_id=56f3c28d-ab80-45d9-8d2a-002f4ca42656 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 11, 2023 Report Share Posted January 11, 2023 24 minutos atrás, giovanyvecchi disse: Leitor RFid é barato Tenho sistema de postos de combustiveis que usa tb. https://produto.mercadolivre.com.br/MLB-2747444333-leitor-rfid-mifare-125khz-com-interface-usb-_JM#position=1&search_layout=stack&type=item&tracking_id=56f3c28d-ab80-45d9-8d2a-002f4ca42656 Good! Más, como você controla o LEITOR internamente no seu sistema? Podeis mostrar uma IMAGEM e/ou código para vermos, pls? Gracias, Regards, saludos. Quote Link to comment Share on other sites More sharing options...
giovanyvecchi Posted January 12, 2023 Report Share Posted January 12, 2023 Funciona igual um leitor de código de barras, ele simula o teclado. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.