|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Obtendo dados de uma unidade de disco USB |
Iniciado por Boller, 09,may. 2023 00:02 - 6 respuestas |
| |
| | | |
|
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 00:02 |
Crie uma procedure que retorne os dados de um USB em um array
Para retornar as informações de um dispositivo USB em um array em vez de uma tabela, podemos criar uma procedure que recebe o caminho da unidade USB como parâmetro e retorna um array com as informações solicitadas.
Segue abaixo um exemplo de como implementar isso em WLanguage:
//############################## // Obtendo informações de um dispositivo USB em um array //##############################
// Summary: <specify the procedure action> // Syntax: //[ <Result> = ] ObterInformacoesUSB (<usbPath> is string) // // Parameters: // usbPath (ANSI string): // Example: // <Specify a usage example> // // info: <specify the role of info> PROCEDURE ObterInformacoesUSB(usbPath is string)
// Obtém as informações sobre o dispositivo USB info_usb is string
info_usb += "usbPath: "+ usbPath +";"+CR info_usb += "fdVolumeName: " + fDriveInfo(usbPath,fdVolumeName) +";"+CR info_usb += "fdSerialNumber: " + fDriveInfo(usbPath,fdSerialNumber) +";"+CR info_usb += "fdDriveType: " + fDriveInfo(usbPath,fdDriveType) +";"+CR info_usb += "fdTotalSpace: " + fDriveInfo(usbPath,fdTotalSpace) +";"+CR info_usb += "fdFreeSpace: " + fDriveInfo(usbPath,fdFreeSpace) +";"+CR info_usb += "fdFileNameSize: " + fDriveInfo(usbPath,fdFileNameSize) +";"+CR info_usb += "fdSectorSize: " + fDriveInfo(usbPath,fdSectorSize) +";"+CR info_usb += "fdNbSectorPerCluster: "+ fDriveInfo(usbPath,fdNbSectorPerCluster) +";"+CR info_usb += "fdNbCluster: " + fDriveInfo(usbPath,fdNbCluster) +";"+CR
Info(info_usb)
RESULT info_usb
Nessa procedure, recebemos o caminho do dispositivo USB como um parâmetro (usbPath) e retornamos um array de strings (info) contendo as informações solicitadas. Cada elemento do array contém uma informação diferente, seguindo a ordem da tabela do exemplo anterior.
Para utilizar essa procedure, basta chamá-la com o caminho da unidade USB desejada e armazenar o resultado em uma variável.
No exemplo acima, chamamos a procedure ObterInformacoesUSB com o caminho da unidade USB "F:" e armazenamos as informações retornadas em uma variável chamada infos. Em seguida, exibimos essas informações na saída Trace.
Caso tenha alguma dúvida, por favor, pergunte.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Mensaje modificado, 09,mayo 2023 - 00:23 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 00:03 |
// Summary: <specify the procedure action> // Syntax: //[ <Result> = ] ObterInformacoesUSB (<usbPath> is string) // // Parameters: // usbPath (ANSI string): // Example: // <Specify a usage example> // // info: <specify the role of info> PROCEDURE ObterInformacoesUSB(usbPath is string)
// Obtém as informações sobre o dispositivo USB info_usb is string
info_usb += "usbPath: "+ usbPath +";"+CR info_usb += "fdVolumeName: " + fDriveInfo(usbPath,fdVolumeName) +";"+CR info_usb += "fdSerialNumber: " + fDriveInfo(usbPath,fdSerialNumber) +";"+CR info_usb += "fdDriveType: " + fDriveInfo(usbPath,fdDriveType) +";"+CR info_usb += "fdTotalSpace: " + fDriveInfo(usbPath,fdTotalSpace) +";"+CR info_usb += "fdFreeSpace: " + fDriveInfo(usbPath,fdFreeSpace) +";"+CR info_usb += "fdFileNameSize: " + fDriveInfo(usbPath,fdFileNameSize) +";"+CR info_usb += "fdSectorSize: " + fDriveInfo(usbPath,fdSectorSize) +";"+CR info_usb += "fdNbSectorPerCluster: "+ fDriveInfo(usbPath,fdNbSectorPerCluster) +";"+CR info_usb += "fdNbCluster: " + fDriveInfo(usbPath,fdNbCluster) +";"+CR
Info(info_usb)
RESULT info_usb
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Mensaje modificado, 09,mayo 2023 - 00:22 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 17:56 |
Como alterar via c# o nome do volume do pendrive
ChatGPT Para alterar o nome do volume de um pen drive (ou qualquer outra unidade de armazenamento externa) usando C#, você pode usar a classe ManagementObject do namespace System.Management. Primeiro, certifique-se de adicionar a referência System.Management.dll ao seu projeto e importar o namespace:
csharp Copy code using System.Management; Em seguida, você pode usar o código abaixo para alterar o nome do volume do pen drive:
csharp Copy code using System; using System.Management;
namespace ChangeVolumeLabel { class Program { static void Main(string[] args) { try { Console.WriteLine("Digite a letra da unidade do pen drive (exemplo: E):"); string driveLetter = Console.ReadLine().ToUpper();
Console.WriteLine("Digite o novo nome do volume:"); string newVolumeLabel = Console.ReadLine();
ChangeVolumeLabel(driveLetter, newVolumeLabel); Console.WriteLine("O nome do volume foi alterado com sucesso!"); } catch (Exception ex) { Console.WriteLine("Erro: " + ex.Message); }
Console.ReadKey(); }
private static void ChangeVolumeLabel(string driveLetter, string newVolumeLabel) { if (string.IsNullOrEmpty(driveLetter) || driveLetter.Length != 1) throw new ArgumentException("A letra da unidade é inválida.");
if (string.IsNullOrEmpty(newVolumeLabel)) throw new ArgumentException("O nome do volume não pode ser vazio.");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher($"SELECT * FROM Win32_Volume WHERE DriveLetter = '{driveLetter}:'")) { using (ManagementObjectCollection moc = searcher.Get()) { if (moc.Count == 0) throw new ArgumentException("A unidade especificada não foi encontrada.");
foreach (ManagementObject mo in moc) { mo.InvokeMethod("SetLabel", new object[] { newVolumeLabel }); break; } } } } } } Este programa pede ao usuário a letra da unidade do pen drive e o novo nome do volume, e então altera o nome do volume usando a função ChangeVolumeLabel. Certifique-se de executar o aplicativo como administrador para garantir que ele tenha as permissões necessárias para fazer a alteração.
User E se for fazer com WLanguage
ChatGPT WLanguage é a linguagem de programação usada na plataforma de desenvolvimento WINDEV, WEBDEV e WINDEV Mobile da PC SOFT. Para alterar o nome do volume de um pen drive usando WLanguage, você pode utilizar a função WLanguage.SetVolumeLabel (função fictícia, não existe na linguagem WLanguage).
Infelizmente, não há uma função nativa do WLanguage para alterar o nome do volume de uma unidade diretamente. No entanto, você pode criar uma função personalizada usando a chamada de API do Windows SetVolumeLabel.
Primeiro, declare a função SetVolumeLabel da API do Windows no seu código WLanguage:
pascal Copy code IMPORT "kernel32" SetVolumeLabelA PROCEDURE(lpRootPathName, lpVolumeName: AnsiString) BOOL Em seguida, crie uma função WLanguage chamada ChangeVolumeLabel que recebe a letra da unidade e o novo nome do volume como parâmetros e usa a função SetVolumeLabel importada para realizar a alteração:
pascal Copy code PROCEDURE ChangeVolumeLabel(driveLetter, newVolumeLabel: string) Local sRootPath: string BEGIN IF Left(driveLetter, 1) <> "\" THEN sRootPath = driveLetter + ":\" ELSE sRootPath = driveLetter END IF SetVolumeLabelA(sRootPath, newVolumeLabel) = False THEN Error("Erro ao alterar o nome do volume.") END END Agora você pode usar a função ChangeVolumeLabel em seu aplicativo WLanguage para alterar o nome do volume de um pen drive:
pascal Copy code PROCEDURE Main() Local sDriveLetter, sNewVolumeLabel: string BEGIN Info("Digite a letra da unidade do pen drive (exemplo: E):") sDriveLetter = StringEdit("", 1) Info("Digite o novo nome do volume:") sNewVolumeLabel = StringEdit("", 32)
ChangeVolumeLabel(sDriveLetter, sNewVolumeLabel) Info("O nome do volume foi alterado com sucesso!") END Lembre-se de que este exemplo é para fins ilustrativos e pode não funcionar corretamente sem ajustes específicos no contexto de seu projeto WLanguage. Além disso, é importante destacar que a linguagem WLanguage está sujeita às limitações e particularidades da plataforma PC SOFT.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 17:59 |
Qual a api do Windows que permite alterar o nome do volume de uma unidade de disco
ChatGPT A API do Windows que permite alterar o nome do volume de uma unidade de disco é chamada SetVolumeLabel. Essa função está disponível nas versões ANSI e Unicode, chamadas SetVolumeLabelA e SetVolumeLabelW, respectivamente. Ambas estão localizadas na biblioteca kernel32.dll.
Aqui está a declaração da função SetVolumeLabel em C/C++:
c Copy code BOOL WINAPI SetVolumeLabelA( _In_ LPCSTR lpRootPathName, _In_ LPCSTR lpVolumeName );
BOOL WINAPI SetVolumeLabelW( _In_ LPCWSTR lpRootPathName, _In_ LPCWSTR lpVolumeName ); Para usar essa função em C/C++, inclua o cabeçalho <Windows.h> e chame a função SetVolumeLabel com o caminho da raiz da unidade e o novo nome do volume:
c Copy code #include <Windows.h> #include <stdio.h>
int main() { const char* driveLetter = "E:\\"; const char* newVolumeLabel = "MyNewVolume";
if (SetVolumeLabelA(driveLetter, newVolumeLabel)) { printf("O nome do volume foi alterado com sucesso!\n"); } else { printf("Erro ao alterar o nome do volume. Código do erro: %lu\n", GetLastError()); }
return 0; } Lembre-se de que você precisa executar o aplicativo como administrador para garantir que ele tenha as permissões necessárias para alterar o nome do volume.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 18:02 |
Qual api do windows lista as unidades de disco de um computador com Windows
ChatGPT A API do Windows para listar unidades de disco em um computador com Windows é chamada GetLogicalDriveStrings. Essa função retorna uma lista de strings que representam as unidades de disco no sistema. Ela está localizada na biblioteca kernel32.dll.
Aqui está a declaração da função GetLogicalDriveStrings em C/C++:
c Copy code DWORD WINAPI GetLogicalDriveStringsA( _In_ DWORD nBufferLength, _Out_ LPSTR lpBuffer );
DWORD WINAPI GetLogicalDriveStringsW( _In_ DWORD nBufferLength, _Out_ LPWSTR lpBuffer ); Para usar essa função em C/C++, inclua o cabeçalho <Windows.h> e chame a função GetLogicalDriveStrings com um buffer apropriado para armazenar a lista de unidades:
c Copy code #include <Windows.h> #include <stdio.h>
int main() { const DWORD bufferSize = 256; char buffer[bufferSize]; DWORD result = GetLogicalDriveStringsA(bufferSize, buffer);
if (result > 0 && result <= bufferSize) { printf("Unidades de disco:\n"); char* drive = buffer;
while (*drive) { printf("%s\n", drive); drive += strlen(drive) + 1; } } else { printf("Erro ao listar unidades de disco. Código do erro: %lu\n", GetLastError()); }
return 0; } Esse exemplo lista as unidades de disco no sistema e imprime suas letras na tela. Observe que a função GetLogicalDriveStrings retorna uma lista de strings terminadas por NULL e é seguida por outro caractere NULL para indicar o final da lista.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 09,mayo 2023 - 22:37 |
Para obter o nome de um USB ou hd via c#
ChatGPT Para obter o nome ou rótulo de um dispositivo USB ou HD no Windows usando C#, você pode usar a classe DriveInfo disponível no namespace System.IO. A classe DriveInfo fornece informações sobre as unidades de disco em seu sistema.
Aqui está um exemplo de como listar os dispositivos USB e HD conectados e obter seus nomes (rótulos) usando C#:
csharp Copy code using System; using System.IO;
class Program { static void Main() { // Obtém todas as unidades disponíveis no sistema DriveInfo[] drives = DriveInfo.GetDrives();
// Percorre cada unidade foreach (DriveInfo drive in drives) { // Verifica se a unidade está pronta para ser usada (montada e acessível) if (drive.IsReady) { Console.WriteLine("Unidade: {0}", drive.Name); Console.WriteLine("Rótulo da unidade: {0}", drive.VolumeLabel); } } } } Este código irá listar todas as unidades disponíveis no sistema, incluindo unidades USB e HD. Para cada unidade, ele exibirá a letra da unidade (como "C:" ou "D:") e o rótulo (nome) da unidade.
Lembre-se de que este exemplo irá listar todas as unidades, incluindo unidades ópticas (CD/DVD) e unidades de rede, se houver. Se você deseja filtrar apenas por dispositivos USB e HD, pode verificar o tipo de unidade usando a propriedade DriveType da classe DriveInfo.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4.521 mensajes |
|
Publicado el 10,mayo 2023 - 15:02 |
CONSEGUI MUDAR O NOME DA UNIDADE DE DISCO

// Summary: <specify the procedure action> // Syntax: //[ <Result> = ] AlterarNomeVolumeDisco (<UnidadeDisco> is string, <NomeVolumeDisco> is string, <debug> is boolean) // // Parameters: // UnidadeDisco (ANSI string): // NomeVolumeDisco (ANSI string): <specify the role of NomeVolumeDisco> // debug (boolean): <specify the role of debug> // Example: // <Specify a usage example> // PROCEDURE AlterarNomeVolumeDisco(UnidadeDisco is string, NomeVolumeDisco is string, debug is boolean)
IF Length(NomeVolumeDisco) > 11 THEN IF debug = True Info("Nome do Volume acima de 11 caracteres") END RETURN False END
IF Length(UnidadeDisco) > 2 OR Middle(UnidadeDisco,2,1) <> ":" THEN IF debug = True Info("Erro ao informar a Unidade de Disco fora do padrão") END RETURN False ELSE FunctionReturn is boolean = False // C type:BOOL UnidadeDisco = Upper(NoSpace(UnidadeDisco)) NomeVolumeDisco = Upper(NoSpace(NomeVolumeDisco)) FunctionReturn = API("KERNEL32","SetVolumeLabelA",UnidadeDisco,NomeVolumeDisco) IF debug = True Info("Unidade de Disco "+UnidadeDisco+", alterado o nome para: "+NomeVolumeDisco) END RETURN True END
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|