TWAIN Working Group

Newsletter Signup
Donate
Help keep TWAIN free
  • About TWAIN
    • What’s New?
    • News
    • Events
    • Membership
    • Consider a Donation
    • Contact Us
  • Why TWAIN?
  • Developers
    • Driver Developer
    • Application Developer
    • TWAIN Features
    • Specification & Tools
    • Self Certification Process
  • Support Forums
  • Scanner End-User
  • Find Certified Drivers
    • Facebook
    • LinkedIn
    • Vimeo

Reply To: app does not respond to MSG_CLOSEDSREQ…

Forums › TWAIN Classic › app does not respond to MSG_CLOSEDSREQ… › Reply To: app does not respond to MSG_CLOSEDSREQ…

August 10, 2007 at 2:06 am #24019
xyuxux
Participant
  • Topics - 1
  • Replies - 5
  • Total Posts - 6

@gabe wrote:

not the cc, the twState.

Ah, sorry, I mistook it for twStatus.
I am basing my program on the sample source from the TWAIN Toolkit (TWAIN_32 Sample Source),
so I am updating twState for the ds (between the app and the wrapper).
For example, when getting DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS I go to STATE4, and
when getting DG_CONTROL / DAT_IDENTITY / MSG_CLOSEDS I go to STATE3.
However, I am not tracking the twState when calling the 2nd ds and getting the image data from it (between the wrapper and 2nd ds) as seen in the previous code I posted.

@gabe wrote:

it seems more likely that photoshop isn’t placing a call that the rest are.

This is the log after having sent data to the app’s (gimp, twacker) IMAGEMEMXFER.
For gimp and twacker, when SUCCESS with Count = 0 is returned for DG_CONTROL / DAT_PENDINGXFERS / MSG_ENDXFER, DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS is sent right away by the app. At this point I close the wrapper’s UI with DestroyWindow(hWnd).

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DAT_PENDINGXFERS : MSG_ENDXFER // app -> wrapper
— State : 700 // wrapper’s state
Count = 0
return TWRC_SUCCESS
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DAT_USERINTERFACE : MSG_DISABLEDS
— State : 600 // DestroyWindow(hWnd)
return TWRC_SUCCESS
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DAT_IDENTITY : MSG_CLOSEDS
— State : 400

However, for Photoshop even if SUCCESS with Count = 0 is returned for DAT_PENDINGXFERS / MSG_ENDXFER, MSG_DISABLEDS does not get sent.
This is the log after having sent data to the Photoshop’s IMAGEMEMXFER.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
DAT_PENDINGXFERS : MSG_ENDXFER
— State : 700
Count = 0
return TWRC_SUCCESS
// no response
// manually close the UI
// DestroyWindow(hWnd)
DG_CONTROL / DAT_NULL / MSG_CLOSEDSREQ // wrapper -> app
twRc : TWRC_FAILURE

@gabe wrote:

Couldn’t you just call DestroyWindow(hwnd)

It seems I did not explain well enough. Closing the UI is not the problem (it will close if I call DestroyWindow), the problem is that the app or dsm returns FAILURE in response to MSG_CLOSEDSREQ.
Or, the problem is DG_CONTROL / DAT_USERINTERFACE / MSG_DISABLEDS is not sent from Photoshop.
Because of this, Photoshop does not do a DisableDS or CloseDS, so it ends up stopping when in twState=5, I think.

@gabe wrote:

You call CloseDsReq before you call openDsm?

Yes, because I could not call openDsm when a session with the dsm (to talk to the app) was already open.

@gabe wrote:

Are you inheriting from or deriving a class from NativeWindow or CWnd or ..?Are you sure that the messagepump is still pumping?

NativeWindow and CWnd… are you talking C++ or C#?
I am programming in C.

By handle, do you mean the in_hWnd for when the wrapper does openDsm?

twRc = DSM_Entry(&WrapperID, NULL, DG_CONTROL, DAT_PARENT, MSG_OPENDSM, (TW_MEMREF)&in_hWnd);

For in_hWnd, I am doing in_hWnd = (pTW_USERINTERFACE)(pTWMsg->pData)->hParent; when MSG_ENABLEDS is called from the app.

I am not creating a separate messagepump thread.
I am only acting when I get the DS_Entry CALLBACK.

Quick Links

Service Providers
TWAIN Support Forums
Membership
Contact Us
Privacy Policy

Newsletter Signup

TWAIN Working Group Family

TWAIN Working Group
TWAIN Direct®
TWAIN Resources
TWAIN Certified Drivers
PDF/raster

  • Facebook
  • GitHub
  • LinkedIn
  • Vimeo

Recent Topics

  • EPSON V600 TWAIN and WIA on Windows 10
  • When and how to use WaitForEvents command ?
  • Problem enumerating list of installed scanners in windows server 2012
  • Failed to create TWAIN progress! Error code is 1260.
  • To get the list of scanners from javascript client side (browser)
  • Quarterly Newsletter
  • TWAIN Working Group Membership
  • Logo Usage
  • TWAIN License
  • Contact Us
Privacy Policy • Privacy Tools • Copyright © 2021 TWAIN Working Group • by iHwy, LLC • Log in