Skip to content

Allow calling COM methods/getters requirering hybrid calling (METHOD+PROPERTYGET convention)#595

Merged
dblock merged 1 commit intojava-native-access:masterfrom
matthiasblaesing:com_hybrid_calling_convention
Feb 16, 2016
Merged

Allow calling COM methods/getters requirering hybrid calling (METHOD+PROPERTYGET convention)#595
dblock merged 1 commit intojava-native-access:masterfrom
matthiasblaesing:com_hybrid_calling_convention

Conversation

@matthiasblaesing
Copy link
Copy Markdown
Member

It was found, that calling InchesToPoints method from word type library
failed. Research lead to

https://www.delphitools.info/2013/04/30/gaining-visual-basic-ole-super-powers/
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221486(v=vs.85).aspx

Summary: there are methods in the word typelibrary that require both
PROPERTYGET and METHOD to be set. With only one of these set the call
fails.

The article from delphitools argues, that automation compatible libraries
need to be compatible with VisualBasic which does not distingish methods
and property getters and will set both flags always.

The MSDN article advises this behaviour: "[...] Some languages cannot
distinguish between retrieving a property and calling a method. In this
case, you should set the flags DISPATCH_PROPERTYGET and DISPATCH_METHOD.
[...]"

This further support the advised way from delphitools and was implemented.

@matthiasblaesing matthiasblaesing force-pushed the com_hybrid_calling_convention branch from bdbf362 to c5b9ca7 Compare February 14, 2016 20:05
Comment thread CHANGES.md Outdated
* [#569](https://github.com/java-native-access/jna/pull/569): Added `com.sun.jna.platform.win32.Winspool.PRINTER_INFO_2` support. Added GetPrinter and ClosePrinter functions in `com.sun.jna.platform.win32.Winspool` - [@IvanRF](https://github.com/IvanRF).
* [#583](https://github.com/java-native-access/jna/pull/583): Added printer attributes and status - [@IvanRF](https://github.com/IvanRF).
* [#589](https://github.com/java-native-access/jna/pull/589): Use MethodResultContext in direct mapping (as done in interface mapping) - [@marco2357](https://github.com/marco2357).
* [#595](https://github.com/java-native-access/jna/pull/595): Allow calling COM methods/getters requirering hybrid calling (METHOD+PROPERTYGET) [@matthiasblaesing](https://github.com/matthiasblaesing).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing - before your name :(

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks - was corrected.

@matthiasblaesing matthiasblaesing force-pushed the com_hybrid_calling_convention branch from c5b9ca7 to 5127195 Compare February 15, 2016 21:39
…PROPERTYGET convention)

It was found, that calling InchesToPoints method from word type library
failed. Research lead to 

https://www.delphitools.info/2013/04/30/gaining-visual-basic-ole-super-powers/
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221486(v=vs.85).aspx

Summary: there are methods in the word typelibrary that require both
PROPERTYGET _and_ METHOD to be set. With only one of these set the call
fails.

The article from delphitools argues, that automation compatible libraries
need to be compatible with VisualBasic which does not distingish methods
and property getters and will set both flags always.

The MSDN article advises this behaviour: "[...] Some languages cannot 
distinguish between retrieving a property and calling a method. In this 
case, you should set the flags DISPATCH_PROPERTYGET and DISPATCH_METHOD.
[...]"

This further support the advised way from delphitools and was implemented.
@matthiasblaesing matthiasblaesing force-pushed the com_hybrid_calling_convention branch from 5127195 to 5ab9cd0 Compare February 15, 2016 21:42
dblock added a commit that referenced this pull request Feb 16, 2016
…ention

Allow calling COM methods/getters requirering hybrid calling (METHOD+PROPERTYGET convention)
@dblock dblock merged commit 0864d49 into java-native-access:master Feb 16, 2016
@dblock
Copy link
Copy Markdown
Member

dblock commented Feb 16, 2016

Merged this.

@matthiasblaesing matthiasblaesing deleted the com_hybrid_calling_convention branch February 18, 2016 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants