[問題] python執行jar後續動作

作者: chendiuan (D)   2018-08-23 16:19:07
小弟剛踏入Python不久,也沒甚麼Coding經驗..
有個問題想請教各位大大,
倘若今天我用Python執行一個java.jar(如下)
def Java(self, Log, Apptype = '', Hostname = CONFIG.Channel.IP,
Webport = '', Username = CONFIG.User.Name, Password = CONFIG.User.PW):
send = 'java -jar Java.jar'
process = Popen(args=send, shell=True, stdout = subprocess.PIPE, stderr =
subprocess.PIPE)
ret = []
while process.poll() is None:
line = process.stdout.readline()
if line != '' and line.endswith('\n'):
ret.append(line[:-1])
stdout, stderr = process.communicate()
ret += stdout.split('\n')
ret.remove('')
return ret
執行成功跳出一個視窗之後,我還有辦法做後續動作嗎?
(對視窗做點擊動作或是按下Enter之類的)
麻煩各位的回覆了,謝謝。
作者: s860134 (s860134)   2018-08-23 20:16:00
根據你的 java 程式而定gui 操作應該就要透過 win32api 或其他程式模仿gui 對窗口做操作process 有 stdin.write 你試試看對他寫入符不符需求
作者: chendiuan (D)   2018-08-24 10:10:00
有試過threading.Thread,但是窗開啟後就不會有進一步動作,反而關掉視窗才會繼續
作者: s860134 (s860134)   2018-08-24 12:21:00
所以你是要結束程式嘛?那用 os.kill 等方式送 term 給子行程不就得了?
作者: chendiuan (D)   2018-08-24 13:39:00
我的意思是嘗試各種方法後僅止於啟動無法下一步也許就像你說的要視java程式而定
作者: s860134 (s860134)   2018-08-24 19:02:00
popen 代入 stdin ,communicate 會回傳三個 其中包含 stdin對 stdin 寫入會有類似你用 cmd 開啟程式後的輸入介面你執行環境是Linux還是 。windows
作者: chendiuan (D)   2018-08-27 09:25:00
我的作業系統是linux,由於lunch進去java之後還有許多動作要執行,且都是圖形化介面..launch... sorry

Links booklink

Contact Us: admin [ a t ] ucptt.com