Olá Pessoal,
Em xHarbour, na lib HBCT:
A Função IsDisk() retorna se o Drive existe.
A Função DriveType() retorna o tipo do Drive
A Função DiskReady() retorna se o Drive está pronto
O que não estou achando é qual função substitui a DiskReady() no Harbour. Porque ela foi excluída da HBCT do Harbour?
Função DiskReady() em Harbour
Moderador: Moderadores
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Função DiskReady() em Harbour
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Função DiskReady() em Harbour
Nao tem como pegar os fontes em .c dessa função? ae vc poderia colocar em qq prg seu
Janio
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
Kapiaba
- Colaborador

- Mensagens: 1908
- Registrado em: 07 Dez 2012 16:14
- Localização: São Paulo
- Contato:
Função DiskReady() em Harbour
Veja se ajuda:
Código: Selecionar todos
/* *************************** */
#pragma BEGINDUMP
#include "hbapi.h"
#include "windows.h"
HB_FUNC( SETERRORMODE )
{
hb_retni( SetErrorMode( hb_parni( 1 ) ) ) ;
}
HB_FUNC( GETDISKFREESPACE ) // cRootPathName, @nSectorsByCluster, @nBytesPerSector,
// @nNumberOfFreeClusters, @nTotalNumberOfClusters --> lResult
{
LPSTR lpRootPathName = hb_parc( 1 );
DWORD SectorsPerCluster;
DWORD BytesPerSector;
DWORD NumberOfFreeClusters;
DWORD TotalNumberOfClusters;
hb_retl( GetDiskFreeSpace( lpRootPathName, &SectorsPerCluster,
&BytesPerSector, &NumberOfFreeClusters,
&TotalNumberOfClusters ) );
hb_stornl( SectorsPerCluster, 2 );
hb_stornl( BytesPerSector, 3 );
hb_stornl( NumberOfFreeClusters, 4 );
hb_stornl( TotalNumberOfClusters, 5 );
}
#pragma ENDDUMP
/* *************************** */
/* *************************** */
FUNCTION lExistUSB( cDisk )
/* Se da el caso de que con un PenDrive (al menos el que yo he usado) las
funciones IsDisk() y lIsDir() dan .F..
Cuando se trata de una tarjeta de memoria (por ejemplo XD) insertada en
un lector de tarjetas externo conectado a un puerto USB, la IsDisk() sigue
dando .F. y la lIsDir() da .T..
Com lo que se pretende es poder saber que unidades USB son susceptibles de
usarse independientemente de PenDrive o tarjetas de memoria, se opta por
la función GetDiskFreeSpace() que da .T. tanto para PenDrive como para
tarjetas de memoria.
22/08/2010
*/
Local lExist := .F.
Local nSetErrorMode := 0
nSetErrorMode := SETERRORMODE( 1 )
lExist := GetDiskFreeSpace( Left( cDisk, 1) + ":\" )
SETERRORMODE( nSetErrorMode )
Return lExist
/* *************************** */
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Função DiskReady() em Harbour
Olá Jânio,
Minha função de backup verifica todas as unidades disponíveis e apresenta um menu para o usuário escolher onde será efetuado o Backup, e avisa se a unidade é Fixa, Removível ou da Rede (desde que mapeada).
Acontece que quando verifica a unidade de DVD, emite a mensagem do Windows solicitando para o usuário inserir um disco, e precisa clicar em cancelar. Isto acontece também com a unidade do Certificado. Eu queria a função DiskReady(), porque com ela tenho como neutralizar essa mensagem:
Mensagem Editada em: 06/11/2014 - 07h59m.
Para que essa função funcione corretamente em Harbour, a linha 4 que estava assim:Foi substituída por:
Olá Kapiaba,
Obrigado pela atenção, mas os códigos que você postou não têm esse efeito. Obrigado.
Nota: O pulo do gato esta na DiskChange().
Tag: DiskReady
[Problema Resolvido]
Jânio, desculpe ai meu lapso... rs... Deu certo. Valeu a dica!janio escreveu:Nao tem como pegar os fontes em .c dessa função? ae vc poderia colocar em qq prg seu
Minha função de backup verifica todas as unidades disponíveis e apresenta um menu para o usuário escolher onde será efetuado o Backup, e avisa se a unidade é Fixa, Removível ou da Rede (desde que mapeada).
Acontece que quando verifica a unidade de DVD, emite a mensagem do Windows solicitando para o usuário inserir um disco, e precisa clicar em cancelar. Isto acontece também com a unidade do Certificado. Eu queria a função DiskReady(), porque com ela tenho como neutralizar essa mensagem:
Mas para minha surpresa, essa função é em puro código xBase. Vejam:lMode:
True = Windows/DOS mode. If a disk is not ready, open a dialog.
False = Bios mode. If a disk is not ready don´t open a dialog.
Código: Selecionar todos
*-----------------------------------
FUNCTION DiskReady( cDrive , lMode )
*-----------------------------------
LOCAL lReturn, cCurrent := TrueName(".")
//default( @lMode , .F. )
lMode := If( Empty( lMode ), .F., lMode )
// lMode -> True = Windows/DOS mode. If a disk is not ready, open a dialog.
// False = Bios mode. If a disk is not ready don´t open a dialog.
IF empty(cDrive) .OR. !isalpha(cDrive)
cDrive := cCurrent
ENDIF
IF valtype(lMode) != "L"
lMode := .F.
ENDIF
IF !lMode
// Windows/DOS access mode. xHarbour RTL. Source is in "dirdrive.c".
lReturn := DiskChange( cDrive )
IF lReturn
DiskChange( cCurrent )
ENDIF
ELSE
// Bios access mode. xHarbour RTL. Source is in "dirdrive.c".
lReturn := IsDisk( cDrive )
ENDIF
RETURN ( lReturn )Para que essa função funcione corretamente em Harbour, a linha 4 que estava assim:
Código: Selecionar todos
LOCAL lReturn, cCurrent := DiskName()Código: Selecionar todos
LOCAL lReturn, cCurrent := TrueName(".")Obrigado pela atenção, mas os códigos que você postou não têm esse efeito. Obrigado.
Nota: O pulo do gato esta na DiskChange().
Tag: DiskReady
[Problema Resolvido]
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)