Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 09-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Ya lo tengo y ahora si que está todo completo.
Después de la instrucción de la función:
Código Delphi [-]
// Cerramos el monitor
      PdfCreator.cClose;
Se debe hacer la llamada a la función con esta sintaxis:
Código Delphi [-]
KillTask('PDFCreator.exe')

Y a continuación escribo la función:

Código Delphi [-]
uses
  Tlhelp32;

(...)

function KillTask(ExeFileName: string): Integer;
const
  PROCESS_TERMINATE = $0001;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
  Result := 0;
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

  while Integer(ContinueLoop) <> 0 do
  begin
    if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
      UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =
      UpperCase(ExeFileName))) then
      Result := Integer(TerminateProcess(
                        OpenProcess(PROCESS_TERMINATE,
                                    BOOL(0),
                                    FProcessEntry32.th32ProcessID),
                                    0));
     ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

Esta función KillTask (me encanta el nombre ), sirve para la eliminación de cualquier proceso que se esté ejecutando en el sistema, si sabes que exe lo lanza.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
  #22  
Antiguo 10-03-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
En mi opinión, esto no es algo bueno para hacer; digamos que no es "educado". La impresora virtual puede estar siendo usada por otros procesos y tú simple y llanamente la matas junto con todo lo que estuviera haciendo. A decir verdad, es lo mismo que estaba haciendo yo .

No sé bien porqué no te funciona imprimir un documento después de otro pues no observé errores. Sin embargo, he puesto en el FTP un ejemplo algo más currado, como dicen por allá en España.

Se trata del componente TPDFCreator que tiene un sólo método (CreateFile) para generar el archivo y un sólo evento (OnPrint) en donde pones el código con el que produzcas la impresión. De esta manera, puedes reusarlo para diversas impresiones.

Junto con el componente, viene una demo en la que podrás ver, además, como poner a tu documento propiedades como autor, título y tema, así como protegerlo con contraseña.

El archivo incluye un paquete (ClubDelphi.dpk) listo para instalar el componente.

Pd: Se me olvidaba comentar que el componente se fija si la impresora ya está trabajando y, en tal caso, no intenta cerrarla.

// Saludos

Última edición por roman fecha: 10-03-2012 a las 02:31:30.
Responder Con Cita
  #23  
Antiguo 12-03-2012
Avatar de Cabanyaler
Cabanyaler Cabanyaler is offline
Miembro
 
Registrado: jun 2003
Ubicación: País Valencià
Posts: 339
Poder: 21
Cabanyaler Va por buen camino
Magnifico Román.
He utilizado tu componente y funciona perfecto, simplificando aún más el código.

Nota:
Cuando realizamos la asignación de la impresora como impresora determinada de Windows con la instrucción:
Código Delphi [-]
Printer.PrinterIndex := PrinterIndex;
Debemos del mismo modo asignarla al Quikreport (si es el caso), con la siguiente instrucción
Código Delphi [-]
NombreQuickReport.PrinterSettings.PrinterIndex := PrinterIndex;

Espero esto sirva a tanta gente como neuronas he quemado estos últimos días.
__________________
El meu país és tan petit, que des de dalt d'un campanar es pot veure el campanar veí.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Al pulsar Enter en un boton funciona como Tabulador weke OOP 8 12-09-2011 19:04:01
Pulsar un Botón de una página web. imossa Internet 4 04-05-2007 10:21:01
Capturar teclado o pulsar botón mientas se recorre un bucle Duc Varios 2 31-10-2006 12:14:33
Evento que se ejecuta al Pulsar el boton de Minimizar de una Forma AGAG4 Varios 2 09-10-2004 17:31:38
Pulsar botón y que cambien los números ciscu Varios 2 10-06-2004 20:51:03


La franja horaria es GMT +2. Ahora son las 17:14:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi