Abrir uma pasta como janela?
Moderador: Moderadores
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Abrir uma pasta como janela?
Caros amigos do foro
Estou trabalhando com XHb em modo consola, necessito abrir uma pasta, desde o aplicativo, mais não se como proceder. Por favor, me ajudem.
Gostaria de poder mostrar a pasta aberta, como uma janela mais.
Aguardo e agradeço sua colaboração.
Deus abençoe cada um de vocês e seus amados.
[] Adalberto
Estou trabalhando com XHb em modo consola, necessito abrir uma pasta, desde o aplicativo, mais não se como proceder. Por favor, me ajudem.
Gostaria de poder mostrar a pasta aberta, como uma janela mais.
Aguardo e agradeço sua colaboração.
Deus abençoe cada um de vocês e seus amados.
[] Adalberto
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Abrir uma pasta como janela?
Hola Adalberto, puedes explicar mejor lo que estás precisando ?
Quieres abrir el Windows Explorer en determinada carpeta (directorio) desde tu aplicacion console ?
O quieres exibir el contenido de una carpeta con los archivos em modo console ?
Quieres abrir el Windows Explorer en determinada carpeta (directorio) desde tu aplicacion console ?
O quieres exibir el contenido de una carpeta con los archivos em modo console ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Abrir uma pasta como janela?
Hola Pablo César,
gracias por tu interés en colaborarme.
Lo que necesito es poder abrir una carpeta en Windows (explorer), desde la aplicacion, (la primera opcion que citas). permiteme que diga un ejemplo:
Si tengo una carpeta en el escritorio y le doy doble click, la carpeta se abre y permanece como una ventana, así quiero que ocurra desde la plicacion, con cualquier carpeta.
Espero tu ayuda, mietras tanto aprovecho para hacerte saber que deseo para vos y tus amados las mas ricas bendiciones del cielo.
[] Adalberto
gracias por tu interés en colaborarme.
Lo que necesito es poder abrir una carpeta en Windows (explorer), desde la aplicacion, (la primera opcion que citas). permiteme que diga un ejemplo:
Si tengo una carpeta en el escritorio y le doy doble click, la carpeta se abre y permanece como una ventana, así quiero que ocurra desde la plicacion, con cualquier carpeta.
Espero tu ayuda, mietras tanto aprovecho para hacerte saber que deseo para vos y tus amados las mas ricas bendiciones del cielo.
[] Adalberto
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Abrir uma pasta como janela?
Adalberto,
Solução por Enrico Maria Giordano
Saludos, Euclides
Solução por Enrico Maria Giordano
Código: Selecionar todos
#include "Hbdll.ch"
FUNCTION MAIN()
SHELLEXECUTE( 0, 0, "C:\xHarbour", 0, 0, 1 )
RETURN NIL
DLL STATIC FUNCTION SHELLEXECUTE( hWnd AS LONG, cOperation AS LPSTR, cFile ;
AS LPSTR, cParameters AS LPSTR, cDirectory AS LPSTR, nShowCmd AS LONG ) AS LONG;
PASCAL FROM "ShellExecuteA" LIB "shell32.dll"
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Abrir uma pasta como janela?
Eu não sei se irá compilar ou até mesmo ser executado:
DLL STATIC FUNCTION SHELLEXECUTE( hWnd AS LONG, cOperation AS LPSTR, cFile ;
AS LPSTR, cParameters AS LPSTR, cDirectory AS LPSTR, nShowCmd AS LONG ) AS LONG;
PASCAL FROM "ShellExecuteA" LIB "shell32.dll"
Por conter PASCAL. Mas sendo em xHarbour, ai não posso afirmar nada, pois eu não uso.
No HMG eu compilo e executo apenas:
SHELLEXECUTE( 0, 0, "C:\Windows", 0, 0, 1 ) // sem DLL
Tem outras formas também. Tente e diga-nos se deu certo.
Tem este código em C que também pode ajudar:
DLL STATIC FUNCTION SHELLEXECUTE( hWnd AS LONG, cOperation AS LPSTR, cFile ;
AS LPSTR, cParameters AS LPSTR, cDirectory AS LPSTR, nShowCmd AS LONG ) AS LONG;
PASCAL FROM "ShellExecuteA" LIB "shell32.dll"
Por conter PASCAL. Mas sendo em xHarbour, ai não posso afirmar nada, pois eu não uso.
No HMG eu compilo e executo apenas:
SHELLEXECUTE( 0, 0, "C:\Windows", 0, 0, 1 ) // sem DLL
Tem outras formas também. Tente e diga-nos se deu certo.
Tem este código em C que também pode ajudar:
Código: Selecionar todos
#define SAVE_NAME hb_CurDrive() + ":\" + CurDir() + "\MyPicture.jpg"
Function Main()
SHELLEXECUTE( 0, 0, "C:\Windows", 0, 0, 1 )
ShellExecute(0,"open","explorer.exe","/select,"+SAVE_NAME,NIL,1)
Return Nil
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC( SHELLEXECUTE )
{
hb_retnl( (LONG) ShellExecute( (HWND) hb_parnl(1),HB_ISNIL(2) ? NULL : (LPCSTR) hb_parc(2),(LPCSTR) hb_parc(3),HB_ISNIL(4) ? NULL : (LPCSTR) hb_parc(4),HB_ISNIL(5) ? NULL : (LPCSTR) hb_parc(5),hb_parni(6) ) ) ;
}
#pragma ENDDUMPUm clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Abrir uma pasta como janela?
Pablo,
Tentou compilar... executar?
Já olhou o HBDLL.CH ?
um xHarbour-abraço
Euclides
Tentou compilar... executar?
Já olhou o HBDLL.CH ?
um xHarbour-abraço
Euclides
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Abrir uma pasta como janela?
Sim, claro. Más como não trabalho com xHarbour, por isso duvidei. Mas então se funciona, quê bom ! Pois parece que o colega precisava uma solução para xHarbour.Euclides escreveu:Tentou compilar... executar?
Já olhou o HBDLL.CH ?
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Abrir uma pasta como janela?
Apreciados amigos Pablo César, y Euclides. buenos dias.
Que alegría contar con la ayuda de ustedes, tanta buena voluntad, sólo Dios puede pagar, que así sea.
He probado con xHarbour las dos opciones, sin éxito, en una de ellas me falta el archivo de cabecera "Hbdll.ch", y probando el código en C me dice que no encuenta la función ISNIL()
Les ruego y agradezco que me sigan colaborando.
¡ Disfruten la alegría de vivir !
[] Adalberto
Que alegría contar con la ayuda de ustedes, tanta buena voluntad, sólo Dios puede pagar, que así sea.
He probado con xHarbour las dos opciones, sin éxito, en una de ellas me falta el archivo de cabecera "Hbdll.ch", y probando el código en C me dice que no encuenta la función ISNIL()
Les ruego y agradezco que me sigan colaborando.
¡ Disfruten la alegría de vivir !
[] Adalberto
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Abrir uma pasta como janela?
Adalberto,
Eu utilizo Harbour com Fivewin, mas eu sempre testo os meus sistemas compilando também com xHarbour.
(não podes imaginar quantas diferenças existem...)
Utilizo para testes o xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6741)
Vou anexar o HBDLL.CH para testar.
Com outras versões os resultados podem ser diferentes.
Saludos, Euclides
Eu utilizo Harbour com Fivewin, mas eu sempre testo os meus sistemas compilando também com xHarbour.
(não podes imaginar quantas diferenças existem...)
Utilizo para testes o xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 6741)
Vou anexar o HBDLL.CH para testar.
Com outras versões os resultados podem ser diferentes.
Código: Selecionar todos
#ifndef __DLL_CH
#define __DLL_CH
#define DC_MICROSOFT 0x0000 // Default
#define DC_BORLAND 0x0001 // Borland compat
#define DC_CALL_CDECL 0x0010 // __cdecl
#define DC_CALL_STD 0x0020 // __stdcall
#define DC_RETVAL_MATH4 0x0100 // Return value in ST
#define DC_RETVAL_MATH8 0x0200 // Return value in ST
// Avoid xHarbour code when included by dllcall.c
#ifdef __PLATFORM__Windows
#include "cstruct.ch"
#include "wintypes.ch"
// Native Syntax
#xcommand IMPORT [<Qualifier: STATIC>] [<CallConvention: 0x0000, 0x0001, 0x0010, 0x0020, 0x0100, 0x0200> ] ;
<FuncName>( [<ArgName> [, <ArgNameN>] ] ) FROM [<!DllFuncName!> OF ] <(DllName)> => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.CallConvention.>, <CallConvention>, DC_CALL_STD ), IIF( <.DllFuncName.>, #<DllFuncName>, #<FuncName> ) );;
ENDIF;;
;;
IF <.ArgName.>;;
RETURN DllExecuteCall( cTemplate, <ArgName> [, <ArgNameN>] );;
ENDIF;;
RETURN DllExecuteCall( cTemplate )
#xcommand IMPORT [<Qualifier: STATIC>] [<CallConvention: 0x0000, 0x0001, 0x0010, 0x0020, 0x0100, 0x0200> ] ;
<FuncName>( [<ArgName> [, <ArgNameN>] ] ) FROM <(DllName)> [EXPORTED AS <!DllFuncName!>] => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.CallConvention.>, <CallConvention>, DC_CALL_STD ), IIF( <.DllFuncName.>, #<DllFuncName>, #<FuncName> ) );;
ENDIF;;
;;
IF <.ArgName.>;;
RETURN DllExecuteCall( cTemplate, <ArgName> [, <ArgNameN>] );;
ENDIF;;
RETURN DllExecuteCall( cTemplate )
#xcommand IMPORT [<Qualifier: STATIC>] [<CallConvention: 0x0000, 0x0001, 0x0010, 0x0020, 0x0100, 0x0200> ] ;
<Type> <FuncName>( [0] [<ArgType> <ArgName> [, <ArgTypeN> <ArgNameN>] ] ) FROM <(DllName)> [EXPORTED AS <!DllFuncName!>] => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.CallConvention.>, <CallConvention>, DC_CALL_STD ), IIF( <.DllFuncName.>, #<DllFuncName>, #<FuncName> ) );;
ENDIF;;
;;
IF <.ArgName.>;;
RETURN DllExecuteCall( cTemplate, <ArgName> [, <ArgNameN>] );;
ENDIF;;
RETURN DllExecuteCall( cTemplate )
#xcommand IMPORT [<Qualifier: STATIC>] [<CallConvention: 0x0000, 0x0001, 0x0010, 0x0020, 0x0100, 0x0200> ] ;
<Type> <FuncName>( [0] [<ArgType> <ArgName> [, <ArgTypeN> <ArgNameN>] ] ) FROM [<!DllFuncName!> OF ] <(DllName)> => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.CallConvention.>, <CallConvention>, DC_CALL_STD ), IIF( <.DllFuncName.>, #<DllFuncName>, #<FuncName> ) );;
ENDIF;;
;;
IF <.ArgName.>;;
RETURN DllExecuteCall( cTemplate, <ArgName> [, <ArgNameN>] );;
ENDIF;;
RETURN DllExecuteCall( cTemplate )
// FoxPro Syntax
#xcommand DECLARE <!Type!> <!FuncName!> IN <(DllName)> [AS <(DllFuncName)>] [<ArgType> [@] [<ArgName>] [, <ArgTypeN> [@] [<ArgNameN>]]] => ;
UTILITY FUNCTION <FuncName>( ... );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, DC_CALL_STD, IIF( <.DllFuncName.>, <(DllFuncName)>, #<FuncName> ) );;
ENDIF;;
;;
SWITCH PCount();;
CASE 0;;
RETURN DllExecuteCall( cTemplate );;
CASE 1;;
RETURN DllExecuteCall( cTemplate, PValue(1) );;
CASE 2;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2) );;
CASE 3;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3) );;
CASE 4;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4) );;
CASE 5;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4), PValue(5) );;
CASE 6;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4), PValue(5), PValue(6) );;
CASE 7;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4), PValue(5), PValue(6), PValue(7) );;
CASE 8;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4), PValue(5), PValue(6), PValue(7), PValue(8) );;
CASE 9;;
RETURN DllExecuteCall( cTemplate, PValue(1), PValue(2), PValue(3), PValue(4), PValue(5), PValue(6), PValue(7), PValue(8), PValue(9) );;
END;;
;;
RETURN NIL
// FWH
#xcommand DLL [<Qualifier: STATIC>] FUNCTION <FuncName>( [ <ArgName> AS <ArgType> ] [, <ArgNameN> AS <ArgTypeN> ] ) AS <Type> [<Pascal: PASCAL>] [ FROM <DllFuncName> ] LIB <(DllName)> => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.Pascal.>, DC_CALL_STD, DC_CALL_CDECL ), IIF( <.DllFuncName.>, <(DllFuncName)>, #<FuncName> ) );;
ENDIF;;
;;
RETURN DllExecuteCall( cTemplate [, <ArgName>] [, <ArgNameN>] )
#xcommand DLL32 [<Qualifier: STATIC>] FUNCTION <FuncName>( [ <ArgName> AS <ArgType> ] [, <ArgNameN> AS <ArgTypeN> ] ) AS <Type> [<Pascal: PASCAL>] [ FROM <DllFuncName> ] LIB <(DllName)> => ;
UTILITY [<Qualifier>] FUNCTION <FuncName>( <ArgName> [, <ArgNameN>] );;
STATIC cTemplate;;
;;
IF cTemplate == NIL;;
cTemplate := DllPrepareCall( <(DllName)>, IIF( <.Pascal.>, DC_CALL_STD, DC_CALL_CDECL ), IIF( <.DllFuncName.>, <(DllFuncName)>, #<FuncName> ) );;
ENDIF;;
;;
RETURN DllExecuteCall( cTemplate [, <ArgName>] [, <ArgNameN>] )
#endif
#endif
Saludos, Euclides
Editado pela última vez por anacatacombs em 22 Nov 2012 14:11, em um total de 1 vez.
Razão: Mensagem editada para a correção da tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Razão: Mensagem editada para a correção da tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Abrir uma pasta como janela? RESOLVIDO
Caro amigo Euclides.
El colega y buen amigo Vicente Guerra compartio conmigo este conocimiento:
RUN Explorer C:\NomeDaPasta
Funciona muy bien, pruebalo, te va a agradar.
Dios te bendiga y haga properar todos tus emprendimientos.
¡Disfruta la alegría de vivir !
[] Adalberto
El colega y buen amigo Vicente Guerra compartio conmigo este conocimiento:
RUN Explorer C:\NomeDaPasta
Funciona muy bien, pruebalo, te va a agradar.
Dios te bendiga y haga properar todos tus emprendimientos.
¡Disfruta la alegría de vivir !
[] Adalberto
-
Euclides
- Usuário Nível 3

- Mensagens: 154
- Registrado em: 12 Mai 2007 14:07
- Localização: São Paulo, Capital
Abrir uma pasta como janela?
Hola Adalberto!
Tens razão. Eu não utilizava o comando RUN desde os tempos de Clipper (1995).
Uma curiosidade a mais...
Em vez de usar o comando RUN Explorer C:\windows
podes utilizar o comando: RUN start C:\windows
E isso pertmite também outras possibilidades como:
RUN start arquivo.doc
Que vai abrir o ´arquivo.doc´ no WORD do MS Office
Isso vale para qualquer outro tipo de arquivo.
T+
Euclides
Tens razão. Eu não utilizava o comando RUN desde os tempos de Clipper (1995).
Uma curiosidade a mais...
Em vez de usar o comando RUN Explorer C:\windows
podes utilizar o comando: RUN start C:\windows
E isso pertmite também outras possibilidades como:
RUN start arquivo.doc
Que vai abrir o ´arquivo.doc´ no WORD do MS Office
Isso vale para qualquer outro tipo de arquivo.
T+
Euclides
-
Adalberto
- Usuário Nível 3

- Mensagens: 343
- Registrado em: 01 Set 2007 01:09
- Localização: Santa Cruz de la Sierra - Bolivia
Abrir uma pasta como janela?
Euclides,
Con gran alegría vuelvo a agradecer tu ayuda, Dios recompense tu generosidad.
Pondre en práctica lo que me has enseñado.
¿Disfruta la alegría de vivir!
[] Adalberto
Con gran alegría vuelvo a agradecer tu ayuda, Dios recompense tu generosidad.
Pondre en práctica lo que me has enseñado.
¿Disfruta la alegría de vivir!
[] Adalberto