我是编程新手,想创建一个程序来检测商店购买的软件中的事件,并显示一个消息框,要求用户点击" OK"为了继续商业程序在Windows XP中运行,我需要它来检测有人点击特定菜单选项的时间。什么编程语言最好,如果我无法访问商业程序的源代码,这是否可行?如果程序检测到屏幕上显示的特定单词,也可能会起作用,因为在商业程序中单击菜单选项后会出现某些唯一文本。
答案 0 :(得分:1)
t1085ok,
答案是肯定的。
我建议使用Autohotkey(AHK)。它是初学者级别,但提供强大的功能来完成你想做的事情。
您可以在此免费下载:http://ahkscript.org/download/
您可以将代码写入记事本文档(或其中一个免费的,社区开发的文本编辑器),并将其另存为* .ahk以制作脚本文件。
有以下命令:
Run, Chrome.exe
WinWait, New Tab - Google Chrome
WinActivate, New Tab - Google Chrome
Send, {F6}www.example.com{Enter}
Sleep, 1000
MsgBox, Action complete.
Return
脚本将
甚至还有用于创建带按钮和控件的表单的GUI脚本。这是我正在处理的表单应用程序的代码片段:
Gui, Add, Button, x16 y15 w108, Activate Window 1
Gui, Add, Button, x16 y44 w108, Activate Window 2
Gui, Add, Button, x16 y73 w108, Activate Window 3
Gui, Add, Button, c000000 x24 y469 w100, Reset
Gui, Add, Button, x24 y498 w100 default, Run
Gui, Color, 404040, 000000
Gui, Show, Center w645, Repeat Keystrokes
return
buttonActivateWindow1:
Gui, Submit, NoHide
GuiControl,, Keystrokes, %Keystrokes%<window>%Activate1WindowText%</window>
GuiControl, Focus, Keystrokes
Send, ^a{End}
return
buttonActivateWindow2:
Gui, Submit, NoHide
GuiControl,, Keystrokes, %Keystrokes%<window>%Activate2WindowText%</window>
GuiControl, Focus, Keystrokes
Send, ^a{End}
return
buttonActivateWindow3:
Gui, Submit, NoHide
GuiControl,, Keystrokes, %Keystrokes%<window>%Activate3WindowText%</window>
GuiControl, Focus, Keystrokes
Send, ^a{End}
return
是的,您可以在文本处于特定窗口时处理事件,或者甚至在窗口上显示特定图像时处理事件。
以下是我编写的复制和粘贴脚本的示例,它允许您复制多个项目,然后逐个粘贴它们:
#SingleInstance Force
#CommentFlag //
#Persistent
// '#SingleInstance Force' only allows one instance of this script
// to run at a time.
// '#CommentFlag //' changes the scripts comment delimiter. I like
// "//" for comments.
// '#Persistent' kees the script running for objects like a timer.
// Create new array as an object.
ParseBoard := Object()
// Define new hotkey event for Ctrl+C
// It overrides the system's event for Ctrl+C
$^c::
KeyWait, c
// Clear the clipboard.
clipboard =
// Copy the selected text.
Send, ^c
ClipWait
// Add text to array.
ParseBoard.Push(clipboard)
// Store the number of items currently in the array, as 'ParseCount'.
ParseCount := ParseBoard.MaxIndex()
// Display number of items copied on a tooltip for 2.5 seconds.
ToolTip, %ParseCount%
SetTimer, RemoveTT, 2500
Return
Return
// Define new hotkey event: Ctrl+V
^v::
// Stop if the shift key is down.
if (GetKeyState("Shift", "P") = 1)
Return
KeyWait, v
// Return oldest string in array, and send keystrokes.
CurrentString := ParseBoard.RemoveAt(1)
SendInput, %CurrentString%
// Update the total items in array, within variable 'ParseCount'.
ParseCount := ParseBoard.MaxIndex()
// Display tooltip of remaining items for 2.5 seconds
ToolTip, %ParseCount%
SetTimer, RemoveTT, 2500
// Stop script.
Return
// The go-to tag for the timers. Removes tooltip from the screen.
RemoveTT:
SetTimer, RemoveTT, Off
ToolTip
Return
// New hotkey event: Ctrl+Shift+V
$^+v::
KeyWait, v
// Send the last pasted item, instead of the next.
SendInput, %CurrentString%
// Stop script.
return
// Allow user to kill the entire script with the Escape key.
^Esc::ExitApp
可以完成你想要做的事情的脚本发布在这里:http://ahkscript.org/docs/commands/ImageSearch.htm
它在屏幕上搜索图像,并允许您相应地处理。
在您的情况下,您可以拍摄消息框的快照,保存,引用其路径,并使用if(...)... else ...
它还附带一个编译器,因此您可以在其他计算机上将其用作* .exe文件。