Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-12-2012
Basi Basi is offline
Miembro
 
Registrado: Sep 2012
Posts: 10
Poder: 0
Basi Va por buen camino
Abrir programa y mandar imprimir

Hola a todos espero esten bien, entrando en el tema a que tengo mi duda es como mandar imprimir ya una ves que ya este abierto el programa para explicarme bien lo que quiero hacer es despues que habra el pain me lleve a archivo y de hay imprimir me quede en la parte de abril el pain este es mi codigo

Código Delphi [-]
procedure TForm1.PainPanelClick(Sender: TObject);
begin
  ShellExecute (Handle,'open','mspaint.exe', nil, nil,  SW_SHOWNORMAL);
end;

Espero me puedan ayudar o darme uma idea de como hacerlo ah soy nuevo en esto.

Última edición por dec fecha: 04-12-2012 a las 15:53:11.
Responder Con Cita
  #2  
Antiguo 04-12-2012
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: Apr 2006
Ubicación: México D.F.
Posts: 927
Poder: 13
Faust Va por buen camino
Bueno, pues al parecer te falta abrir el archivo, en este caso creo que debes poner la ruta del archivo en el parámetro lpParameters de la función ShellExecute, o en el parámetro lpFile si el archivo de imagen ya está asociado al mspaint, así como la instrucción print, ahí te van los ejemplos:

Si la imagen está asociada a mspaint... sino la imprimirá con el programa asociado

Código Delphi [-]
procedure TForm1.PainPanelClick(Sender: TObject); 
  begin
    ShellExecute (Handle,'print','c:\imagen.bmp', nil, nil,  SW_HIDE);
  end;

De este no estoy seguro, pero debería abrir el archivo e imprimirlo

Código Delphi [-]
procedure TForm1.PainPanelClick(Sender: TObject);
  begin
    ShellExecute (Handle,'print','mspaint.exe', nil, 'c:\imagen.bmp',  SW_SHOWNORMAL);
  end;

Te dejo esto para qe lo cheques http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 04-12-2012
Basi Basi is offline
Miembro
 
Registrado: Sep 2012
Posts: 10
Poder: 0
Basi Va por buen camino
Faust,

Gracias por reponder y dar tus ejemplos en estos momento lo voy a poner a prueba pero me conformaria con que abriera por lo menos el menu de imprimir bueno gracias otra vez
Responder Con Cita
  #4  
Antiguo 04-12-2012
Basi Basi is offline
Miembro
 
Registrado: Sep 2012
Posts: 10
Poder: 0
Basi Va por buen camino
hola a todos disculpen pero no eh dado aun con lo que menciopnado arriba eh estado probando algunas formas y nada si alguien me puede dar otra idea mas clara se lo agradeceria..
Responder Con Cita
  #5  
Antiguo 05-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: Feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 15
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Basi,

ShellExecuteEx es la versión extendida de ShellExecute.

Revisa este código:
Código Delphi [-]
function ShellExecute_AndWait(Operation, FileName, Parameter, Directory: string;
                              Show: Word; bWait: Boolean): Longint;
var
  FResult: Boolean;
  Info: TShellExecuteInfo;

begin
  FillChar(Info, SizeOf(Info), Chr(0));
  Info.cbSize := SizeOf(Info);
  Info.fMask := SEE_MASK_NOCLOSEPROCESS;
  Info.lpVerb := PChar(Operation);
  Info.lpFile := PChar(FileName);
  Info.lpParameters := PChar(Parameter);
  Info.lpDirectory := PChar(Directory);
  Info.nShow := Show;
  FResult := ShellExecuteEx(@Info);
  if FResult then
  begin
    if bWait then
    begin
      while
        WaitForSingleObject(Info.hProcess, 100) = WAIT_TIMEOUT
        do Application.ProcessMessages;
      FResult := GetExitCodeProcess(Info.hProcess, DWORD(Result));
    end
    else
      Result := 0;
  end;
  if not FResult then Result := -1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ShellExecute_AndWait('print','msPaint','d:\image1.bmp','',SW_SHOWNORMAL,False);
end;
Al ejecutar el código anterior se muestra el siguiente mensaje:
Cita:
This file does not have a program associated with it for performing this action. Please install a program or, if one is already, create an association in the Default Programs control panel.
Conclusión: MsPaint no soporta la impresión vía parámetros, debes buscar un programa que la soporte y luego puedes imprimirlo por medio del siguiente código:
Código Delphi [-]
   ShellExecute(Handle,'print','d:\image1.bmp', nil, nil, SW_SHOWNORMAL);
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 05-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.064
Poder: 29
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Basi.

Para imprimir un archivo de imágen:
Código Delphi [-]
  
  ShellExecute(Handle 'open', 'mspaint', ' /p C:\Carpeta\SubCarpeta\Nombre.JPG', nil, SW_HIDE);
Es necesario que haya un espacio entre el nombre del ejecutable (mspaint) y la línea de comandos, por eso esta debe empezar por uno.

