Fórum Acessar HELP do meu aplicativo #296932
25/09/2005
0
Como faço para acessar este help, tanto pelo menu, componente ou pressionando <F1> no teclado.
Obrigado!
Alanhfs
Curtir tópico
+ 0Posts
28/09/2005
Alanhfs
Estou usando delphi 2005
alguém ?
Gostei + 0
28/09/2005
Emilio
Application.HelpFile:=´SeuHelp.hlp´;
Application.helpcomand(HELP_CONTENTS,0);
Gostei + 0
28/09/2005
Massuda
Gostei + 0
06/01/2008
Asales
Tenho 2 arquivos de ajuda em CHM para o meu aplicativo e para o arquivo principal ´ajuda1.chm´ o funcionamento eh normal pois eh o helpfile do aplicativo.
O segundo arquivo de ajuda ´ajuda2.chm´ chamo através de um shellexecute.
Dúvidas:
1 - Tem como chamar cada arquivo separadamente utilizando comandos para arquivo de ajuda como HelpContext, HelpJump, etc.??
2 - Tem como verificar (no caso de utilizar ShellExecute) se o ´ajuda2.chm´ já está aberto para não executar duas instâncias (tentei utilizar FindWindow mas não funcionou).
Estou trabalhando no Delphi 2007 e Windows Vista.
Obrigado.
Gostei + 0
06/01/2008
Devmedia
Tudo bom amigo?
Segue as repostas.
[b:0cd52987c9]1.ª Dúvida:[/b:0cd52987c9]
{Comando para carregar o arquivo no Sistema}
Application.HelpFile := ExtractFilePath(Application.ExeName) + ´AJUDA.HLP´;
{Comando para executar o arquivo}
Application.HelpContext(0);
[b:0cd52987c9]2.ª Dúvida:[/b:0cd52987c9]
Declare TLHelp32, PsAPI na Uses da sua Unit
Function VerficarExecutavel(Nome:String):Boolean; var rId:array[0..999] of DWord; i,NumProc,NumMod:DWord; HProc,HMod:THandle; sNome:String; Tamanho, Count:Integer; sNomeTratado:String; begin result:=False; SetLength(sNome, 256); // Aqui vc pega os IDs dos processos em execução EnumProcesses(@rId[0], 4000, NumProc); // Aqui vc faz um for p/ pegar cada processo for i := 0 to NumProc div 4 do begin // Aqui vc seleciona o processo HProc := OpenProcess(Process_Query_Information or Process_VM_Read, FALSE, rId[i]); if HProc = 0 then Continue; // Aqui vc pega os módulos do processo // Como vc só quer o nome do programa, então será sempre o primeiro EnumProcessModules(HProc, @HMod, 4, NumMod); // Aqui vc pega o nome do módulo; como é o primeiro, é o nome do programa GetModuleBaseName(HProc, HMod, @sNome[1], 256); sNomeTratado := trim(sNome); Tamanho:=Length(SnomeTratado); Count:=1; While Count <= Tamanho do begin if SnomeTratado[Count]= ´´ Then Break; count:=Count+1; end; sNomeTratado:=Copy(SnomeTratado,1,Count-1); if AnsiUpperCase(sNomeTratado)=AnsiUpperCase(Nome) Then Result:=True; // Aqui vc libera o handle do processo selecionado CloseHandle(HProc); end; end;
Para verificar o arquivo:
if VerficarExecutavel(´winhlp32.exe´) Then showmessage(´Esta Rodando´) else Showmessage(´Não esta Rodando´);
[b:0cd52987c9]Atenção: [/b:0cd52987c9] ´winhlp32.exe´ ele é padrão para estes tipos de arquivos.
Agora, caso queira verificar se o arquivo existe, no diretório especificado, utilize o código abaixo. Segue:
if not fileExists(ExtractFilePath(Application.ExeName) + ´AJUDA.HLP´) then
{aqui voce faz oque quiser}
Teste. Quarquer coisa. Volta um grito aqui.
Um abraço.
Att.
Gostei + 0
07/01/2008
Asales
Obrigado pelas respostas.
Quanto a 1ª dúvida (que eh a que mais me interessa) não funcionou.
Mesmo informando o nome de outro arquivo de ajuda (ajuda2.chm) o programa continua abrindo o arquivo de ajuda padrão (ajuda1.chm).
Eu tenho 2 itens no menu Ajuda:
Exemplo:
- Chama Ajuda 1
com o comando ´Application.HelpContext(0)´ que abre o arquivo de ajuda principal da aplicação
e tenho outro item
- Chama Ajuda 2
com o comando:
ShellExecute(0,nil, PChar(extractFilePath( application.exeName )+ ´ajuda2.chm´) ,nil, nil, SW_SHOWNORMAL);
que abre o segundo arquivo de ajuda.
Só que gostaria de [u:b21b720566]chamar o segundo arquivo de ajuda através de comandos de Help [/u:b21b720566]e não está funcionando mesmo mudando o nome no comando Application.HelpFile.
Obrigado.
Gostei + 0
08/01/2008
Lucas_spohr
no meu estágio, no computador padrão onde nós iríamos usar para apresentar nossos sistemas, estavam todos atalhos de todos os sistemas. Para cada atalho, nós teríamos q clicar com o botão direito e ir em Propriedades.
Só não estou lembrando, se é no Destino ou no Iniciar Em que eu devo: ou tirar as Aspas, ou colocar aspas.
Tente fazer este teste.
Abraço.
Gostei + 0
08/01/2008
Asales
Obrigado pela resposta mas mão entendi bem sua dica.
O problema não é chamar o arquivo de ajuda com atalhos externo; o problema é chamar um segundo arquivo de ajuda (além do arquivo de ajuda principal do aplicativo) de dentro do Delphi utilizando comandos como HelpCommand, etc.
Gostei + 0
08/01/2008
Lucas_spohr
achei q fosse apenas UM Help e que, ao invés de abrir o Help de sua aplicação, abria um Help de um outro sistema.
Desculpa...
Gostei + 0
12/01/2008
Asales
Gostei + 0
11/03/2008
Renato_pinho
Cria uma variavel auxiliar inteira e coloca 1 se o help for chamado ou 0 caso contrário e antes de chamar o help peça para conferir essa variavel auxiliar! :wink:
Gostei + 0
11/03/2008
Asales
não entendi sua dica.
Minha dúvida é chamar 2 arquivos de ajuda diferentes - acessando o tópico específico - utilizando o mesmo aplicativo.
Exemplo - tenho 2 arquivos de ajuda:
[b:c75e3016e7]help-1.chm[/b:c75e3016e7] e
[b:c75e3016e7]help-2222.chm[/b:c75e3016e7]
O arquivo [b:c75e3016e7]help-1.chm[/b:c75e3016e7] é o [u:c75e3016e7]padrão do aplicativo[/u:c75e3016e7]. Para mim acessar o tópico 10 dele utilizo a chamada:
Application.HelpContext(10);
O problema é como faço para chamar o tópico 5 do arquivo [b:c75e3016e7]help-2222.chm[/b:c75e3016e7] que não é o help padrão do aplicativo?
Gostei + 0
11/03/2008
Renato_pinho
Ao invés de usar Apllication.HelpContext(10) eu estou usando o seguinte comando:
[b:40b1d929df]HtmlHelp(frm_ajuda.Handle, ´C:\te_tmphhp\te.chm´, HH_HELP_CONTEXT,10);[/b:40b1d929df]
Talvez possa fazer isso mas antes tem que dar o load do arquivo de ajuda!
Espero ter te ajudado! :wink:
Gostei + 0
17/03/2008
Asales
ainda não está funcionando para o que eu preciso (abrir um outro arquivo de ajuda que não seja o principal da aplicação).
Como dou o ´load´ no arquivo de ajuda?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)