悬赏至少 50 元,求帮忙 C++调用 dll 的方式转成 Python

2018-07-25 17:50:53 +08:00
 iMath
主要是想通过 Python 使用 WCaptureX.dll 里面的函数,涉及到的 dll 可以到这个软件的安装目录获取
https://wordweb.info/free/
这里提供了 C++调用 dll 的方法
https://sites.google.com/a/deskperience.com/wordcapturexdoc/deployment/using-native-dlls---no-com
另外的一些相关文档
函数文档 https://sites.google.com/a/deskperience.com/wordcapturexdoc/wcapturex/wcapturex-interface/capture-method
例子 https://sites.google.com/a/deskperience.com/wordcapturexdoc/wcapturex/wcapturex-interface/capture-method/visual-c

是否有高手愿意帮忙把这个方法转成 Python 的,指导下我如何使用?为了表示诚意,我愿意出至少 50 元,大家先别嫌少,如果确实能搞定,我愿意再加点,谢谢各位!

我折腾出这种来,貌似也还是不知道怎么用
from ctypes import *
# help(cdll.WCaptureX.CreateCOMObject)
print(cdll.WCaptureX.CreateCOMObject)
7722 次点击
所在节点    Python
70 条回复
realpg
2018-07-26 09:34:16 +08:00
看过程,想起了当年被迫在 linux 下调用 dll 的折腾死人的一周
ioth
2018-07-26 10:26:34 +08:00
给你打个折,48 元。
AEANWspPmj3FUhDc
2018-07-26 10:38:56 +08:00
"谈钱伤感情,我错了,各位!"

这句话我要反驳一下。
拜托,请问我们有什么感情?不和你谈钱,那谈什么?谈梦想?
reus
2018-07-26 10:57:00 +08:00
钱不多,但有为知识付费的意识,这个难得
FanWall
2018-07-26 11:02:41 +08:00
@iMath #38

不会变,是常量,例如 Excel.* 也有对应的 CLSID,也可以互相转换。官方 SDK 里肯定也有定义的。
iMath
2018-07-26 11:17:29 +08:00
@reus 还是你理解我!理解万岁!
iMath
2018-07-26 11:19:31 +08:00
@FanWall 谢谢大哥不断的指教!
我现在写出的代码如下
from win32com.client import Dispatch
import win32gui
import mouse
import time
from threading import Timer

WCaptureX = Dispatch("{8F267988-0CA4-418C-8F94-B4BC5862B390}")
WInput = Dispatch("{4B484CCE-9120-49B7-A5F2-B8B183BFD808}")



def onMouseClicked():
# x,y=mouse.get_position()
# windowHandle = win32gui.WindowFromPoint((x,y))
# windowClassName= win32gui.GetClassName(windowHandle)
# print(win32gui.GetClassName(windowHandle)) WInput.Hwnd=None
windowHandle,x,y=WCaptureX.GetCursorInfo()
WInput.Hwnd=windowHandle
WInput.StartX=x
WInput.StartY=y
# WInput.EndX=x+100
# WInput.EndY=y+100
WResult=WCaptureX.Capture(WInput)
print(WResult.TEXT ,WResult.Paragraph )


mouse.on_click(onMouseClicked) # 实际是 released event
mouse.wait(button='right', target_types=('double', ))


我试了下 Word 2016 取词也是没问题,但是 Chrome 和 sumatraPDF 之类的软件就无法取词,估计是我没有找到正确的使用方式吧。
据我所知,国内的欧路词典也是用这套工具,该软件在 Chrome 和 sumatraPDF 里取词没问题……
@ysc3839
lee88688
2018-07-26 11:22:49 +08:00
我之前用过内置的 ctypes 调用过 dll,感觉还挺好用的你可以去尝试一下
FanWall
2018-07-26 11:26:03 +08:00
@iMath #47

既然能跑通了那接下来的实现一般就是翻文档的事情了,加油吧
Mmmmc
2018-07-26 11:37:24 +08:00
看得我五味杂陈
iMath
2018-07-26 11:40:12 +08:00
@lee88688 用 ctypes 我只能走到这一步就不知道下一步怎么走了
from ctypes import *
print(cdll.WCaptureX.CreateCOMObject)
salamanderMH
2018-07-26 11:42:57 +08:00
其实吧,我觉得,钱不重要
IbukiSuika
2018-07-26 11:43:24 +08:00
楼主长个记性吧,以后这种别提钱就好了
yyang179
2018-07-26 12:04:40 +08:00
ysc3839
2018-07-26 12:17:17 +08:00
@iMath CLSID 是不会变的。如果你会的话那我就不写了。
cszhiyue
2018-07-26 12:37:06 +08:00
“一般人们总认为要让别人做点事情,就应该给他们奖励,不管多少、 不论大小,有总比没有的好,但其实不然”

“第一种方案纯粹依赖人们的内在动力,第二种则 与经济利益挂钩。那么这两种比较而言,哪种方式起到的效果更好呢? 第一种方案中,无偿献血是一种公益行为,人们愿意在这个时候做点贡 献,会自愿参加献血。而第二种方案因为有物质激励,人们自然而然地 会将献血看成一种经济行为。10 元的补助根本就是杯水车薪,数目实在 太小,起不到激励的作用,没有多少人会愿意为了拿到 10 元去卖血。所 以,没奖要比有小奖更能引导人们做好事,或者做我们希望他们做的事。 当然,如果献血给的钱特别多,比如一万元,那自然有很多人愿意去献 血,但我们比较的不是给一万元和不给钱,比如一万元,那自然有很多人愿意去献 血,但我们比较的不是给一万元和不给钱时人们献血的意愿,而是给 10 元和不给钱时人们献血的意愿。

同样,当我还在耶鲁大学念书的时候,经常需要找一些学生帮我做 问卷。当时我还是一个穷学生,付不起多少钱。我发现如果我请别人帮 我做问卷然后给他们 1 美元的报酬,大多数人都不愿意帮我做。后来,我 索性就不给钱了,直接请他们帮我做问卷,这样反而有比较多的人愿意 帮忙。”


摘录来自: 未知作者. “别做正常的傻瓜”。iBooks.
iMath
2018-07-26 12:55:28 +08:00
@cszhiyue 你的引用道出了我在这篇帖子里的处境,万分感谢!
阁下能否推荐些你觉得大多数人都值得一看的书来看看?
agostop
2018-07-26 13:05:09 +08:00
其实是干技术的,都接受不了技术不值钱这个事实。
forkon
2018-07-26 13:14:24 +08:00
放了楼主的 50 元吧,他只是出于好意。
Nostalgiaaaa
2018-07-26 13:15:32 +08:00
这个属于你把工作量化成 50 块钱了。。。一般做程序员的都不会觉得自己好几个小时就值 50,下次直接请教下方向就行了,剩下的自己摸索。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/474117

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX