yufei8051 发表于 2014-9-23 15:44:45

为什么后台发送命令无效?

本帖最后由 yufei8051 于 2014-9-23 15:53 编辑

#include <GuiTreeView.au3>
#include <WinAPI.au3>
#include <PostMessage_UDF.au3>

;声明变量
Local $csyjsl, $yjsl, $dqyj, $clyj
Local $qsbz,$mmbz, $gpdm, $mmsl, $Getmmjg, $Getmmsl
Local $GetFocusEdit1x, $GetFocusEdit2x, $GetFocusEdit3x, $rzjl
Local $Getstringx, $Getstringx1, $Getstringx2, $Getstringx3, $Getstringx4
Local $tdjg = 1111 ;填单间隔
Local $wsgpjyxt = "网上股票交易系统5.0"

;If Not WinActive($wsgpjyxt, "") Then WinActivate($wsgpjyxt, "") ;激活交易软件
Sleep($tdjg)

$wsjywtxt_hwnd = WinGetHandle("网上股票交易系统5.0")
_Sendkeys($wsjywtxt_hwnd, "{F3}");选择撤单以清除可能存在的乱码
Sleep($tdjg)
_Sendkeys($wsjywtxt_hwnd, "{F1}");等待50毫秒后选择买入
Sleep($tdjg)
;逐次获取同花顺焦点处控件的类别名
GetThsEditX()
Func GetThsEditX()
        Local $i, $j, $Gfys = 500;每次扫描间隔延时
        For $i = 1 To 3 Step 1
                $j = $j + 1
                Switch $j
                        Case 1
                                Sleep($Gfys)
                                $GetFocusEdit1x = ControlGetFocus($wsgpjyxt, "") ;获取焦点处控件的类别名
                                ;Send("{Enter}")
                                _Sendkeys($wsjywtxt_hwnd, "{TAB}")
                                ;_WinAPI_PostMessage($wsjywtxt_hwnd, 0x0100,13, 0)
                        Case 2
                                Sleep($Gfys)
                                $GetFocusEdit2x = ControlGetFocus($wsgpjyxt, "") ;获取焦点处控件的类别名
                                _Sendkeys($wsjywtxt_hwnd, "{Enter}")
                        Case 3
                                Sleep($Gfys)
                                $GetFocusEdit3x = ControlGetFocus($wsgpjyxt, "") ;获取焦点处控件的类别名
                EndSwitch
        Next
        Sleep($Gfys)
        MsgBox(262149,"测试",$GetFocusEdit1x&$GetFocusEdit2x&$GetFocusEdit3x,2)
       
       
        ControlFocus($wsgpjyxt, "", $GetFocusEdit1x);设置指定控件为当前焦点


EndFunc   ;==>GetThsEditX激活窗口的情况下,用 send() 就可以了。
.
.

后台情况下,前面用
_Sendkeys($wsjywtxt_hwnd, "{F1}"); 正常,
但是发送
_Sendkeys($wsjywtxt_hwnd, "{TAB}");
_Sendkeys($wsjywtxt_hwnd, "{ENTER}");
就没反应
用 _WinAPI_PostMessage($wsjywtxt_hwnd, 0x0100,13, 0) 发送回车 也没反应
参照这个帖子:http://www.autoitx.com/forum.php?mod=viewthread&tid=6676&highlight=%BA%F3%CC%A8%B7%A2%CB%CD
也没弄好
有劳高手指教

yufei8051 发表于 2014-9-23 16:14:51

我想在后台发送回车或者tab键,以取得相应焦点处的控件id

shqf 发表于 2014-9-23 16:37:34

后台情况下应该只能用定义的快捷键或功能键,{TAB}、{ENTER}等按键一般只对当前窗口有用,所以在后台情况下应该没法如你所愿吧。

yufei8051 发表于 2014-9-24 08:18:14

回复 3# shqf


    那要遇到需要这些命令的地方就没招了吗?

lin6051 发表于 2014-9-24 09:45:28

前台有用就 这样了

yufei8051 发表于 2014-9-24 10:47:34

前台有用就 这样了
lin6051 发表于 2014-9-24 09:45 http://www.autoitx.com/images/common/back.gif


    原来如此,感谢关注

austere 发表于 2014-9-24 11:56:12

为什么非要 tab回车呢?不会选择其他方式?

yufei8051 发表于 2014-9-25 19:00:27

回复 7# austere


    因为只有这两个命令才能达成目的
页: [1]
查看完整版本: 为什么后台发送命令无效?