Solamente encontré el switch '/p' para imprimir y '/pt Nombre_impresora' para seleccionar la impresora (este último no lo probé). Pero ninguno que permita presentar el menu de impresión como solicitas en el mensaje #3.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 05-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: Feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 15
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Basi,

Cita:
Empezado por nlsgarcia:
MsPaint no soporta la impresión vía parámetros.
Corrección: Mspaint no soporta la operación Print de ShellExecute.

Nota:
La operación print de ShellExecute, imprime el archivo especificado por lpFile. Si lpFile no es un documento la función falla.

Puedes imprimir la imagen con ShellExecute como indico ecfisa.

Espero sea útil

Nelson.
Responder Con Cita
  #8  
Antiguo 05-12-2012
Basi Basi is offline
Miembro
 
Registrado: Sep 2012
Posts: 10
Poder: 0
Basi Va por buen camino
hola Ecfisa y NslGarcia

Ya hice algunas pruebas y adapte el codigo para la impresion de la imagen y me funciono bien y sobre el mensaje #3 eso era lo que queria hacer el principio que cuando abriera un programa luego llamar un menu del mismo y luego de ese menu abierto me ejecutara una funcion o eligiera algo asi como un atajo, pero por lo visto es un poco mas complicado de lo que me imaginaba bueno voy a seguir buscando una u otra forma pero con lo que dijo Ecfisa creo que no hay metodo para hacer eso si consigo algo lo publicare por aca saludos a todos que pasen por este hilo....
Responder Con Cita
  #9  
Antiguo 05-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: Feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 15
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Basi,

Cita:
Empezado por Basi
mi duda es como mandar imprimir ya una ves que ya este abierto el programa para explicarme bien lo que quiero hacer es despues que habra el pain me lleve a archivo y de hay imprimir
Cita:
Empezado por Basi
me conformaria con que abriera por lo menos el menu de imprimir
Cita:
Empezado por Basi
sobre el mensaje #3 eso era lo que queria hacer el principio que cuando abriera un programa luego llamar un menu del mismo y luego de ese menu abierto me ejecutara una funcion o eligiera algo asi como un atajo
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Printers, ShellAPI;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   printDialog : TPrintDialog;
   openDialog : TOpenDialog;
   Parameters : String;

begin
   openDialog := TOpenDialog.Create(self);
   openDialog.InitialDir := GetCurrentDir;
   openDialog.Options := [ofFileMustExist];
   openDialog.Filter := 'Archivos BMP|*.bmp';
   openDialog.FilterIndex := 1;

   if openDialog.Execute then
   begin
      printDialog := TPrintDialog.Create(Self);
      if printDialog.Execute then
      begin
         Parameters := ' /p ' + '"' + openDialog.FileName + '"' + ' /pt ' + '"' + Printer.Printers[Printer.PrinterIndex] + '"';
         ShellExecute(Handle, 'open', 'mspaint', Pchar(Parameters), nil, SW_HIDE);
      end
   end;

   openDialog.Free;
   printDialog.Free

end;

end.
El código anterior permite seleccionar la impresora y el archivo a imprimir de tipo BMP por medio de los componentes TOpenDialog y TPrintDialog y realizar la impresión con MsPaint por medio de ShellExecute.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 05-12-2012 a las 21:26:43.
Responder Con Cita
  #10  
Antiguo 05-12-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.064
Poder: 29
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Se que derrapo a la banquina y que no tiene nada que ver con mspaint, pero ... ¿ Y si directamente imprimis la imágen desde Delphi ?

Código Delphi [-]
...
implementation

uses Printers, jpeg;

procedure Imprimir(const aFileName: string; const Copias: Integer);
var
  X,Y: Integer;
  R  : TRect;
  i  : Integer;
begin
  with TPicture.Create do
  try
    LoadFromFile(aFileName);
    with Printer do
    begin
      for i:= 1 to Copias do
      begin
        BeginDoc;
        X:= GetDeviceCaps(Handle, logPixelsX) div Screen.PixelsPerInch;
        Y:= GetDeviceCaps(Handle, logPixelsY) div Screen.PixelsPerInch;
        R:= Rect(0, 0, Width * X, Height * Y);
        Canvas.StretchDraw(R, Graphic);
        EndDoc
      end
    end
  finally
    Free
  end
end;

procedure TForm1.btnPrintClick(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
  begin
    if PrintDialog1.Execute then
      Imprimir(OpenPictureDialog1.FileName, PrintDialog1.Copies);
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Mandar llamar a otro programa desde delphi7 mar_a Varios 11 09-09-2010 17:23:10
Mandar el programa a la barra de tareas ledesma78 Varios 1 18-11-2007 05:50:34
problema al mandar imprimir nosferatu177 Impresión 15 06-07-2007 17:24:11
Mandar a Imprimir un PDF ludan508 Impresión 1 15-11-2006 11:14:51
abrir outlook desde mi aplicacion y mandar varios correos federiconqn21 Varios 2 20-09-2006 03:56:39


La franja horaria es GMT +2. Ahora son las 21:30:34.


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