A pipe


Pipe

The problem of Windows Shell and system is that some command line programs returns text (or data) info that can be useful. A pipe can be used to return the text produced when the other program executes.
El problema del Shell de Windows y system es que algunos comandos de línea regresan información de texto que puede ser útil. Una pipe puede ser usada para regresar el texto (o datos) producido cuando el otro programa se ejecuta.

Standard Input and Standard Output

The figure below shows a typical operation for a console application. There are two pipes: one pipe for the standard input and another pipe for the standard output. When the user types on the keyboard the characters are sent to the console program using the pipe for the standard input. When the program calls cout (or printf) the pipe for standard output is used to display the information on the computer display. In Microsoft Windows, cmd.exe is responsible of sending the keystrokes and displaying the characters on the MSDOS window.
La figura de abajo muestra una operación típica de una aplicación de consola. Hay dos pipes: una pipe para la entrada estándar y otra pipe para la salida estándar. Cuando el usuario escribe usando el teclado las letras son enviadas hacia el programa de consola usando la pipe para la entrada estándar. Cuando el programa llama cout (o printf) la pipe para la salida estándar es usada para mostrar la información en el monitor de la pantalla. En Microsoft Windows, cmd.exe es responsable de enviar la pulsaciones del teclado y mostrar los caracteres en la ventana de MSDOS.

StdInputStdOutput

Sys::Process

The figure below illustrates how the Sys::Process class of Wintempla uses two pipes to communicate with a console application. You are welcome to inspect this class. The pipe is called Anonymous Pipe because it does not have a name, see Wintempla > Pipes .
La figura de abajo ilustra como la clase Sys::Process de Wintempla usa dos pipes para comunicarse con una aplicación de consola. Usted es bienvenido a inspeccionar esta clase. La pipe se llama pipe Anonymous Pipe porque ésta no tiene un nombre, ver AWintempla > Pipes .

Process

Problem 1
Create a Wintempla dialog application called PipeZip to zip a folder using 7-zip. For this problem, you need to download from the Internet the 7-zip library created by Igor Pavlov. We will execute the 7z.exe program of the library (you can also use 7za.exe).
Cree una aplicación de diálogo de Wintempla llamada PipeZip para comprimir una carpeta usando 7-zip. Para este problema, usted necesita descargar de la Internet la librería 7-zip creada por Igor Pavlov. Nosotros ejecutaremos el programa 7z.exe de la librería (usted también puede usar 7za.exe).

Tip
If you install 7-z, the command line can be executed from any location. If you just copy 7z.exe or 7za.exe, you need to place this file in your project folder.
Si usted instalo 7-z, el comando de línea puede ser ejecutado desde cualquier ubicación. Si usted sólo copio el archivo 7z.exe o 7za.exe, usted necesita colocar este archivo en la carpeta de su proyecto.

PipeZip.cpp

...

void PipeZip::Window_Open(Win::Event& e)
{
     const wchar_t* inputFolder = L"C:\\selo\\107POO";
     const wchar_t* outputZipFile = L"C:\\selo\\107POO.zip";
     //__________________________________________________________ Create the command
     wchar_t command[1024];
     _snwprintf_s(command, 1024, _TRUNCATE, L"\"C:\\Program Files\\7-zip\\7za.exe\" a \"%s\" \"%s\"", outputZipFile, inputFolder);
     //__________________________________________________________ Execute the command
     Sys::Process process;
     wstring outputText;
     if (process.Execute(command, outputText) == false)
     {
          this->MessageBox(command, L"Error", MB_OK | MB_ICONERROR);
          this->Destroy();
     }
     //__________________________________________________________ Display Output
     tbxOutput.Text = outputText;
}


PipeZipRun

© Copyright 2000-2019 Wintempla selo. All Rights Reserved. Sep 05 2019. Home