[Delphi] ImageView_PrintTo - jak to działa/jak wywołać

0

Mam taki oto problem

var   FFileName: String;
begin
FFileName := 'c:\1.jpg';
ShellExecute(Handle,PChar('open'),PChar('rundll32.exe'),PChar('C:\Windows\System32\shimgvw.dll,ImageView_Fullscreen '+ FFileName), nil, SW_NORMAL);

Powyższa linia działa bez problemu :-)

Obraz uruchamia się w podglądzie obrazów i faksów systemu Windows
ale ..........
ShellExecute(Handle,PChar('open'),PChar('rundll32.exe'),PChar('C:\Windows\System32\shimgvw.dll,ImageView_PrintTo ' + FFileName), nil, SW_NORMAL);
Już nie działa
Chciałbym użyć kreatora drukowania dostępnego pod Windows ale nie wiem jak go wywołać

Próbowałem

ShellExecute(Handle,'open','rundll32.exe',' C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt','C:\1.jpg',SW_SHOWMAXIMIZED);
ShellExecute(Handle,'open','C:\WINDOWS\system32\shimgvw.dll','ImageView_PrintTo /pt C:\1.jpg',nil,SW_SHOWMAXIMIZED);
ShellExecute(Handle,'open','rundll32.exe','C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt C:\1.jpg',nil,SW_SHOWNORMAL);

WinExec(PChar('rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt C:\1.jpg'),SW_ShowNormal);

Drukowanie plików graficznych wywoływane jest za pomocą polecenia
rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt "%1" "%2" "%3" "%4"

Ktoś wie co jest nie tak ???

0

Bo ImageView_PrintTo wymaga co najmniej dwóch argumentów.

Google' napisał(a)

Causes the Windows Picture and Fax viewer to print the image to a specified printer.
%1 The name of the file to print "C:\Program Files\Media\My Pic.png"
%2 The name of the printer to print to "hp deskjet 960c series
%3 Legacy for Windows 3.x - Not used
%4 Legacy for Windows 3.x - Not used

poszukaj na google dokładniejszego opisu, a jest tego masa

0

Listę drukarek pobrałem do ComboBoxa poleceniem (po dodaniu do uses Printers)

cb_Drukarki.Clear;
cb_Drukarki.Items.AddStrings(Printer.Printers);

Działa pięknie

Domyślna drukarka:
cb_Drukarki.ItemIndex := cb_Drukarki.Items.IndexOf(Printer.Printers[Printer.PrinterIndex]);
Działa pięknie :-)

//uruchomienie kreator drukowania
ShellExecute(Handle,
             'open',
             'rundll32.exe',
             PChar('shimgvw.dll,ImageView_PrintTo /pt "' + FFileName + '" "' + cb_Drukarki.Text + '"'),
             nil, SW_NORMAL);

Też działa ale .............

Nie działa tak jak chciałbym do końca
Po wywołaniu tej procedury rozpoczyna się automatycznie drukowanie pliku a ja chciałbym aby uruchamiał się kreator drukowania tak jak to jest w Windowsie zrobione.

W prawdzie dziękuję angel2953 za podpowiedź bo bez tego nie ruszyłbym wcale ale może ktoś wie jeszcze jak wywołać okno kreatora ...........

1 użytkowników online, w tym zalogowanych: 0, gości: 1