Clipper On Line • Ver Tópico - Executar processos sem usar .BAT, ShellExecute ou vbScripts
Mudar para estilo Clássico
Discussão sobre a biblioteca Fivewin - O Clipper para Windows.
Postar uma resposta

Executar processos sem usar .BAT, ShellExecute ou vbScripts

30 Jul 2018 13:19

Amiguinhos,

Eis uma função da API do Windows para a execução de comandos em linha usando CreateProcess:
Código:
/*
* Função: Executar processos sem usar .BAT, ShellExecute ou vbScripts
* por Jose Carlos da Rocha
* em 30/Julho/2018
*/

#include "fivewin.ch"

Function main()

   //Desativa o serviço de audio do windows
   ? "MY_CreateProcess( 1, 'net stop Audiosrv')",;
   MY_CreateProcess( 1, "net stop Audiosrv")
   
   //Inicia o serviço de audio do windows
   ?"MY_CreateProcess( 1, 'net start Audiosrv')",;
   MY_CreateProcess( 1, "net start Audiosrv")

return

#pragma BEGINDUMP
   #include <windows.h>
   #include <hbapi.h>
   #include <stdio.h>
   #include <tchar.h>
   HB_FUNC( MY_CREATEPROCESS )
   {
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    if( !CreateProcess( NULL,   // No module name (use command line)
        hb_parc(2),        // Command line
        NULL,              // Process handle not inheritable
        NULL,              // Thread handle not inheritable
        FALSE,             // Set handle inheritance to FALSE
        CREATE_NO_WINDOW,  // No creation flags
        NULL,              // Use parent's environment block
        NULL,              // Use parent's starting directory
        &si,               // Pointer to STARTUPINFO structure
        &pi )              // Pointer to PROCESS_INFORMATION structure
       )
       {
        printf( "Criaçao de Processo falhou (%d).\n", GetLastError() );
        return;
       }
    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles.
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
   }
#pragma ENDDUMP


No exemplo foi necessário executar em usuário com direitos elevados para que o comando de tratamento de serviços fosse efetivo.

Executar processos sem usar .BAT, ShellExecute ou vbScripts

28 Ago 2018 05:32

vocês adoram sobrecarregar os sistemas com códigos redundantes :%
isso já tem na sua ferramenta :-[ incluindo as ações: "aguardar" e "terminar" ....

Vou lhe dar outra sugestão para ignorar.... quando vocês postarem alguma dica, coloque "DICA: xxxxx", isso ajuda um pouco a identificar DICAS x QUESTÕES, aqui nesse fórum tudo é misturado, muito ruim.

rochinha escreveu:Eis uma função da API do Windows para a execução de comandos em linha usando CreateProcess:

No exemplo foi necessário executar em usuário com direitos elevados para que o comando de tratamento de serviços fosse efetivo.

Executar processos sem usar .BAT, ShellExecute ou vbScripts

28 Ago 2018 13:30

Olá!

Para distinguir dicas de questões, exite a seção Contribuições, Dicas e Tutoriais

Executar processos sem usar .BAT, ShellExecute ou vbScripts

30 Ago 2018 13:37

Amiguinhos,

E quando a dica, contribuição for específica para Fivewin?

Vou também colocar em Dicas... não vai ficar mais misturado ainda?

Se não me engano um dos primeiros a usar FERRAMENTAS: blablabla, DICAS: blablabla ou ETC: blablabla foi o casa aqui. Tô Serto?!?

Executar processos sem usar .BAT, ShellExecute ou vbScripts

30 Ago 2018 14:46

Amiguinhos,

hazael
Antes do forum ter as divisões que hoje tem, realmente ficava confusa a busca. Tinhamos de ficar acompanhando os tópicos. E muitas vezes nas minhas postagens eu colocava títulos para seccionar.

Hoje com as divisões, postagens numa seção é referente aquela seção e pronto. Dúvidas podem ser genéricas mas Dicas nem sempre são.
Postar uma resposta