Prikaži printer properties

Win32 api funkcije.
Odgovori
odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Prikaži printer properties

Odgovor Napisal/-a odisej » 15.03.2010 09:10:28

Nekje sem dobil tole kodo, ki prikaže printer properties. Na XP mi vse dela ok, na Visti pa je čudno. V finally padem šele, ko grem ven iz programa. Ali kdo ve v čem je keč? Rad bi pa tole okno priklical, da se pokaže, meni pa se program nadaljuje.

Koda: Izberi vse

 
function OpenPrinterProperties(const PrinterName: String): Boolean;
var
  Allocator: IMalloc;
  PrinterItemIDList: pItemIDList;
  ShellExecuteInfo: TShellExecuteInfo;
begin
  Result := False;

  if CoGetMalloc(MEMCTX_TASK, Allocator) = S_OK then
  begin
    PrinterItemIDList := GetThisPrinter(PrinterName, Allocator);
    try
      if PrinterItemIDList = nil then
        Result := False
      else
      begin
        ZeroMemory(@ShellExecuteInfo, SizeOf(TShellExecuteInfo));

        with ShellExecuteInfo do
        begin
          cbSize   := SizeOf(TShellExecuteInfo);
          fMask    := SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
          lpIDList := PrinterItemIDlist;
          lpVerb   := 'Properties';
          nShow    := SW_SHOW;
        end;

        ShellExecuteEx(@ShellExecuteInfo);
        Result := True;
      end;
    finally
      Allocator.Free(PrinterItemIDList)
    end
  end
end;
 

odisej
Prispevkov: 1363
Pridružen: 09.05.2003 12:58:10

Prikaži printer properties

Odgovor Napisal/-a odisej » 17.03.2010 13:42:37


Odgovori