MSFN Forum: Printing with KernelEx 4.5.1 - MSFN Forum

Jump to content


  • 5 Pages +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

Printing with KernelEx 4.5.1 Is ist possible to print from SumatraPDF and Firefox 3? Rate Topic: -----

#1 User is offline   diamant 

  • Newbie
  • Group: Members
  • Posts: 29
  • Joined: 27-July 09
  • OS:98SE
  • Country: Country Flag

Posted 13 February 2012 - 09:57 AM

Unfortunately I was not able to print from SumatraPDF-versions higher than 0.8.1 or from Firefox 3 with KernelEx 4.5.1 till now. :(

1.) In SumatraPDF I suppose the following problem:
In older versions one can find the command(?) "PrintDlg" with a hex-editor in its code, which seemed to be replaced by "PrintDlgEx" in newer versions (e.g. SumatraPDF 1.3).
Simply replace the string "PrintDlgEx" by the (older) "PrintDlg" with the hex-editor does not solve the problem.
One can find in the Google-code-search SumatraPDF "code history" that the new command was introduced some time ago, see e.g. here SumatraPDF at code.google.com.
Is ther any known solution for the printing issue?

Maybe it could be useful to "transport" the (old) PrintDlg-function from SumatraPDF 0.8.1 to a newer sumatraPDF-version (and replace PrintDlgEx); but I have no idea how to do this :wacko: .

2.) Has anybody ever found a solution to solve the printing-problem with Firefox 3 with KernelEx? (Maybe transport the printing-function from Firefox 2.0.0.20 to Firefox 3). Sometimes(!) printing worked with Firefox 3, but it was randomly.


#2 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 14 February 2012 - 06:48 PM

Several weeks ago I was investigating this exact problem. PrintDlgEx uses a new PRINTDLGEX parameter structure that is incompatible with PrintDlg's new PRINTDLG. If we can implement an even semi-functional PrintDlgEx, it would probably go a long way towards solving printing issues in many new apps.

KernelEx currently has a stub for PrintDlgEx that just returns an error. That stub could be rewritten to call PrintDlg, translating between parameter structures.

I think I can patch comdlg32.dll to export PrintDlgEx instead of PrintDlg and inject the needed translation code into the existing function. This patched version would no longer export PrintDlg, so would have to be stored local to the app (not in <system>); or it could be renamed comdlgex.dll and apps would need to have their imports patched to access it.

I have also been considering ways to inject the needed translation code directly into the calling app.

Another possibility is to redirect the call, not to PrintDlg, but to the custom print dialog of another (MS?) app. If we can find one that uses the new PRINTDLGEX structure, that would be ideal. Research in this area would be very helpful :yes:

MSDN: PRINTDLG
typedef struct tagPD {
  DWORD           lStructSize;
  HWND            hwndOwner;
  HGLOBAL         hDevMode;
  HGLOBAL         hDevNames;
  HDC             hDC;
  DWORD           Flags;
  WORD            nFromPage;
  WORD            nToPage;
  WORD            nMinPage;
  WORD            nMaxPage;
  WORD            nCopies;
  HINSTANCE       hInstance;
  LPARAM          lCustData;
  LPPRINTHOOKPROC lpfnPrintHook;
  LPSETUPHOOKPROC lpfnSetupHook;
  LPCTSTR         lpPrintTemplateName;
  LPCTSTR         lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLG, *LPPRINTDLG;


MSDN: PRINTDLGEX
typedef struct tagPDEX {
  DWORD            lStructSize;
  HWND             hwndOwner;
  HGLOBAL          hDevMode;
  HGLOBAL          hDevNames;
  HDC              hDC;
  DWORD            Flags;
  DWORD            Flags2;
  DWORD            ExclusionFlags;
  DWORD            nPageRanges;
  DWORD            nMaxPageRanges;
  LPPRINTPAGERANGE lpPageRanges;
  DWORD            nMinPage;
  DWORD            nMaxPage;
  DWORD            nCopies;
  HINSTANCE        hInstance;
  LPCTSTR          lpPrintTemplateName;
  LPUNKNOWN        lpCallback;
  DWORD            nPropertyPages;
  HPROPSHEETPAGE   *lphPropertyPages;
  DWORD            nStartPage;
  DWORD            dwResultAction;
} PRINTDLGEX, *LPPRINTDLGEX;


This post has been edited by jumper: 16 February 2012 - 03:15 AM


#3 User is offline   dencorso 

  • Adiuvat plus qui nihil obstat
  • Group: Super Moderator
  • Posts: 4,866
  • Joined: 07-April 07
  • OS:98SE
  • Country: Country Flag

Posted 14 February 2012 - 09:30 PM

My 2 ¢: Patch the KernelEx stub. Solves all problems, the source is available so it's easy to create a good patch, doesn't involve recompiling the original KernelEx and doesn't touch any system files. This should be the safest possible strategy, IMHO.

#4 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 15 February 2012 - 01:33 AM

Patching the KernelEx stub does nothing for those who don't use KernelEx.

Having the KernelEx stub source is only useful if I do recompile it. The safest and most efficient strategy would be to recompile rather than patch KernelEx. Since I'm still working on getting KernelEx to compile, I should probably finish that step first.

#5 User is offline   dencorso 

  • Adiuvat plus qui nihil obstat
  • Group: Super Moderator
  • Posts: 4,866
  • Joined: 07-April 07
  • OS:98SE
  • Country: Country Flag

Posted 15 February 2012 - 08:41 AM

View Postjumper, on 15 February 2012 - 01:33 AM, said:

Patching the KernelEx stub does nothing for those who don't use KernelEx.

Those who don't use KernelEx (like myself) actually also won't have any use for PrintDlgEx, AFAI can see, though...

As for you getting KernelEx to compile correctly, that's the first priority, all right, IMO too.
However, the source, when available (and in the Win 9x/ME world it almost never is) does help devise patches better too, but you don't need to agree with me about this, since here YMMV.

#6 User is online   rloew 

  • Friend of MSFN
  • PipPipPipPipPip
  • Group: Members
  • Posts: 935
  • Joined: 30-May 05
  • OS:98SE
  • Country: Country Flag

Posted 15 February 2012 - 11:25 AM

View Postjumper, on 15 February 2012 - 01:33 AM, said:

Patching the KernelEx stub does nothing for those who don't use KernelEx.

Having the KernelEx stub source is only useful if I do recompile it. The safest and most efficient strategy would be to recompile rather than patch KernelEx. Since I'm still working on getting KernelEx to compile, I should probably finish that step first.

My DLLHOOK Program can add or replace the function independently of KernelEx, but as dencorso said, it may be of limited value without KernelEx.

#7 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 15 February 2012 - 06:33 PM

As previously mentioned in the SP3 thread, six files in SP3 contain references to PrintDlgEx:
- tweakui.cpl, hypertrm.dll, mfc70.dll, mfc70u.dll, mfc71.dll, mfc71u.dll

Dependency Walker reports "Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module." in all but hypertrm.dll.

I've searched all my local exe and dll files and can't find any meaningful references to PrintDlgEx other than in mfc7*. I'm searching now for references to mfc7--if I don't find much, it might not be much of an issue for apps that don't otherwise need Kex.

mfc7 references found in:
- video2smv.exe / smv.dll
- SUPERsetup.exe
- vdm_free.exe
- avformat-52.dll (ffmpeg)



I'm on my way out the door right now--I'll post translation code for review tonight.

#8 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 16 February 2012 - 03:09 AM

MSDN - Using Common Dialog Boxes
HRESULT WINAPI PrintDlgExA (PRINTDLGEX *pPdex)
{
  PRINTDLG pd;
  pd.lStructSize = sizeof(PRINTDLG);
  pd.hwndOwner   = pPdex->hwndOwner;
  pd.hDevMode    = pPdex->hDevMode;
  pd.hDevNames   = pPdex->hDevNames;
  pd.hDC         = pPdex->hDC;
  pd.Flags       = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC; // pPdex->Flags;
  pd.nCopies     = 1;
  pd.nFromPage   = 0xFFFF; 
  pd.nToPage     = 0xFFFF; 
  pd.nMinPage    = pPdex->nMinPage;
  pd.nMaxPage    = pPdex->nMaxPage;
  pd.nCopies     = pPdex->nCopies;
  pd.hInstance   = pPdex->hInstance;
  pd.lCustData   = 0;
  pd.lpfnPrintHook = NULL;
  pd.lpfnSetupHook = NULL;
  pd.lpPrintTemplateName = pPdex->lpPrintTemplateName;
  pd.lpSetupTemplateName = NULL;
  pd.hPrintTemplate = NULL;
  pd.hSetupTemplate = NULL;

  if (PrintDlgA (&pd)) {
    pPdex->dwResultAction = 1; // Print
    //pPdex->lStructSize;
    //pPdex->hwndOwner;
    pPdex->hDevMode       = pd.hDevMode;
    pPdex->hDevNames      = pd.hDevNames;
    pPdex->hDC            = pd.hDC;
    //pPdex->Flags;
    //pPdex->Flags2;
    //pPdex->ExclusionFlags;
    pPdex->nPageRanges    = 0;
    pPdex->nMaxPageRanges = 0;
    pPdex->lpPageRanges   = NULL;
    pPdex->nMinPage       = pd.nMinPage;
    pPdex->nMaxPage       = pd.nMaxPage;
    pPdex->nCopies        = pd.nCopies;
    //pPdex->hInstance;
    //pPdex->lpPrintTemplateName;
    //pPdex->lpCallback;
    //pPdex->nPropertyPages;
    //pPdex->*lphPropertyPages;
    //pPdex->nStartPage;
  } else {
    pPdex->dwResultAction = 0; // Cancel
  }
  return 0; // S_OK;
}


I haven't researched and doubled checked every field yet--some are guesses. What am I missing before I try to compile it?

Does anyone know if PRINTDLG is packed? If so, all DWORDs after the five WORDs are misaligned!

#9 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 25 February 2012 - 05:39 AM

I've been working hard on this problem and should have a major announcement by tonight (bigger than just PrintDlgEx). :yes:

<edit>
Today didn't go as planned and I've been away from my computer all day. So here's a sneak preview: fwd.
</edit>

This post has been edited by jumper: 26 February 2012 - 03:25 AM


#10 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 01 March 2012 - 06:33 PM

For the brave, here is a COMDLG32.DLL with PrintDlgExA:
<attachment removed>

Extract COMDLG32.DLL and ComDlgEx.dll into <system>, or put them in a test app's local folder and remove COMDLG32.DLL from KnownDLLs.

COMDLG32.DLL was extended with fwd.02 (now working, not posted yet).

The PrintDlgExA sources (.c + .def) for ComDlgEx.dll are included.

I have high confidence in the validity of the export forwarding in this COMDLG32.DLL (Dependency Walker and PEinfo both like it). The structure translation in PrintDlgExA should be good enough to yield positive results.

There were seven downloads before I decided to remove the attachment--if anyone has any results at all, please give us all a report! :hello:

This post has been edited by jumper: 04 March 2012 - 11:54 PM


#11 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 05 March 2012 - 12:17 AM

I downloaded SumatraPDF 0.9 to test with, but couldn't get past the "missing export COMDLG32.DLL:PrintDlgExA" message.

My system also became unstable each time I tried the extended COMDLG32, so I've removed the attachment from the previous message pending a complete design review.

If it turns out that export-forwarding is an NT-only DLL feature that isn't implemented in the 9x loader...then we'll just have to extend the 9x loader! :lol:

Since this method was actually something like plan C, I can still go back to plan B (direct function injection). B)

#12 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 07 March 2012 - 06:28 PM

Plan D: ComDlgEx.7z
  • ComDlgEx.dll
  • ComDlgEx.reg

SumatraPDF 0.9 now loads without Kex, but run with Kex to get past ComCtl32 issues.

ComDlgEx.reg
REGEDIT4

;Installation:
; 1) Place ComDlgEx.dll in <winsys> folder
; 2) Copy COMDLG32.DLL to COMDLG99.DLL
; 3) Merge this file into the registry

;Uninstallation:
; 1) Edit comments below and remerge
; 2) Delete COMDLG99.DLL and ComDlgEx.dll

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs]
"COMDLG32"="ComDlgEx.DLL"
;"COMDLG32"="COMDLG32.DLL"
;"COMDLG32"=-


ComDlgEx.def
;LIBRARY  ComDlg32

EXPORTS
  xyz=COMDLG99.@100  @100 NONAME
  ChooseColorA=COMDLG99.ChooseColorA  @101
  ChooseColorW=COMDLG99.ChooseColorW  @102
  ChooseFontA=COMDLG99.ChooseFontA  @103
  ChooseFontW=COMDLG99.ChooseFontW  @104
  CommDlgExtendedError=COMDLG99.CommDlgExtendedError  @105
  FindTextA=COMDLG99.FindTextA  @106
  FindTextW=COMDLG99.FindTextW  @107
  GetFileTitleA=COMDLG99.GetFileTitleA  @108
  GetFileTitleW=COMDLG99.GetFileTitleW  @109
  GetOpenFileNameA=COMDLG99.GetOpenFileNameA  @110
  GetOpenFileNameW=COMDLG99.GetOpenFileNameW  @111
  GetSaveFileNameA=COMDLG99.GetSaveFileNameA  @112
  GetSaveFileNameW=COMDLG99.GetSaveFileNameW  @113
  LoadAlterBitmap=COMDLG99.LoadAlterBitmap  @114
  PageSetupDlgA=COMDLG99.PageSetupDlgA  @115
  PageSetupDlgW=COMDLG99.PageSetupDlgW  @116
  PrintDlgA=COMDLG99.PrintDlgA  @117
  PrintDlgW=COMDLG99.PrintDlgW  @118
  ReplaceTextA=COMDLG99.ReplaceTextA  @119
  ReplaceTextW=COMDLG99.ReplaceTextW  @120
  WantArrows=COMDLG99.WantArrows  @121
  dwLBSubclass=COMDLG99.dwLBSubclass  @122
  dwOKSubclass=COMDLG99.dwOKSubclass  @123
  PrintDlgExA  @124


