Código fonte da ShellExecute()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Código fonte da ShellExecute()

Mensagem por lugab »

Boa noite.

Preciso desta função. Ela está presente na HWGUI, mas eu não desejo linkar a lib toda no meu fonte, apenas pra usar a shellexecute(). Acredito que o programa vai ficar muito pesado, se fizer isso.

Será q alguém colabora e disponibiliza no fórum essa útil função (ela carrega programas externos de 32bits), com as subfunções que por ventura ela venha a chamar?

Grato a quem se habilitar....

gabriel
lugab
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Código fonte da ShellExecute()

Mensagem por Maligno »

Acredito que você deve estar falando desta função ShellExecute(), que é na verdade, da API do Windows; não do [x]Harbour. Você não precisará do fonte dela para deixar seu programa mais leve, por dois motivos: sendo da API, ela reside na biblioteca dinâmica Shell32.dll. Ela será carregada automaticamente quando necessária. Qualquer programa Windows utiliza dezenas de DLLs que já acompanham o SO. E mesmo que existisse uma LIB estática para usar, não haveria porque se preocupar. Em link-time, apenas o módulo necessário seria ligado ao seu programa, e não a LIB inteira.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Código fonte da ShellExecute()

Mensagem por sygecom »

Tente linkar o arquivo .C que está em anexo junto com seu aplicativo e veja se resolve.
Anexos
shellapi.zip
(582 Bytes) Baixado 316 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Código fonte da ShellExecute()

Mensagem por Maligno »

O arquivo C em questão não vai adiantar piçiroca nenhuma em relação ao problema ventilado pelo OP, haja vista que a dita cuja é apenas um wrapper que irá executar a ShellExecute() da API de qualquer maneira. Neste ponto, troca-se 6 por meia dúzia.

Mas esta função pelo menos traz algum conforto na execução, já que ela instala alguns defaults. Facilita o uso.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Código fonte da ShellExecute()

Mensagem por sygecom »

Vamos aguardar uma resposta do colega Gabriel, que bem provavel vai TESTAR pelomenos.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Código fonte da ShellExecute()

Mensagem por Maligno »

Nem precisa testar. Vai ficar do mesmo tamanho. É só LER a função.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Código fonte da ShellExecute()

Mensagem por Maligno »

... embora eu ache que a função seja útil, por ser um wrapper que traz algum conforto.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Código fonte da ShellExecute()

Mensagem por sygecom »

Maligno escreveu:Nem precisa testar. Vai ficar do mesmo tamanho. É só LER a função.
Maligno, o colega Gabriel está linkando a LIB da Hwgui apenas por causa dessa função, o que ele quer é apenas usar a função sem ter que linkar a lib da Hwgui.
Vamos por favor aguardar. Obrigado.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Código fonte da ShellExecute()

Mensagem por Maligno »

Ah, sim. Então vale o que eu já tinha dito. Não precisa se preocupar nem um pouco com a linkedição da biblioteca. Apenas o módulo necessário é realmente ligado ao programa. Não a biblioteca toda.
Mas se agora já tem esse fonte, tanto melhor. Pode ignorar essa LIB de vez. Apesar de que ela não faz nada de muito especial.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Re: Código fonte da ShellExecute()

Mensagem por lugab »

Pessoal, obrigado pela atenção. Vcs são excelentes.

Compilei a sugestão do leonardo e deu um monte de erro, mas eu não nego que estou bem próximo de zero, em termos de linguagens de programação, e, certamente, andei fazendo a coisa errada.

Eu coloquei o arquivo SHELLAPI.C q o Leonardo mandou dentro de meu funcoes.prg .

Copiei para a pasta aonde compilo os arquivos windows.h, shlobj.h, hbapi.h e hbapiitm.h , que estavam nas minhas pastas \XHARBOUR\INCLUE e \BORLAND\BCC55\INCLUDE.

Na compilação, deu os seguintes erros:

