9 个解决方案
#1
"根据不同结果可能要弹出对话框"
试试根据对话框是否存在来等待。
while (1)
{
if (FindWindow(...))//对话框还在
break;
Sleep(1000);//1秒后重试
}
试试根据对话框是否存在来等待。
while (1)
{
if (FindWindow(...))//对话框还在
break;
Sleep(1000);//1秒后重试
}
#2
等到输入回车后?在PreTranslateMessage中判断是否是按下ENTER?
#3
老 拉
#4
#5
应用程序是其他人用PB开发的,没有源代码,我的意思是在一个edit控件按下回车后,执行完其script后,其scrip中含访问网络数据库的代码,并根据edit控件输入是否合法,可能弹出对话框,也可能不弹出对话框。如果弹出对话框我要关闭它,不弹出对话框继续转到其他控件进行输入,但其弹出时间不能确定(视网络状况或数据库响应速度定)我如何才能在其script真正执行完毕后,再模拟输入键。我想过通过截获数据包是否返回做,但太复杂,时间不允许。有谁有比较好的办法或思路,谢谢了。
#6
这种情况最好不用模拟键盘输入,建议对Edit用SetWindowText,对按钮用PostMessage模拟按下动作。
#7
我在我的后台程序中用DWORD WaitForInputIdle(
HANDLE hProcess, // handle to process
DWORD dwMilliseconds // time-out interval in milliseconds
);函数试了试,可以,hProcess是我用spy++截获应用程序的ProcessID,然后用OpenProcess
函数得到的,但是用什么方法可以得到正在运行的程序的ProcessID呢?用GetWindowThreadProcessId
函数得到的只是其thread ID.
HANDLE hProcess, // handle to process
DWORD dwMilliseconds // time-out interval in milliseconds
);函数试了试,可以,hProcess是我用spy++截获应用程序的ProcessID,然后用OpenProcess
函数得到的,但是用什么方法可以得到正在运行的程序的ProcessID呢?用GetWindowThreadProcessId
函数得到的只是其thread ID.
#8
GetWindowThreadProcessId
的第二个参数返回进程ID,返回值是创建窗口的线程ID
的第二个参数返回进程ID,返回值是创建窗口的线程ID
#9
问题解决,谢谢各位。
#1
"根据不同结果可能要弹出对话框"
试试根据对话框是否存在来等待。
while (1)
{
if (FindWindow(...))//对话框还在
break;
Sleep(1000);//1秒后重试
}
试试根据对话框是否存在来等待。
while (1)
{
if (FindWindow(...))//对话框还在
break;
Sleep(1000);//1秒后重试
}
#2
等到输入回车后?在PreTranslateMessage中判断是否是按下ENTER?
#3
老 拉
#4
#5
应用程序是其他人用PB开发的,没有源代码,我的意思是在一个edit控件按下回车后,执行完其script后,其scrip中含访问网络数据库的代码,并根据edit控件输入是否合法,可能弹出对话框,也可能不弹出对话框。如果弹出对话框我要关闭它,不弹出对话框继续转到其他控件进行输入,但其弹出时间不能确定(视网络状况或数据库响应速度定)我如何才能在其script真正执行完毕后,再模拟输入键。我想过通过截获数据包是否返回做,但太复杂,时间不允许。有谁有比较好的办法或思路,谢谢了。
#6
这种情况最好不用模拟键盘输入,建议对Edit用SetWindowText,对按钮用PostMessage模拟按下动作。
#7
我在我的后台程序中用DWORD WaitForInputIdle(
HANDLE hProcess, // handle to process
DWORD dwMilliseconds // time-out interval in milliseconds
);函数试了试,可以,hProcess是我用spy++截获应用程序的ProcessID,然后用OpenProcess
函数得到的,但是用什么方法可以得到正在运行的程序的ProcessID呢?用GetWindowThreadProcessId
函数得到的只是其thread ID.
HANDLE hProcess, // handle to process
DWORD dwMilliseconds // time-out interval in milliseconds
);函数试了试,可以,hProcess是我用spy++截获应用程序的ProcessID,然后用OpenProcess
函数得到的,但是用什么方法可以得到正在运行的程序的ProcessID呢?用GetWindowThreadProcessId
函数得到的只是其thread ID.
#8
GetWindowThreadProcessId
的第二个参数返回进程ID,返回值是创建窗口的线程ID
的第二个参数返回进程ID,返回值是创建窗口的线程ID
#9
问题解决,谢谢各位。