PrintDlgExA.c
Spoiler



This version was stable (six days). It redirected PrintDlgExA to PrintDlgA and operated as expected if the dialog was cancelled, but did not print.

This post has been edited by jumper: 13 March 2012 - 05:10 PM


#13 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

  Posted 13 March 2012 - 05:28 PM

Working solution: Attached File  ComDlg32.7z (1000bytes)
Number of downloads: 32

  • Place ComDlg32.dll in app folder.
  • In <winsysdir>, copy original COMDLG32.DLL to COMDLG00.DLL.
  • Remove any COMDLG32 redirections in KnownDLLs.

Should print to printer.
Print to file not implemented yet in SumatraPDF 0.9.

PrintDlgExA.c source:
Spoiler

This post has been edited by jumper: 14 March 2012 - 02:54 AM


#14 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 16 March 2012 - 03:45 PM

Installation clarification using SeaMonkey as an example:

Q) Where in the SeaMonkey folder should I place the dll? I find dll's in almost every folder there.

A) Place a copy of my ComDlg32.dll in the folder containing SeaMonkey.exe. Also, search for text "PrintDlgEx" in SeaMonkey's top folder using Find. Place a copy in the folder of each file that contains a reference to "PrintDlgEx".

Q) Should I rename comdlg32.dll to comdlg00.dll and NOT replace the original windows one with your dll? So, Windows does not have this file at all?