c:\harbour\bin\harbour.exe funwin.prg -ic:\harbour\include;c:\borland\bcc55\include -n -DWVW
xHarbour Compiler build 1.0.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'funwin.prg'...
windows.h(22) Error E0025 Error in #if expression
100excpt.h(62) Error E0030 Syntax error: "syntax error at ','"
excpt.h(63) Error E0030 Syntax error: "syntax error at ','"
excpt.h(64) Error E0030 Syntax error: "syntax error at ','"
excpt.h(65) Error E0020 Incomplete statement or unbalanced delimiters
excpt.h(67) Error E0030 Syntax error: "syntax error at '}'"
excpt.h(97) Error E0030 Syntax error: "syntax error at 'STRUCT'"
excpt.h(99) Error E0030 Syntax error: "syntax error at '__C_SPECIFIC_HANDLER'"
100excpt.h(100) Error E0030 Syntax error: "syntax error at '_EXCEPTION_RECORD'"
excpt.h(101) Error E0030 Syntax error: "syntax error at '*'"
excpt.h(102) Error E0030 Syntax error: "syntax error at '_CONTEXT'"
excpt.h(103) Error E0030 Syntax error: "syntax error at '_DISPATCHER_CONTEXT'"
excpt.h(105) Error E0030 Syntax error: "syntax error at ')'"
excpt.h(127) Error E0025 Error in #if expression
excpt.h(180) Error E0024 Error in #pragma
100_stddef.h(73) Error E0030 Syntax error: "syntax error at 'INT'"
_stddef.h(83) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
_stddef.h(93) Error E0030 Syntax error: "syntax error at 'WCHAR_T'"
100_stddef.h(102) Error E0030 Syntax error: "syntax error at 'WCHAR_T'"
_stddef.h(109) Error E0030 Syntax error: "syntax error at 'LONG'"
stdarg.h(35) Error E0030 Syntax error: "syntax error at 'VOID'"
200windef.h(11) Error E0024 Error in #pragma
100windef.h(161) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
windef.h(165) Error E0030 Syntax error: "syntax error at 'INT'"
winnt.h(19) Error E0024 Error in #pragma
mbctype.h(57) Error E0030 Syntax error: "syntax error at '__CDECL'"
mbctype.h(66) Error E0030 Syntax error: "syntax error at '__CDECL'"
mbctype.h(73) Error E0030 Syntax error: "syntax error at '__CDECL'"
ctype.h(52) Error E0030 Syntax error: "syntax error at 'SHORT'"
ctype.h(65) Error E0030 Syntax error: "syntax error at '__CDECL'"
ctype.h(78) Error E0030 Syntax error: "syntax error at '__CDECL'"
ctype.h(79) Error E0030 Syntax error: "syntax error at '}'"
100200winnt.h(96) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
winnt.h(99) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
100basetsd.h(22) Error E0024 Error in #pragma
basetsd.h(47) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
basetsd.h(62) Error E0025 Error in #if expression
basetsd.h(88) Error E0030 Syntax error: "syntax error at '__W64'"
100basetsd.h(109) Error E0025 Error in #if expression
200basetsd.h(289) Error E0030 Syntax error: "syntax error at 'ULONG_PTR'"
basetsd.h(295) Error E0030 Syntax error: "syntax error at 'ULONG_PTR'"
300basetsd.h(302) Error E0030 Syntax error: "syntax error at '__INT64'"
basetsd.h(311) Error E0030 Syntax error: "syntax error at 'UNSIGNED'"
basetsd.h(316) Error E0024 Error in #pragma
winnt.h(179) Error E0025 Error in #if expression
200300winnt.h(393) Error E0025 Error in #if expression
400500600700800900100011001200130014001500160017001800190020002100220023002400250026002700280029003000310032003300340035003600370038003900400041004200430044004500460047004800490050005100520053005400550056005700580059006000610062006300640065006600670068006900700071007200730020030030046 errors

No code generated

** error 1 ** deleting funwin.c
lugab
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Código fonte da ShellExecute()

Mensagem por sygecom »

Olá Gabriel,
Não era para colocar dentro de algum .PRG, era para apenas compilar junto no hbmake ! Ou seja onde você seleciona seus .PRG , você deve selecionar esse arquivo .C também.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Re: Código fonte da ShellExecute()

Mensagem por lugab »

Oi, Leonardo.

Eu sabia q eu estava fazendo errado. Vou refazer e ver no que da.

Muito obrigado, cara
lugab
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Código fonte da ShellExecute()

Mensagem por sygecom »

De nada, qualquer duvida prende o grito.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder