oribeiro Posted September 29, 2014 Report Share Posted September 29, 2014 Pessoal, O cGetFile() permite que o usuário apague o arquivo da pasta com a tecla <Delete>. Por motivo de segurança, há aluma instrução para esse comando não permitir isso ou uma função que substitua esse comando? Aguardo, obrigado. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 29, 2014 Report Share Posted September 29, 2014 http://wiki.fivetechsoft.com/doku.php?id=fivewin_function_cgetfile Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 29, 2014 Author Report Share Posted September 29, 2014 Estou estudando esse helpfile mas não encontrei qual é a Flag que devo usar para inibir o uso da tecla <Delete> kapiaba 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 29, 2014 Report Share Posted September 29, 2014 Veja se ajuda: http://msdn.microsoft.com/en-us/library/windows/desktop/ms646839(v=vs.85).aspx Pegue o exemplo: C:\FWH..\SOURCE\WINAPI\GETFILES.PRG abs. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 29, 2014 Author Report Share Posted September 29, 2014 Consegui isso aqui... cFotoNew:= cGetFile( "Bitmap (*.bmp)| *.bmp|"+ ; "DIB (*.dib)| *.dib|" + ; "PCX (*.pcx)| *.pcx|" + ; "JPEG (*.jpg)| *.jpg|" + ; "GIF (*.gif)| *.gif|" + ; "TARGA (*.tga)| *.tga|" + ; "RLE (*.rle)| *.rle|" + ; "Todos os Arquivos (*.*)|*.*|" ; ,"Selecione a Foto Desejada",1,,.F.,,0x00000200) // OFN_ALLOWMULTISELECT Mas ele retorna um texto muito longo no nome do arquivo. Por favor, confira.. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 29, 2014 Report Share Posted September 29, 2014 Veja se esta bom assim: #Include 'Fivewin.Ch' #define OFN_PATHMUSTEXIST 0x00000800 #define OFN_NOCHANGEDIR 0x00000008 #define OFN_ALLOWMULTISELECT 0x00000200 #define OFN_EXPLORER 0x00080000 // new look commdlg #define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules #define OFN_ENABLESIZING 0x00800000 #define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura. function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) local cSelect, nAt, aFiles := {} /* local nFlags := nOr( OFN_PATHMUSTEXIST , OFN_NOCHANGEDIR , ; OFN_ALLOWMULTISELECT , OFN_EXPLORER , ; OFN_LONGNAMES, OFN_ALLOWMULTISELECT ) */ local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, OFN_LONGNAMES ) //cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, .f., .t., nFlags ) cSelect := cGetFile( "Bitmap (*.bmp)| *.bmp|"+ ; "DIB (*.dib)| *.dib|" + ; "PCX (*.pcx)| *.pcx|" + ; "JPEG (*.jpg)| *.jpg|" + ; "GIF (*.gif)| *.gif|" + ; "TARGA (*.tga)| *.tga|" + ; "RLE (*.rle)| *.rle|" + ; "Todos os Arquivos (*.*)|*.*|" ; ,"Selecione a Foto Desejada",1,,.F.,, nFlags ) cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 ) if ! Empty( cSelect ) cSelect := StrTran( cSelect, Chr( 0 ), "," ) aFiles := hb_aTokens( cSelect, "," ) if Len( aFiles ) > 1 for nAt := 2 TO Len( aFiles ) aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ] next nAt ADel( aFiles, 1 ) ASize( aFiles, Len( aFiles ) - 1 ) endif endif return aFiles abs, Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 29, 2014 Author Report Share Posted September 29, 2014 Resolveu!!! Muito obrigado por mais essa. Fica aqui a função para quem desejar utilizar. ********************************************************************************************* Function oaGetFile( cMask, cTitle, nDefaultMask, cInitDir ) ********************************************************************************************* Local aFiles := aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) Local i,cFile:= "" if Len(aFiles)>0 // Retorna apenas um arquivo selecionado if AT(" ",aFiles[1])>0 cFile := Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) aFiles[1] := Alltrim(Subst( aFiles[1], AT(" ",aFiles[1]), Len(aFiles[1]))) cFile := cFile + Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) else cFile := aFiles[1] endif endif Return( cFile ) ********************************************************************************************* Function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) ********************************************************************************************* #define OFN_PATHMUSTEXIST 0x00000800 #define OFN_NOCHANGEDIR 0x00000008 #define OFN_ALLOWMULTISELECT 0x00000200 #define OFN_EXPLORER 0x00080000 // new look commdlg #define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules #define OFN_ENABLESIZING 0x00800000 #define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura. Local cSelect, nAt, aFiles := {} Local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, OFN_LONGNAMES ) // Param. := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave, lLongNames, nFlags ) cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, .F., .T., nFlags ) cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 ) if ! Empty( cSelect ) cSelect := StrTran( cSelect, Chr( 0 ), "," ) aFiles := hb_aTokens( cSelect, "," ) if Len( aFiles ) > 1 for nAt := 2 TO Len( aFiles ) aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ] next nAt ADel( aFiles, 1 ) ASize( aFiles, Len( aFiles ) - 1 ) endif endif Return( aFiles ) Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 29, 2014 Author Report Share Posted September 29, 2014 O problema persiste... Rapaz, o botão [ REDE ] que aparece nessa nova tela do cGetFile permite ao usuário ter acesso aos diretórios e arquivos e ele pode apagá-los. Esse botão [ REDE ] também aparece na tela de configuração de impressora. Tem como cancelá-lo??? Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 30, 2014 Author Report Share Posted September 30, 2014 Amigos, Ainda estou com duas telas no meu sistema que permitem ao usuário acessar as pastas dentro do Terminal Server e apagar arquivos com o botão <Delete>. Eu preciso sumir com esse botão [ REDE ] do cGetFile e do PrintSetup, alguém tem alguma idéia? Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 30, 2014 Author Report Share Posted September 30, 2014 Para o cGetFile eu encontrei o parâmetro e já o implementei: (( Resolvido )) #define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg Também, achei o parâmetro para o PrinterSetup(): #DEFINE PD_NONETWORKBUTTON 0x00200000 Parece que essa é a solução, mas não tenho a mínima ideia de como utilizá-lo. Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 30, 2014 Author Report Share Posted September 30, 2014 Qual é a diferença entre GetPrintDC() e PrnterSetup() ??? Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 30, 2014 Report Share Posted September 30, 2014 http://forums.fivetechsupport.com/viewtopic.php?f=6&t=16278&start=0 http://www.ousob.com/ng/fivewin/ng725a5.php http://fivewin.com.br/index.php?/topic/16411-printersetup/ http://fivewin.com.br/index.php?/topic/21469-nome-da-impressora-selecionada/ Quote Link to comment Share on other sites More sharing options...
oribeiro Posted September 30, 2014 Author Report Share Posted September 30, 2014 Valeu Karinha!!! Está resolvido. Pelo que entendi posso substituir o PrinterSetup() pelo GetPrintDC() sem nenhum efeito colateral no sistema. A vantagem é que esse último não apresenta famigerado botão [ REDE ]. Agora, com o uso do Cliente do Terminal Server o meu sistema passa a apresentar um excelente grau de segurança, pois eu fechei o acesso direto aos dados de todas as formas. Muito obrigado. kapiaba 1 Quote Link to comment Share on other sites More sharing options...
SAOliveira Posted September 30, 2014 Report Share Posted September 30, 2014 Oscar. Se não for pedir muito, apresente os .prg finais e se possível tela. Grato. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted September 30, 2014 Report Share Posted September 30, 2014 Sérgio, é só seguir este exemplo. #include 'fivewin.ch' #define OFN_PATHMUSTEXIST 0x00000800 #define OFN_NOCHANGEDIR 0x00000008 #define OFN_ALLOWMULTISELECT 0x00000200 #define OFN_EXPLORER 0x00080000 // new look commdlg #define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules #define OFN_ENABLESIZING 0x00800000 #define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura. #define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) local cSelect, nAt, aFiles := {} /* local nFlags := nOr( OFN_PATHMUSTEXIST , OFN_NOCHANGEDIR , ; OFN_ALLOWMULTISELECT , OFN_EXPLORER , ; OFN_LONGNAMES, OFN_ALLOWMULTISELECT ) */ local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, ; OFN_LONGNAMES, OFN_NONETWORKBUTTON ) SKINBUTTONS() //cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, .f., .t., nFlags ) cSelect := cGetFile( "Bitmap (*.bmp)| *.bmp|"+ ; "DIB (*.dib)| *.dib|" + ; "PCX (*.pcx)| *.pcx|" + ; "JPEG (*.jpg)| *.jpg|" + ; "GIF (*.gif)| *.gif|" + ; "TARGA (*.tga)| *.tga|" + ; "RLE (*.rle)| *.rle|" + ; "Todos os Arquivos (*.*)|*.*|" ; ,"Selecione a Foto Desejada",1,,.F.,, nFlags ) cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 ) if ! Empty( cSelect ) cSelect := StrTran( cSelect, Chr( 0 ), "," ) aFiles := hb_aTokens( cSelect, "," ) if Len( aFiles ) > 1 for nAt := 2 TO Len( aFiles ) aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ] next nAt ADel( aFiles, 1 ) ASize( aFiles, Len( aFiles ) - 1 ) endif endif return aFiles Quote Link to comment Share on other sites More sharing options...
oribeiro Posted October 1, 2014 Author Report Share Posted October 1, 2014 Vamos lá, para inibir o acesso dos usuários ao banco de dados do sistema, os passos que sigo são: 1º) Uso "Cliente de Terminal Server" com abertura do sistema no login e logoff ao sair do sistema. Também, desabilito o acesso ao "Gerenciador de Tarefas" no servidor de TS. 2º) Troquei o cGetDir32() pelo comando: cGetDir("Selecione a UNIDADE e a PASTA dos dados.",,,"Selecione o local e pressione o botão <OK>", 0x00000008) // OFN_NOCHANGEDIR 3º) Troquei o PrinterSetup() pelo comando: GetPrintDC() 4º) Troquei o cGetFile() pela função: oaGetFile() abaixo: ********************************************************************************************* Function oaGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave ) ********************************************************************************************* Local aFiles := aGetFiles( cMask, cTitle, nDefaultMask, cInitDir ) Local i,cFile:= "" if Len(aFiles)>0 // Retorna apenas um arquivo selecionado if AT(" ",aFiles[1])>0 cFile := Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) aFiles[1] := Alltrim(Subst( aFiles[1], AT(" ",aFiles[1]), Len(aFiles[1]))) cFile := cFile + Alltrim(Left(aFiles[1], AT(" ",aFiles[1]))) else cFile := aFiles[1] endif endif Return( cFile ) ********************************************************************************************* Function aGetFiles( cMask, cTitle, nDefaultMask, cInitDir, lSave ) ********************************************************************************************* #define OFN_PATHMUSTEXIST 0x00000800 #define OFN_NOCHANGEDIR 0x00000008 #define OFN_ALLOWMULTISELECT 0x00000200 // permite a seleção de vários arquivos em tela simplificada (não abre a tela de seleção do Windows) #define OFN_LONGNAMES 0x00200000 // force long names for 3.x modules #define OFN_HIDEREADONLY 0x00000004 // Oculta a caixa de seleção Somente leitura. #define OFN_NONETWORKBUTTON 0x20000 // Desabilita o botão [ REDE ] da Dlg Local cSelect, nAt, aFiles := {} Local nFlags := nOr( OFN_PATHMUSTEXIST, OFN_NOCHANGEDIR, OFN_ALLOWMULTISELECT, OFN_LONGNAMES, OFN_HIDEREADONLY, OFN_NONETWORKBUTTON ) Default cMask := "Todos (*.*)|*.*|" Default cTitle := "Selecione o arquivo" Default nDefaultMask := 1 Default lSave := .F. // Sintaxe := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave, lLongNames, nFlags ) cSelect := cGetFile( cMask, cTitle, nDefaultMask, cInitDir, lSave, .T., nFlags ) cSelect := Left( cSelect, At( Chr( 0 ) + Chr( 0 ), cSelect ) - 1 ) if ! Empty( cSelect ) cSelect := StrTran( cSelect, Chr( 0 ), "," ) aFiles := hb_aTokens( cSelect, "," ) if Len( aFiles ) > 1 for nAt := 2 TO Len( aFiles ) aFiles[ nAt ] := aFiles[ 1 ] + "\" + aFiles[ nAt ] next nAt ADel( aFiles, 1 ) ASize( aFiles, Len( aFiles ) - 1 ) endif endif Return( aFiles ) rafaoasys 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.