Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Como atualizar uma pasta do windows?


Douglas Soares

Question

Bom dia... estou com um grande problema aqui... tenho um programa que compila um instalador do inno setup via linha de comando... pra pegar a porcetagem eu pego o tamanho atual do arquivo, até chegar ao tamanho completo... só que pra isso o windows tem que atualizar a pasta do executavel toda hora... até o windows xp meu programa funcionava, mas agora no windows 7 ele não atualiza mais... peguei um código na net:

SetForegroundWindow(FindWindow(nil, 'Sigi'));
SendKeys('{F5}', True);

Realmente funciona, porém a pasta tem que estar aberta, e quando executo esse comando a pasta vem pra frente da aplicação...ou seja, é inutil...

Como eu faria para atualizar essa pasta via código, mas sem a pasta vir na frente da aplicação... ela pode até ficar aberta se for o caso!

Abraços

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Se voce ta pegando o tamanho do arquivo via código, supostamente não precisa dessa parte de atualizar pasta do Windows a menos que voce ta fazendo a arte de utilizar um Explorer em seu programa já que voce ta dando um foreground em uma janela chamada Sigi e do Windows é Cabinet

Enfim, resumindo pega o tamanho do arquivo tipo pelo código abaixo

function GetFileSize(const szFile: String): Integer;
var
  SearchRec: TSearchRec;
  sgPath: string;
  inRetval, I1: Integer;
begin
  sgPath := ExpandFileName(szFile);
  I1 := -1;
  try
    inRetval := FindFirst(ExpandFileName(szFile), faAnyFile, SearchRec);
    if inRetval = 0 then
    I1 := SearchRec.Size;
  finally
    SysUtils.FindClose(SearchRec);
  end;
  Result := I1;
end;

abrax

Link to comment
Share on other sites

  • 0

O Problema é que assim ele não muda o valor nunca... o que quero fazer é tipo uma barra de progresso... o valor total é mais ou menos 10 megas... dai eu coloco isso no max do gauge... e o progress do gauge eu coloco o tamanho do arquivo usando a função GetFileSize... só que ela retorna sempre o mesmo valor, dai fica sempre parada a barrinha... o problema é que no windows xp funciona, mas no windows 7 não funciona... ele não atualiza os arquivos em tempo real... (é um bug)... por isso queria atualizar a pasta, se eu deixo ela aberta e fico apertando F5, a barrinha do programa atualiza normal....

Deu pra entender???

Obrigado!

Link to comment
Share on other sites

  • 0

Sim sim, só não entendo porque ai não atualiza, fiz uns testes aqui e atualiza normal... Windows 7 x64

Sem idéia agora hehe

Já fucei aqui mas não resolveria seu problema, já que aqui funciona normal e eu não consigo emular dessa forma ai

qualquer coisa eu posto aqui

abrx

Link to comment
Share on other sites

  • 0

Tipo, pra emular você teria que ter o InnoSetup e o ISTool, dai você poe pra compilar qualquer coisa e fica olhando a pasta que o executavel esta sendo compilado... daí você ve se ele muda de tamanho sempre ou só quando começa e quando termina.... no meu xp ele muda sempre, mas aqui no win 7 ele só muda quando começa e quando termina.... :unsure:

Link to comment
Share on other sites

  • 0

Realmente o windows 7 tem esse bug dos infernos, consegui resolver usando o JvFileListBox da biblioteca JVCL, dai eu dou um refresh no componente e em seguida checo o tamanho do arquivo :rolleyes: !!!!

Obrigado por toda ajuda prestada!

Link to comment
Share on other sites

  • 0

Vá no Gerenciador de Tarefás. Finalize toda a arvore do Windows Explorer (Explorer.exe)

Para acesso ao Gerenciador de Tarefás, clique com botão direito ai na sua barra abaixo onde fica as janelas dos programas, clique em um espaço que não tem programa, em lugar liso. Ai então aparecera a opção Gerenciador de Tarefás.

Seleciodo com Botão direito o Programa Windows Explorer e aperte em Ir para Detalhes. Vai aparecer o programa em execução com o nome Explorer.exe. Clique com botão direito novamente e vá em Finalizar Árvore de Processo.

Obs.: Após fazer isso não saia da janela (Gerenciador de Tarefás) de jeito nenhum, voce pode se perder e ter que reiniciar o computador. (instrução para iniciante)

Este processo é para reiniciar o sistema Work do Windows.

Ainda em Gerenciador de Tarefás, na parte superior vá em Arquivo> Executar Nova Tarefa e acione no campa de escrita Explorer.exe, e no WIN10 tem que selecionar Criar esta tarefa com previlegios administrativos>OK!

Caso tenha medo na execução anote tudo e faça que dara certo.

FEITO!!!

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...