Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account


Photo

Printing with KernelEx 4.5.1

- - - - -

  • Please log in to reply
82 replies to this topic

#1
diamant

diamant

    Newbie

  • Members
  • 38 posts
  • OS:98SE
  • Country: Country Flag
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.


How to remove advertisement from MSFN

#2
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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;

Edited by jumper, 16 February 2012 - 03:15 AM.


#3
dencorso

dencorso

    Adiuvat plus qui nihil obstat

  • Super Moderator
  • 5,539 posts
  • OS:98SE
  • Country: Country Flag

Donator

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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
dencorso

dencorso

    Adiuvat plus qui nihil obstat

  • Super Moderator
  • 5,539 posts
  • OS:98SE
  • Country: Country Flag

Donator

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
rloew

rloew

    MSFN Expert

  • Members
  • PipPipPipPipPipPip
  • 1,069 posts
  • OS:98SE
  • Country: Country Flag

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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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>

Edited by jumper, 26 February 2012 - 03:25 AM.


#10
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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:

Edited by jumper, 04 March 2012 - 11:54 PM.


#11
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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.

Edited by jumper, 13 March 2012 - 05:10 PM.


#13
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
Working solution: Attached File  ComDlg32.7z   1000bytes   35 downloads

  • 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

Edited by jumper, 14 March 2012 - 02:54 AM.


#14
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
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
schwups

schwups

    schwups

  • Members
  • PipPipPip
  • 400 posts
  • OS:ME
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag

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
loblo

loblo

    Oldbie

  • Members
  • PipPipPipPipPip
  • 728 posts
  • OS:ME
  • Country: Country Flag

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
loblo

loblo

    Oldbie

  • Members
  • PipPipPipPipPip
  • 728 posts
  • OS:ME
  • Country: Country Flag
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
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag

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!

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!

#21
snuz2

snuz2

    Junior

  • Members
  • Pip
  • 54 posts
  • OS:98SE
  • Country: Country Flag
I can confirm it works with Sumatra 1.8. I placed the translation dll in the folder with sumatra, cloned the comdlg32 in \system and removed the reference from "known dlls" in the registry. I hexed the translation dll to replace PrintDlgExA with PrintDlgExW.

I tried it with Sumatra 1.1 and didn't have much luck, flagrant abuse of memory ensued and I don't think I got a readable output in several tries. But it did link up okay :yes: :}

I don't think this has anything to do with Mozilla apps though, they always pop the print dialog, just output mostly blank pages....

Edit// the previous post in the thread popped up as i wrote this, sorry for the duplication.

Edited by snuz2, 20 March 2012 - 11:00 PM.


#22
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag
Two better versions to try: Attached File  ComDlgEx.7z   1.32KB   39 downloads

  • ComDlgEx.dll - supports all three new functions:
    • PrintDlgExA - uses PRINTDLGA struct to call PrintDlgA
    • PrintDlgExW - uses PRINTDLGW struct to call PrintDlgW
    • Ssync_ANSI_UNICODE_Struct_For_WOW - stub: SetLastError(ERROR_CALL_NOT_IMPLEMENTED)
  • ComDlgEx2.dll - as before, but support for both flavors
    • PrintDlgExA - uses PRINTDLGA struct to call PrintDlgA
    • PrintDlgExW - redirects to PrintDlgExA
Recommended installation method: 1b.

#23
snuz2

snuz2

    Junior

  • Members
  • Pip
  • 54 posts
  • OS:98SE
  • Country: Country Flag
Yeah, good idea, put all them in there! I notice that the other dialogs like save and open are broken now... I used method 3 to install. Any way to get them to map through to comdlg00 as well?

Sorry for my ignorance but what does Ssync_ANSI_UNICODE_Struct_For_WOW - stub: SetLastError(ERROR_CALL_NOT_IMPLEMENTED) do for us?

Edited by snuz2, 21 March 2012 - 11:45 PM.


#24
jumper

jumper

    2014 All-American Masters HJ'er

  • Members
  • PipPipPip
  • 460 posts
  • OS:98SE
  • Country: Country Flag

Yeah, good idea, put all them in there! I notice that the other dialogs like save and open are broken now... I used method 3 to install. Any way to get them to map through to comdlg00 as well?

All original functions are mapped through to ComDlg00.dll. Nothing should be broken--the open and save dialogs are working for me using methods 1b and 2[edit] in Notepad and SumatraPDF 0.9 (with Kex). In SumatraPDF 1.9 with Kex, however, the open dialog fails to appear. I have an idea of how to fix this that I'll try in the morning[/edit].


Sorry for my ignorance but what does Ssync_ANSI_UNICODE_Struct_For_WOW - stub: SetLastError(ERROR_CALL_NOT_IMPLEMENTED) do for us?

If an app is linked to this function, it will load instead of reporting a link error. If the app calls this function and checks the error code using GetLastError, it will see that the function is not actually implemented. The function is probably for NT's internal use in 16-bit "Windows on Windows" emulation. It is unlikely to ever be called in Win9x.

Edited by jumper, 22 March 2012 - 03:26 AM.


#25
schwups

schwups

    schwups

  • Members
  • PipPipPip
  • 400 posts
  • OS:ME
  • Country: Country Flag
I've not much tested so far, but I've successfully printed with SumatraPDF 0.9 ( method 1.b, latest update ComDlgEx.dll). After that printing with Firefox 2.0.0.20 failed. Maybe at the weekend I'll report more detailed results.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users



How to remove advertisement from MSFN