Const PROCESS_QUERY_INFORMATION = &H400
Const STILL_ALIVE = &H103
Const INFINITE = &HFFFF
Public Sub aaa()
ocrexe = "C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\MSPVIEW.EXE "
flpath = "F:\91.tif"
FileString = ocrexe & " " & Chr(34) & flpath & Chr(34)
pid = Shell(FileString, vbNormalFocus)
'hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, pid)
SendKeys "%(t)", ture
SendKeys "t", ture MsgBox "ok"
______________________________________________
上面程序,在shell后如果延时,可以成功执行,如果不延时,则会出错,或无反应因为Shell执行后初始化窗口成功后,是当前活动窗口,获得焦点,可以sendkey,否则sendkey 无效但延时不好把握,太长浪费时间,太短仍sendkeys无效请问如何判断shell打开文档成功且初始化窗口成功并获得焦点呢?
Const STILL_ALIVE = &H103
Const INFINITE = &HFFFF
Public Sub aaa()
ocrexe = "C:\Program Files\Common Files\Microsoft Shared\MODI\11.0\MSPVIEW.EXE "
flpath = "F:\91.tif"
FileString = ocrexe & " " & Chr(34) & flpath & Chr(34)
pid = Shell(FileString, vbNormalFocus)
'hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, pid)
SendKeys "%(t)", ture
SendKeys "t", ture MsgBox "ok"
______________________________________________
上面程序,在shell后如果延时,可以成功执行,如果不延时,则会出错,或无反应因为Shell执行后初始化窗口成功后,是当前活动窗口,获得焦点,可以sendkey,否则sendkey 无效但延时不好把握,太长浪费时间,太短仍sendkeys无效请问如何判断shell打开文档成功且初始化窗口成功并获得焦点呢?
这个办法听起来是有道理的,但我不知道如何操作!其实设个定时器,等个3、5秒中,让其一直DOevents!自然会得焦点!
测试open windows时如何一直DOevents?个人认为,如果是异步执行,DOevents是必可可少的!
如果同步执行,也存在窗口成为活动窗口的问题,否则sendkeys无效!
如果是同步执行,且不打开窗口,就不会有那么多的问题了!各位大侠有招的话可给个简单的代码!俺 会加分!
...
WaitForSingleObject
do while lngProcessId <> lngShellId
doevnets
sleep 1
hWnd = GetActiveWindow
GetWindowThreadProcessId(hwnd,lngProcessId)
loop