找回密码
 加入
搜索
查看: 3912|回复: 7

[图形处理] 小屏幕键盘,有请大虾完善,谢谢 [已解决]

  [复制链接]
发表于 2010-7-21 22:09:28 | 显示全部楼层 |阅读模式
本帖最后由 奥斯丁 于 2010-7-28 10:29 编辑

小屏幕键盘,搞多天了,查了n多资料,无奈太菜,有请大虾完善,谢谢



#include <GUIConstantsEx.au3>
#Include <WinAPI.au3>
;~ _WinAPI_EnumWindows([$fVisible = True])

Opt('MustDeclareVars', 1)

Example()

Func Example()
    Local $parent1, $ok1, $cancel1
   
    Opt("GUICoordMode", 2)
    Opt("GUIResizeMode", 1)
    Opt("GUIOnEventMode", 1)

    $parent1 = GUICreate("Parent1")
    GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
    GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")

GUISetState()
;~ 置顶前先取到当前激活窗口,这个程序置顶以后再把原来的窗口激活。


    $ok1 = GUICtrlCreateButton("1", 10, 30, 50)
    GUICtrlSetOnEvent(-1, "OKPressed")

    $cancel1 = GUICtrlCreateButton("2", 0, -1)
    GUICtrlSetOnEvent(-1, "CancelPressed")

;~     GUISetState(@SW_SHOW)

WinSetOnTop($parent1, "", 1)
GUISetState(@SW_SHOWNOACTIVATE,$parent1)
    ; Just idle around
    While 1
;~                 _WinAPI_EnumWindows([$fVisible = True])
               
        Sleep(100)
               
    WEnd

EndFunc   ;==>Example


Func OKPressed()
        Send('1')
        _WinAPI_GetForegroundWindow()
                msgbox(0, '前台激活窗口标题:', WinGetTitle(_WinAPI_GetForegroundWindow()))
       
;~     MsgBox(0, "OK Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle & " CtrlHandle=" & @GUI_CtrlHandle,1)
EndFunc   ;==>OKPressed


Func CancelPressed()
        Send('2')
    MsgBox(0, "Cancel Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle & " CtrlHandle=" & @GUI_CtrlHandle)
EndFunc   ;==>CancelPressed


Func SpecialEvents()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
            MsgBox(0, "Close Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)
            Exit

        Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
            MsgBox(0, "Window Minimized", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

        Case @GUI_CtrlId = $GUI_EVENT_RESTORE
            MsgBox(0, "Window Restored", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle)

    EndSelect
EndFunc   ;==>SpecialEvents

评分

参与人数 2金钱 +10 贡献 +1 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...
lynfr8 + 1 好问题!

查看全部评分

发表于 2010-7-24 18:52:41 | 显示全部楼层
靠,怎嚜處理FN鍵?
   靠,怎嚜處理FN鍵?
 楼主| 发表于 2010-7-24 21:13:14 | 显示全部楼层
谢兄弟的关注, 我只想要小键盘和方向键及翻页键的,可以的话加个组合键,一键代表某个按键组合, fn键没有考虑。
    本来windows自带的屏幕键盘也可用,只是打开后太大把屏幕都挡着了,不合用。
   
    现在的问题是:
    1 . 小键盘置顶后,置顶前先取到当前激活窗口,这个程序置顶以后再把原来的窗口激活。  焦点不能到目标位置发生作用,按下去反映的是小键盘被激活为当前窗口,晕。
    2.  按键发送命令搞不懂。

    整理一下, 希望高手帮忙

#include <GUIConstantsEx.au3>
#Include <WinAPI.au3>
;~ _WinAPI_EnumWindows([$fVisible = True])

Opt('MustDeclareVars', 1)
Example()
Func Example()
    Local $parent1, $ok1, $cancel1
    Opt("GUICoordMode", 2)
    Opt("GUIResizeMode", 1)
    Opt("GUIOnEventMode", 1)

    $parent1 = GUICreate("Parent1")
    GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents")
    GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents")
    GUISetState()
    ;~ 置顶前先取到当前激活窗口,这个程序置顶以后再把原来的窗口激活。
    $ok1 = GUICtrlCreateButton("1", 10, 30, 50)
    GUICtrlSetOnEvent(-1, "OKPressed")
    $cancel1 = GUICtrlCreateButton("2", 0, -1)
    GUICtrlSetOnEvent(-1, "CancelPressed")
    ;~     GUISetState(@SW_SHOW)

    WinSetOnTop($parent1, "", 1)
    GUISetState(@SW_SHOWNOACTIVATE,$parent1)
    ; Just idle around
    While 1
;~        _WinAPI_EnumWindows([$fVisible = True])
          Sleep(100)
    WEnd
EndFunc   ;==>Example


Func OKPressed()
        Send('1')
        _WinAPI_GetForegroundWindow()
         msgbox(0, '前台激活窗口标题:', WinGetTitle(_WinAPI_GetForegroundWindow()))
EndFunc   ;==>OKPressed

Func CancelPressed()
        Send('2')
;~      MsgBox(0, "Cancel Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle & " CtrlHandle=" & @GUI_CtrlHandle)
EndFunc   ;==>CancelPressed

MsgBox(0, "Cancel Pressed", "ID=" & @GUI_CtrlId & " WinHandle=" & @GUI_WinHandle & " CtrlHandle=" & @GUI_CtrlHandle)
EndFunc   ;==>CancelPressed


Func SpecialEvents()
          @GUI_CtrlId = $GUI_EVENT_CLOSE
           Exit
EndFunc
发表于 2010-7-24 21:43:12 | 显示全部楼层
本帖最后由 afan 于 2010-7-25 23:21 编辑

关键是输入时会在小键盘窗口和目标窗口之间来回激活窗口,这个不爽
 楼主| 发表于 2010-7-28 11:22:44 | 显示全部楼层
 楼主| 发表于 2010-7-28 11:28:16 | 显示全部楼层
如何编辑主题.把分类改为[已解决] ,晕
发表于 2010-7-28 11:30:05 | 显示全部楼层
回复 6# 奥斯丁


    早就没有此分类了,在标题上加几个字即可
 楼主| 发表于 2010-7-27 17:34:55 | 显示全部楼层
A版帮忙看看, 还有点小问题 ....(在您的帖子里)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-9 08:51 , Processed in 0.081432 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表