A) Copy (do not Rename) the original ComDlg32.dll:
  • Right-click on the original ComDlg32.dll, drag until [+] appears and release, then select "Copy Here".
  • Rename the new copy "ComDlg00.dll".

The original ComDlg32.dll remains for all other programs to continue using.

#15 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 19 March 2012 - 04:32 PM

Three ways to install the ComDlg32.dll update:

  • In <system> folder (affects all applications including OS):
    • rename to ComDlgEx.dll and place in <system> folder
    • do one of the following:

    • DOS method
      • exit to DOS and cd to <system> folder
      • rename COMDLG32.DLL to COMDLG00.DLL
      • rename COMDLGEX.DLL to COMDLG32.DLL

    • KnownDLLs method:
      • copy <system>\ComDlg32.dll to <system>\ComDlg00.dll
      • merge into registry:
        REGEDIT4
        
        [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs]
        "COMDLG32"="ComDlgEx.DLL" 
        

  • In <windows>\KernelEx folder (affects only KernelEx-enabled applications):
    • place in <windows>\KernelEx folder
    • copy <system>\ComDlg32.dll to <system>\ComDlg00.dll
    • merge into registry:
      REGEDIT4
      
      [HKEY_LOCAL_MACHINE\Software\KernelEx\KnownDLLs]
      "COMDLG32"="ComDlg32.dll"
      

  • In specific application/DLL folders (affects only those EXEs/DLLs):
    • place in folder of EXE or DLL that references PrintDlgExA
    • copy <system>\ComDlg32.dll to <system>\ComDlg00.dll
    • remove any global redirection from registry:
      REGEDIT4
      
      [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\KnownDLLs]
      "COMDLG32"=-
      


Note: To modify registry, save boxed text as new.reg, right-click and select 'Merge'; or use RegEdit.

#16 User is offline   schwups 

  • schwups
  • PipPip
  • Group: Members
  • Posts: 273
  • Joined: 11-November 09
  • OS:ME
  • Country: Country Flag

Posted 20 March 2012 - 01:56 PM

Hello jumper,




I tried your second way  to update without success on two ME machines (KernelEX 4.5.2). First I pasted your ComDlg32.dll file in the KernelEX folder. Then I copied the original WinME COMDLG32.dll to the desktop and renamed the copy  to ComDlg00.dll. I pasted ComDlg00.dll in the system folder. So that there are both files in the system folder. At last I added the string ([HKEY_LOCAL_MACHINE\Software\KernelEx\KnownDLLs]"COMDLG32"="ComDlg32.dll") to the registry.  What's wrong? 

SumatraPDF 1.9: Error message - sumatrapdf.exe is linked to missing export-COMDLG32.DLL:PrintDlgExW.   Sumatra doesn't run. And I can't print with Seamonkey. 

If it makes sense I will try ways one and three.



#17 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 20 March 2012 - 05:53 PM

View Postschwups, on 20 March 2012 - 01:56 PM, said:

I tried your second way to update without success on two ME machines (KernelEX 4.5.2). First I pasted your ComDlg32.dll file in the KernelEX folder. Then I copied the original WinME COMDLG32.dll to the desktop and renamed the copy to ComDlg00.dll. I pasted ComDlg00.dll in the system folder. So that there are both files in the system folder. At last I added the string ([HKEY_LOCAL_MACHINE\Software\KernelEx\KnownDLLs]"COMDLG32"="ComDlg32.dll") to the registry. What's wrong?

