home *** CD-ROM | disk | FTP | other *** search
/ Programming Tool Box / SIMS_2.iso / vb_code2 / p_setup / psetup.pas < prev    next >
Pascal/Delphi Source File  |  1992-11-12  |  2KB  |  70 lines

  1. { This DLL Source code is provided as a sample to show how to write DLL's for
  2.   Visual Basic as well as Turbo Pascal for Windows }
  3.  
  4. { Provided by Joe Palmer
  5.   Balto., Md }
  6.  
  7. Library Psetup;
  8.  
  9. Uses WinTypes, WinProcs, WObjects, Strings;
  10.  
  11. Type
  12.     TDeviceMode =
  13.       Procedure(HWindow: HWnd; Module: THandle;
  14.         DeviceName, OutPutName: PChar);
  15.  
  16.     TExtDeviceMode =
  17.       function(Hwindow: HWnd; Hdriver: THandle; DevModeOutPut: PDevMode;
  18.         DeviceName, PortName: PChar; DevModeInput: PDevMode;
  19.         ProFile: PChar; Mode: Word):Integer;
  20.  
  21. Var
  22.   DeviceMode: TDeviceMode;
  23.   ExtDeviceMode: TExtDeviceMode;
  24.  
  25. Procedure CallPsetup(HWindow: HWnd; DriverName: PChar; DeviceName:PChar; PortName: PChar; OutPutName: PChar); export;
  26. Var
  27.   HDriver: THandle;
  28.   DevModeOutput: PDevMode;
  29.   DevModeInPut: PDevMode;
  30.   P: TfarProc;
  31.   Size: Integer;
  32. begin
  33.   if (StrLen(DriverName)= 0) or (StrLen(OutPutName) = 0) then
  34.     begin
  35.       MessageBox(HWindow, 'No Printer Installed', 'Error', mb_Ok);
  36.       Exit;
  37.     end;
  38.   HDriver:= LoadLibrary(DriverName);
  39.   if HDriver < 32 then
  40.     MessageBox(HWindow, 'Failed to load driver', 'Error', mb_IconExclamation or mb_ok)
  41.   else
  42.     begin
  43.       p:= GetProcAddress(HDriver, 'ExtDeviceMode');
  44.       if p <> nil then
  45.         begin
  46.           ExtDeviceMode:= TExtDeviceMode(p);
  47.           Size:= ExtDeviceMode(Hwindow, Hdriver, nil, DeviceName, OutputName, nil, nil, 0);
  48.           GetMem(DevModeOutPut, Size);
  49.           GetMem(DevModeInput, Size);
  50.           ExtDeviceMode(Hwindow, HDriver, DevModeOutput, DeviceName, PortName, DevModeInPut, nil, dm_Prompt or dm_Copy
  51.                          or dm_UpDate) ;
  52.           FreeMem(DevModeOutput, Size);
  53.           FreeMem(DevModeInput, Size);
  54.         end Else
  55.         begin
  56.           P:= GetProcAddress(HDriver, 'DeviceMode');
  57.           if P <> nil then
  58.             begin
  59.               DeviceMode:= TDeviceMode(P);
  60.               DeviceMode(HWindow, HDriver, DeviceName, OutputName)
  61.             end
  62.           end;
  63.           FreeLibrary(HDriver);
  64.         end;
  65.       end;
  66.      Exports
  67.        CallPSetup index 1;
  68.      begin
  69.      end.
  70.