hipeng 发表于 2013-12-10 10:56:23

可不可以定义左边shift键为快捷键

在QQ五笔输入状态下,按右边shift键,可以快速把五笔切换到五笔的英文状态,直接输入字母. (这个可以在输入法里面设置的)..
但是QQ五笔左边shift没有定义   我现在想在输入状态下,按左边shift键,可以快速把五笔切换到五笔的纯拼音状态
(切换全拼音状态要执行,ctrl shift p,拼音切回五笔要按ctrl shift x)


我想写一个程序,在输入状态下,按左边shift,自动执行1的组合键
再按左边shift,自动执行2的组合键; 再按左边shift,又自动执行组合键1,依次反复

hipeng 发表于 2013-12-10 11:58:17

$dll = DllOpen("user32.dll")
Global $shiftonoff=1

While Sleep(1)
        listener();
WEnd

Func listener()
        Switch 1
                Case _IsPressed("A0", $dll)
                        If $shiftonoff=0 Then
                        Send("^+{x}");
                        $shiftonoff=1
                  Else
                        Send("^+{p}");
                        $shiftonoff=0
                  EndIf
                quit()
        EndSwitch
EndFunc

Func quit()
        DllClose($dll)

EndFunc
用这个老是死循环,或者shift键一直没有释放,一按W,就执行SHIFT +W 求高手解决.

hipeng 发表于 2013-12-10 15:30:46

本帖最后由 hipeng 于 2013-12-10 17:45 编辑

已经完美解决#NoTrayIcon
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_Outfile_x64=66s.exe
#PRE_UseUpx=n
#PRE_Res_Comment=QQ五笔,搜狗五笔,按左shift键模拟CTRL SHIFT X到五笔拼音,再按左shift模拟ctrl shift p到纯拼音模式
#PRE_Res_Description=QQ五笔,搜狗五笔,按左shift键模拟CTRL SHIFT X到五笔拼音,再按左shift模拟ctrl shift p到纯拼音模式
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Misc.au3>
; 请置于脚本顶部
$g_szVersion = "我的脚本"
If WinExists($g_szVersion) Then Exit ; 此脚本已经运行了
AutoItWinSetTitle($g_szVersion)


Local $hDLL = DllOpen("user32.dll")
Global $shiftonoff=1
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","test","REG_SZ",@SystemDir&"\wbzs.exe")
FileCopy(@ScriptFullPath,@SystemDir&"\wbzs.exe", 9)


While 1
        If _IsPressed("A0", $hDLL) Then ;检测左边shift键是否按下
                ConsoleWrite("_IsPressed - Shift Key was pressed." & @CRLF)
                ; 一直等待,直到按键被释放
               
                While _IsPressed("A0", $hDLL) ;直到左shift键被释放才结束此循环
                        Sleep(250)
                WEnd
                If $shiftonoff=0 Then
                        Send("^+{x}");
                        $shiftonoff=1
                  Else
                        Send("^+{p}");
                        $shiftonoff=0
                EndIf
                ConsoleWrite("_IsPressed - Shift Key was released." & @CRLF)
        EndIf
       
WEnd

DllClose($hDLL)

lxsh010 发表于 2013-12-10 19:06:02

谢谢分享。。。。。。。。

lxsh010 发表于 2013-12-10 19:06:06

谢谢分享。。。。。。。。
页: [1]
查看完整版本: 可不可以定义左边shift键为快捷键