|
|
|
|
|
Dicas
|
|
Visual Basic (Windows)
|
|
|
Título da Dica: Utilizando API's para reaproveitar a interface do Windows
|
|
|
|
Postada em 3/9/2003 por Ð@®l@n
O Windows disponibiliza uma API chamada SHFILEOPERATION, localizada na shell32.dll que pode ser utilizada para reaproveitar a interface gráfica do windows.
Por exemplo : Quando movemos um arquivo para a lixeira pelo explorer além de aparecer a mensagem de confirmação aparece uma janela com a folhinha voando em direção a lixeira. Fazer isso em nossa aplicação é trabalhoso, por isso o sistema operacional nos fornece tudo pronto através da SHFILEOPERATION, basta chama-la.
Para chamarmos esta API precisamos da declaração de um tipo de dados, que será transmitido a ela durante a chamada. Veja como fica a declaração :
Private Type SHFILEOPSTRUCT hWnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAborted As Boolean hNameMaps As Long sProgress As String End Type
Private Const FO_DELETE = &H3 Private Const FOF_ALLOWUNDO = &H40
Private Declare Function SHFileOperation Lib "shell32.dll" Alias _ "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Neste exemplo estaremos deletando um arquivo qualquer (jogando-o para a lixeira). Dai a definição das constantes FO_DELETE, que determina a operação a ser realizada e FOF_ALLOWUNDO, que determina um parâmetro da operação, ou seja, que o arquivo seja jogado para a lixeira e não deletado definitivamente.
Precisaremos de uma commondialog para perguntar ao usuário o arquivo que ele deseja deletar. Vamos chama-la de cdbox.
Veja como fica o código, inserido no load do form por comodidade para facilitar seu teste :
Private Sub Form_Load()
'Define uma variável como sendo do tipo que criamos Dim SHFileOp As SHFILEOPSTRUCT
'Configura a commondialog para obter o nome do arquivo a deletar e faz o show cdBOX.DialogTitle = "Select a file to delete ..."
'Set the dialog's filter cdBOX.Filter = "All Files (*.*)|*.*"
'Show the 'Open File' dialog cdBOX.ShowOpen
'Inicia a configuração da variável With SHFileOp
'Atribui a wFunc a identificação da tarefa a ser realizada : Deletar o arquivo .wFunc = FO_DELETE
'Atribui a pFrom o nome do arquivo .pFrom = cdBOX.FileName
'atribui a fFlags parâmetros adicionais, no caso a determinação de que seja 'movido para a lixeira .fFlags = FOF_ALLOWUNDO End With
'Executa a deleção chamando a função e transmitindo nossa variável SHFileOperation SHFileOp
MsgBox "O arquivo '" + cdBOX.FileName + "' foi movido para a lixeira !", vbInformation + vbOKOnly, App.Title
End Sub
Obs: A nova versão do guia de API's disponibilizado em nossa área de download possui inclusive um exemplo em .NET desta API
|
|
|
|
|