SumatraPDF 1.9: Error message - sumatrapdf.exe is linked to missing export-COMDLG32.DLL:PrintDlgExW. Sumatra doesn't run. And I can't print with Seamonkey.

This update currently only addresses the missing PrintDlgExA function in ComDlg32.dll. Try testing with SumatraPDF 0.9 instead.

With Seamonkey loaded, try deleting <system>\ComDlg00.dll. If you get a file-in-use error, that will confirm that the new ComDlg32.dll is correctly installed and in use.

Does Seamonkey display a Print Dialog at all? If not, Seamonkey must not be calling PrintDlgExA and has another issue not addressed by this update. Please search the Seamonkey folder for files with text "PrintDlgExA". If none are found, Seamonkey cannot be used to test this update. Instead, use ImportPatcher to test Seamonkey for missing imports and post results here. Thanks!

Tonight I will try to implement PrintDlgExW and update the update.

#18 User is offline   loblo 

  • Oldbie
  • PipPipPipPip
  • Group: Members
  • Posts: 679
  • Joined: 12-January 10
  • OS:ME
  • Country: Country Flag

Posted 20 March 2012 - 06:03 PM

View Postschwups, on 20 March 2012 - 01:56 PM, said:

SumatraPDF 1.9: Error message - sumatrapdf.exe is linked to missing export-COMDLG32.DLL:PrintDlgExW.   Sumatra doesn't run. And I can't print with Seamonkey. 

Either hex the string PrintDlgExW to the string PrintDlgExA in SumatraPDF or the string PrintDlgExA to the string PrintDlgExW in jumper's comdlg32.dll and it should work after that with any method. :lol:

#19 User is offline   loblo 

  • Oldbie
  • PipPipPipPip
  • Group: Members
  • Posts: 679
  • Joined: 12-January 10
  • OS:ME
  • Country: Country Flag

Posted 20 March 2012 - 06:36 PM

Seamonkey (2.7) appears to use the function PrintDlgW and it prints fine here (to adobe pdf writer as I don't have a real printer installed right now).

However it doesn't seem to print anymore if it uses jumper's comdlg32 so I think the recommended way to use it now should be on a per application basis and remove the comdlg32 entry in the system knowndll registry key.

#20 User is offline   jumper 

  • Masters HJ/TJ'er (back in training)
  • PipPipPip
  • Group: Members
  • Posts: 361
  • Joined: 21-January 11
  • OS:98SE
  • Country: Country Flag

Posted 20 March 2012 - 10:11 PM

View Postloblo, on 20 March 2012 - 06:36 PM, said:

Seamonkey (2.7) appears to use the function PrintDlgW and it prints fine here (to adobe pdf writer as I don't have a real printer installed right now).

A Google search for "SeaMonkey +PrintDlgW" yields antivirus scans showing that SeaMonkey 1.9 and 5.0 use PrintDlgW. :thumbup And Firefox 9.0 too!

View Postloblo, on 20 March 2012 - 06:36 PM, said:

However it doesn't seem to print anymore if it uses jumper's comdlg32 so I think the recommended way to use it now should be on a per application basis and remove the comdlg32 entry in the system knowndll registry key.

Method 2 seems to cause Kex to bypass its internal ComDlg32 support. Methods 1 and 3 should be complementary to Kex--use one of them with the current ComDlg32 update to prevent apps that need PrintDlgExW from failing to load.

This is excellent feedback. It made me realize that if I add a stub for PrintDlgExW that returns success instead of failure (as Kex does), the default parameters will be used unchanged and something might print for those apps (like SumatraPDF 1.9) that need PrintDlgExW!

Share this topic:


  • 5 Pages +
  • 1
  • 2
  • 3
  • Last »
  • You cannot start a new topic
  • You cannot reply to this topic

2 User(s) are reading this topic
0 members, 2 guests, 0 anonymous users



All trademarks mentioned on this page are the property of their respective owners
Copyright © 2001 - 2013 msfn.org
Privacy Policy