标题:如何编一个程序打开Windows的记事本并录入“VFP编程论坛”这几个字
只看楼主
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
得分:0 
试过了,不行,导入后变成另一张没有关联收付款单的凭证
2020-07-23 13:59
kesc
Rank: 2
等 级:论坛游民
威 望:1
帖 子:84
专家分:10
注 册:2006-10-11
得分:0 
回复 20楼 吹水佬
试过了,不行,导入后变成另一张没有关联收付款单的凭证,能行的话也不会来麻烦大家
2020-07-23 14:00
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:5 
什么叫模式凭证,什么叫手工凭证?一个凭证是不是可以理解为一条记录?模式凭证是如何产生的?导入的模板有没有凭证号之类的。
这里很多人对你的财务软件可能一窍不通。最好不要说与计算机无关的专业术语。最好把你两种工作模式的流程说一下。
办法总是有的,很多年前遇到过类似的情况,导入其它系统的数据只能一条条地导,后来用它备份与恢复功能,把数据导进去了。


[此贴子已经被作者于2020-7-23 15:06编辑过]


dBase有人接盘了。
2020-07-23 14:57
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
将出纳系统导出的凭证数据看一下是什么格式的文档,看能否化解,有些是XML格式的话可以用VFP来写.
2020-07-23 15:21
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
引入凭证试试?

dBase有人接盘了。
2020-07-23 15:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用kesc在2020-7-22 23:31:12的发言:

不行啊,我自己添加的第一句就出错
DECLARE integer Findwindow IN WIN32API string,string
mhandle=findwindow(0,'记事本')
=showwindow(mhandle,1)
declare keybd_event in win32api short bvk,short bscan,integer dwflags,integer deextrainfo
_cliptext='VFP编程论坛'
keybd_event(17,0,0,0)
keybd_event(asc('V'),0,0,0)
keybd_event(asc('V'),0,2,0)
keybd_event(17,0,2,0)


API函数声明要区分大小写
DECLARE integer FindWindow IN WIN32API string,string
showwindow未声明(ShowWindow)

试试:
DECLARE LONG FindWindow IN user32 STRING@,STRING@
DECLARE LONG SetWindowPos IN user32 LONG,LONG,LONG,LONG,LONG,LONG,LONG
DECLARE LONG SetFocus IN user32 LONG
DECLARE LONG keybd_event IN user32 LONG,LONG,LONG,LONG
cWindowName = "无标题 - 记事本"  && 按实际的窗口标题
hWnd = FindWindow(NULL, cWindowName)
IF hWnd == 0
    ? "找不到窗口"
    RETURN
ENDIF
SetWindowPos(hWnd, -1, 0, 0, 0, 0, 3)  && HWND_TOPMOST
SetFocus(hWnd)
_cliptext='VFP编程论坛'
keybd_event(17,0,0,0)
keybd_event(asc('V'),0,0,0)
keybd_event(asc('V'),0,2,0)
keybd_event(17,0,2,0)
SetWindowPos(hWnd, -2, 0, 0, 0, 0, 3)  && HWND_NOTOPMOST

如果针对某个输入对象,还要模拟鼠标动作使对象获得输入焦点
模拟鼠标动作API mouse_event()

API SendInput() 可以模拟一组鼠标键盘动作,功能强大,但用起来有点复杂。


[此贴子已经被作者于2020-7-23 16:08编辑过]

2020-07-23 15:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用kesc在2020-7-23 13:59:06的发言:

试过了,不行,导入后变成另一张没有关联收付款单的凭证

20楼说过,要先转换数据。如果软件的导入功能正常,就看看导入的数据格式,按此格式要求来转换。
2020-07-23 15:52
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
一般财务软件都有备份与恢复功能吧?能不能通过这一功能间接导入?

dBase有人接盘了。
2020-07-23 15:57
zhken
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:273
专家分:594
注 册:2012-9-21
得分:0 
Declare keybd_event In Win32API Short bVk,Short bScan,Integer dwFlags, Integer deExtraInfo
Declare mouse_event In Win32API Integer dwFlags,Integer dx,Integer dy,Integer cButtons,Integer dwExtraInfo
MOUSEEVENTF_LEFTDOWN=0x2
MOUSEEVENTF_LEFTUP=0x4
MOUSEEVENTF_MIDDLEDOWN=0x20
MOUSEEVENTF_MIDDLEUP=0x40
MOUSEEVENTF_MOVE=0x1
MOUSEEVENTF_ABSOLUTE=0x8000
MOUSEEVENTF_RIGHTDOWN=0x8
MOUSEEVENTF_RIGHTUP=0x10
=mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_MOVE,20000,20000,0,0) &&移动鼠标到绝对位置10000,10000
=mouse_event(MOUSEEVENTF_LEFTDOWN+MOUSEEVENTF_LEFTUP,0,0,0,0)
WAIT '' TIMEOUT 0.5
_cliptext='VFP编程论坛'
keybd_event(17, 0, 0, 0)
keybd_event(Asc('V'), 0, 0, 0)
keybd_event(Asc('V'), 0, 2, 0)
keybd_event(17, 0, 2, 0)

&&将就用一下。移动鼠标到绝对位置坐标10000,10000后粘贴
2020-07-24 12:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-502588-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.128690 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved