我可以在商业软件中检测事件并显示消息吗?

时间:2015-10-23 05:34:52

标签: javascript c# windows algorithm ipc

我是编程新手,想创建一个程序来检测商店购买的软件中的事件,并显示一个消息框,要求用户点击" OK"为了继续商业程序在Windows XP中运行,我需要它来检测有人点击特定菜单选项的时间。什么编程语言最好,如果我无法访问商业程序的源代码,这是否可行?如果程序检测到屏幕上显示的特定单词,也可能会起作用,因为在商业程序中单击菜单选项后会出现某些唯一文本。

1 个答案:

答案 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

脚本

  • 启动Chrome
  • 等到名为“New Tab - Google Chrome”的窗口存在
  • 激活窗口
  • 发送按键[F6] www.example.com [Enter]
  • 停止1秒
  • 显示“操作已完成”的消息框。

甚至还有用于创建带按钮和控件的表单的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文件。