Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Portuguese
  4. [SOLVED] QProcess não inicia no Windows XP
Forum Updated to NodeBB v4.3 + New Features

[SOLVED] QProcess não inicia no Windows XP

Scheduled Pinned Locked Moved Portuguese
21 Posts 3 Posters 12.8k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    neutrin0_brazil
    wrote on last edited by
    #2

    Já tentou colocar o PATH inteiro do programa que está tentando iniciar

    Lembrando que o notepad.exe fica dentro do PATH setado da variavel %PATH%

    Abs

    1 Reply Last reply
    0
    • N Offline
      N Offline
      neutrin0_brazil
      wrote on last edited by
      #3

      "c:\caminhodo_seu_programa\seuprograma.exe"

      1 Reply Last reply
      0
      • F Offline
        F Offline
        franzbischoff
        wrote on last edited by
        #4

        Neutrino, já faço isso...

        @QString program = fbpath + fbexe;@

        Obrigado

        Free Online WWII Air Combat SImulation
        http://www.tabajarahost.org

        1 Reply Last reply
        0
        • N Offline
          N Offline
          neutrin0_brazil
          wrote on last edited by
          #5

          Se o notepad.exe funciona, pode ser erro no programa a ser carregado.

          1 Reply Last reply
          0
          • F Offline
            F Offline
            franzbischoff
            wrote on last edited by
            #6

            É estranho... no W7 roda legal... Se eu executar o outro processo manualmente ele inicia... só pelo Qt que dá erro...

            De qualquer forma, como debugar isso sem ter que instalar toda IDE no XP? :-(

            Free Online WWII Air Combat SImulation
            http://www.tabajarahost.org

            1 Reply Last reply
            0
            • N Offline
              N Offline
              neutrin0_brazil
              wrote on last edited by
              #7

              Mano acho que pelo http://www.bloodshed.net/devcpp.html DevC++ vc consegue debugar e descobrir onde está a falha. sem um IDE não conheço a forma. se estiver usando GCC para compilar tente usar o parametro -d

              1 Reply Last reply
              0
              • N Offline
                N Offline
                neutrin0_brazil
                wrote on last edited by
                #8

                pode ser falha no fonte do QT em relação ao XP Kernel, APIs, as famosas chamadas internas ;-)

                1 Reply Last reply
                0
                • F Offline
                  F Offline
                  franzbischoff
                  wrote on last edited by
                  #9

                  Pois pode ser... tenho que ver um workaround... :-(

                  Vou experimentar usando as chamadas padrões do C/C++ pra iniciar outro processo e posto aqui o resultado.

                  O que queria mesmo era poder controlar a saída do processo pra fazer o Launcher sumir e reaparecer depois da execução do novo processo...

                  Free Online WWII Air Combat SImulation
                  http://www.tabajarahost.org

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    TioRoy
                    wrote on last edited by
                    #10

                    Este executável depende de alguma outra DLL?

                    Tente fazer um teste no XP: abra o cmd.exe, digite:
                    @
                    cd
                    @

                    e depois chame o executável com o PATH completo:
                    @
                    c:\caminhodo_seu_programa\seuprograma.exe
                    @

                    1 Reply Last reply
                    0
                    • F Offline
                      F Offline
                      franzbischoff
                      wrote on last edited by
                      #11

                      Alo novamente.
                      @TloRoy, isso executa normalmente

                      Quanto ao meu teste com chamada padrão C/C++ ficou pra depois, oq eu fiz entretanto foi passar meu projeto de Qt 4.8 pra Qt 5.1 e o erro ficou melhor, agora aparece uma mensagem quando o Launcher tenta executar o novo processo:

                      "Não foi possível localizar o ponto de entrada do procedimento InitOnceExecuteOnce na biblioteca de vínculo dinâmico KERNEL32.dll"

                      Esta deve ser a explicação de o processo ser terminado no Qt4.8 (mas sem mensagem).

                      Tenho agora que ver pq isto acontece...

                      Free Online WWII Air Combat SImulation
                      http://www.tabajarahost.org

                      1 Reply Last reply
                      0
                      • F Offline
                        F Offline
                        franzbischoff
                        wrote on last edited by
                        #12

                        Pronto... "MSDN.com says that this function is only available on Windows Vista and later" portanto... Qt nao suporta XP? :)

                        Free Online WWII Air Combat SImulation
                        http://www.tabajarahost.org

                        1 Reply Last reply
                        0
                        • T Offline
                          T Offline
                          TioRoy
                          wrote on last edited by
                          #13

                          Mas acho que a função InitOnceExecuteOnce não é usada pelo Qt.

                          Dei uma olhada nos fontes do Qt (4.8 e 5.2) e não achei uso desta função pelo Qt. Ele usa a CreateProcess para iniciar processos.

                          Como você já testou com o notepad, não me parece um problema diretamente do Qt.

                          Este executável que você está tentando rodar.... posso dar uma olhada nele.

                          1 Reply Last reply
                          0
                          • F Offline
                            F Offline
                            franzbischoff
                            wrote on last edited by
                            #14

                            Olá novamente,
                            Pra tira teima, instalei tudo no xp e compilei o launcher lá. Mesmo problema...

                            De fato outros executáveis rodam, mas este que está dando problema não dava quando o launcher era escrito em Lazarus, só quando o refiz em Qt...

                            o executável é este http://goo.gl/AymzjH

                            vlw

                            Free Online WWII Air Combat SImulation
                            http://www.tabajarahost.org

                            1 Reply Last reply
                            0
                            • T Offline
                              T Offline
                              TioRoy
                              wrote on last edited by
                              #15

                              Dei uma olhada no EXE e ele não usa a dita função.

                              Mas este usa uma DLL chamada TASKKEYHOOK.DLL.

                              Consegue ela também?

                              Estou achando muito estranho.....

                              1 Reply Last reply
                              0
                              • F Offline
                                F Offline
                                franzbischoff
                                wrote on last edited by
                                #16

                                Este programa é um jogo

                                Dll: http://goo.gl/HPkDYF

                                Vlw

                                Free Online WWII Air Combat SImulation
                                http://www.tabajarahost.org

                                1 Reply Last reply
                                0
                                • T Offline
                                  T Offline
                                  TioRoy
                                  wrote on last edited by
                                  #17

                                  Esqueci de perguntar... No XP você está usando o VS2008 para compilar, certo?

                                  Você pode usar o Dependency Walker (http://www.dependencywalker.com/) para verificar as dependências do EXE, e ver se está quebrado algo. É muito estranho mesmo você rodar o EXE "manualmente" e funcionar, e pelo Qt não.

                                  Um coisa que você pode fazer com o Dependency Walker é fazer um "profiling": Rodar o programa pelo Dependency Walker" e ele analisa o carregamento de outras DLL's que ocorreram durante o programa (e não no início que é o normal). Pode tentar fazer isso também com o seu Launcher.

                                  1 Reply Last reply
                                  0
                                  • F Offline
                                    F Offline
                                    franzbischoff
                                    wrote on last edited by
                                    #18

                                    Qt 32 bits com Mingw 32 bits

                                    Vou experimentar. Quero testar também com outras chamadas... enfim, tenho trabalho pro fds :-)

                                    Free Online WWII Air Combat SImulation
                                    http://www.tabajarahost.org

                                    1 Reply Last reply
                                    0
                                    • F Offline
                                      F Offline
                                      franzbischoff
                                      wrote on last edited by
                                      #19

                                      Criei um HelloWorldQT no netbeans, roda normal, abre a janelinha e tal. Então adicionei uma chamada CreateProcess() que é executada quando eu escrevo no textbox, e tudo correu lindamente...

                                      @if (CreateProcessA((LPSTR) "C:/caminhodo/maldito.exe", NULL,
                                      NULL, NULL, FALSE, 0, NULL,
                                      NULL, &StartupInfo, &ProcessInfo)) {
                                      std::cout << "OK" << std::endl;
                                      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
                                      CloseHandle(ProcessInfo.hThread);
                                      CloseHandle(ProcessInfo.hProcess);
                                      std::cout << "OK2" << std::endl;
                                      }@

                                      Portanto... isso é ou não um bug do Qt? :)

                                      Update:

                                      Copiei o código inteiro do QProcessPrivate::startDetached() que tem no qprocess_win.cpp do Src do Qt e continua funcionando... :-/

                                      Free Online WWII Air Combat SImulation
                                      http://www.tabajarahost.org

                                      1 Reply Last reply
                                      0
                                      • F Offline
                                        F Offline
                                        franzbischoff
                                        wrote on last edited by
                                        #20

                                        Ok, agora pra piorar... uso o QProcess dentro do HelloWorld (conforme o codigo do meu primeiro post) e funciona... :-(

                                        Já estou ficando doido...

                                        Free Online WWII Air Combat SImulation
                                        http://www.tabajarahost.org

                                        1 Reply Last reply
                                        0
                                        • F Offline
                                          F Offline
                                          franzbischoff
                                          wrote on last edited by
                                          #21

                                          Resolvido... era um dll do jogo que foi compilado no W7... recompilando usando o MSVC Express dentro do XP resolve o problema...

                                          Ufa :)

                                          Free Online WWII Air Combat SImulation
                                          http://www.tabajarahost.org

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved