簡體   English   中英

從C#自動化舊版Java應用程序

[英]Automate a legacy Java application from C#

我有一個非常古老的遺留Java應用程序,我想從C#自動化。 問題是我們沒有應用程序的源代碼,程序員早就離開了公司。 我可能'反編譯'.jar文件,但我也不是java程序員,我不認為有權訪問源代碼(沒有注釋)會讓我更進一步。

到目前為止,我設法(有點成功)使用以下代碼自動化應用程序的登錄對話框(我在循環中輪詢,因為可能有多個Java應用程序實例):

while (true) {
            var processes = Process.GetProcesses().Where(p => p.MainWindowTitle.Equals("Title of Java Login Window"));
            foreach (var process in processes) {
                var handle = process.MainWindowHandle;
                SetForegroundWindow(handle);

                await Task.Delay(500);

                SendKeys.SendWait("the password");
                SendKeys.SendWait("{TAB}");
                SendKeys.SendWait("the username");
                SendKeys.SendWait("{ENTER}");

                await Task.Delay(3000);
            }
            await Task.Delay(500);
        }

現在的問題是我無法抓取Java窗口的內容。 例如,登錄可能存在問題,例如錯誤的用戶或密碼。 所以我不想在Java窗口中查看登錄失敗消息。

有沒有辦法訪問Java窗口的實際內容(文本)?

此外,Java應用程序的所有實例共享相同的PID,因為實際上它只是一個運行所有應用程序的java.exe進程。 有沒有辦法區分應用程序? 顯然無法使用PID完成...

很容易反編譯jar文件。 只需下載(當前)使用最廣泛的java反編譯器 ,單擊文件 - >打開並打開您的jar文件。 然后,您可以在主窗口中瀏覽代碼,並將其復制並粘貼到實際文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM