Mega Code Archive

 
Categories / Delphi / Printing
 

Changing windows default printer in code

Question: How do I change the default Windows printer? Answer: You need to change the printer, driver, and port as listed in the device key of the Windows section in the Windows.ini file, then broadcast a system wide WM_WININICHANGE message. Example: procedure TForm1.Button1Click(Sender: TObject); var WinIni : TIniFile; WinIniFileName : array[0..MAX_PATH] of char; s : array[0..64] of char; begin GetWindowsDirectory(WinIniFileName, sizeof(WinIniFileName)); StrCat(WinIniFileName, '\win.ini'); WinIni := TIniFile.Create(WinIniFileName); try WinIni.WriteString('windows', 'device', 'HP LaserJet Series II,HPPCL,LPT1:'); finally WinIni.Free; end; StrCopy(S, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S)); end;