2010-08-16 69 views
0

是否可以遠程控制使用c#運行的程序?怎麼做?如何遠程控制程序?

我必須將約500個文件轉換爲特定的文件格式,方法是打開它 - >轉換 - >保存。所以我想創建一個能夠完成這項工作的alogrythm。

謝謝你的幫助。

回答

1

在我看來,你最好使用腳本語言進行窗口自動化。其中最受歡迎的是AutoHotkey

如果您需要在.NET中進行操作,您可能需要查看.NET 3.5中的Windows Automation API

不知道你想要自動化的程序的進一步細節是不容易給你更詳細的建議。

0

是的。我們可以提供更多關於如何在做更多細節時提供更多細節(程序駐留在哪裏?您要控制的程序是如何構建的?它是否支持命令行調用?它使用COM或.NET程序集,你可以連接到?等等)。

+0

它不使用COM或.NET程序集,也不支持命令行調用。該程序駐留在我的桌面上。 我知道我必須得到程序的處理,但接下來要做什麼? – oopbase 2010-08-16 13:15:50

+0

如果它不提供命令行管理,恐怕你不能這樣做。你最好找一個準備做批量/批量轉換的程序,這對你更有用。 – Baltasarq 2010-08-16 13:24:55

+0

@Baltasarq儘管它需要更多的工作,但它確實可以在沒有CLI的情況下自動化:) – 2010-08-16 14:50:37

0

您可以使用鼠標和鍵盤消息來控制程序。這很黑,但確實有效。例如,鼠標光標可以用Cursor.Position控制。儘管如此,這在C++中可能會更容易一些。基本上,你抓住窗口的句柄,並使用SendMessage()讓它知道你想要什麼。例如,WM_LBUTTONDOWN

[DllImport("user32.dll")] 
public static extern void SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 

lParam參數包含x/y光標位置。我見過一個掃雷機器人,它使用這種方法結合一些圖像處理邏輯,但如果你想要一個簡單的黑客攻擊,你可以硬編碼按鈕的位置。

0

有幾個測試套件可讓您「記錄宏」來模擬鼠標點擊,按鍵等操作。然後您可以多次播放它們。其目的顯然是測試UI的交互。但是沒有理由不能用它來自動化一個流程。

這裏有一對夫婦(有更多,但這些都是我們在過去所使用的那些):

http://www.ranorex.com/
http://www.autoitscript.com/autoit3/index.shtml

正如前面提到的,你也可以自己動手通過發送視窗消息到控件。從長遠來看,這可能是一個更健全的解決方案,但需要一些時間來實施。