找回密码
 加入
搜索
查看: 4661|回复: 11

[系统综合] 按键里的热键F10运行程序F12停止运行,挺方便的。AU3怎么实现呢?[已解决]

  [复制链接]
发表于 2016-9-18 09:12:47 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2016-9-22 23:42 编辑

按键里的热键F10运行程序F12停止运行,挺方便的。
这个AU3热键好像只是设置激活某函数过程,激活程序本身不知道怎么写,思路打不开阿....

HotKeySet("热键"[, "函数"])

HotKeySet("{F10}", "ToggleExe")
HotKeySet("{F12}", "Terminate")

Func HotKeyPressed()
    Switch @HotKeyPressed
        Case "{F10}"
                ToolTip('终止程序', 0, 0)
                Terminate()
        Case "{F12}"
                ToolTip('启动程序', 0, 0)
                ToggleExe()
    EndSwitch
EndFunc

Func ToggleExe()
        ..................
EndFunc

Func Terminate()
        ..................
EndFunc
发表于 2016-9-18 09:26:11 | 显示全部楼层
回复 1# cashiba
查看帮助文件
#include <MsgBoxConstants.au3>
; 点击 Esc 键中止脚本, 点击 Pause/Break 键暂停脚本
Global $g_bPaused = False
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{ESC}", "Terminate")
HotKeySet("+!d", "ShowMessage") ; Shift-Alt-d

While 1
    Sleep(100)
WEnd
Func TogglePause()
    $g_bPaused = Not $g_bPaused
    While $g_bPaused
        Sleep(100)
        ToolTip('Script is 脚本"暂停"', 0, 0)
    WEnd
    ToolTip("")
EndFunc   ;==>TogglePause
Func Terminate()
    Exit
EndFunc   ;==>Terminate
Func ShowMessage()
    MsgBox($MB_SYSTEMMODAL, "", "这是一条消息.")
EndFunc   ;==>ShowMessage
 楼主| 发表于 2016-9-18 09:42:57 | 显示全部楼层
本帖最后由 cashiba 于 2016-9-18 09:44 编辑

刚正在看帮助文件.....
问题在于源码编译后的程序,如何用热键达到如下图scite工具栏里的启动和停止这两个键的功能

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-9-18 09:48:43 | 显示全部楼层
难道是把整个源码封装成一个函数,然后用一个if判断 @HotKeyPressed值改变流程?
还是有个接口可以控制流程呢?
 楼主| 发表于 2016-9-18 09:57:27 | 显示全部楼层
按键程序运行后,任务栏有托盘图标显示运行状态。是不是获取自身进程号,然后
按F10,run("程序.exe")
按F12,end("程序.exe")
再改变托盘图标状态?
发表于 2016-9-19 12:34:51 | 显示全部楼层
开始、停止这都应该被封装成一些小的功能函数,热键去调用这些功能函数实现某些功能。
而并不是去调用一个可执行文件。
发表于 2016-9-19 23:51:05 | 显示全部楼层
  简单的,使用一个全局变量协调其它函数。TogglePause 和 Terminate 修改该值。

  复杂点的,使用多进程处理,麻烦的是进程间的协调。
 楼主| 发表于 2016-9-20 13:24:31 | 显示全部楼层
按键里热键启动和终止程序感觉非常方便,只是不知道是怎么实现的。希望用AU3编译的程序,启动时能驻留在托盘里,热键启动,热键终止。因为第三方操作界面需要在前。只好暂时用延时启动来留足切换界面的时间了
 楼主| 发表于 2016-9-20 13:27:45 | 显示全部楼层
另外,为啥send(“#m”)或send(“#d”)语句不能达到显示桌面的效果呢,写法有问题吗?
 楼主| 发表于 2016-9-21 21:16:22 | 显示全部楼层
原程序为A.exe
然后再写一个小程序B.exe,其中源码:
1、F10热键Run A.exe
2、F12热键Kill  A.exe (终止一个程序运行而不是干掉进程代码咋写?)
这样好像可以实现了?
 楼主| 发表于 2016-9-22 23:41:31 | 显示全部楼层
发表于 2016-9-25 05:26:04 | 显示全部楼层
不错 很好
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-13 22:40 , Processed in 0.078091 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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