1

ClickOnce アプリケーションで一連の GUI コントロールを自動化しようとしていますが、自動化コードからアプリケーションを起動するのに問題があります。私がやりたいのは、でアプリケーションを起動することですCreateProcess()。これにより、コントロールを実行するためのウィンドウ ハンドルを取得できます。

これは私の現在のコードです(アプリへのパスを省略しました):

import win32process
import win32con

path_to_app = "path_to_application\\application.appref-ms"
startupinfo = win32process.STARTUPINFO()

(hprocess, hthread, dwprocessid, dwthreadid) = win32process.CreateProcess(path_to_app, None, None, None, 0, win32con.NORMAL_PRIORITY_CLASS, None, None, startupinfo)

# Execute controls here

そして、これは私が得ているエラーです:

pywintypes.error: (193、'CreateProcess'、'%1 は有効な Win32 アプリケーションではありません。')

最終的に実行される を直接開こうとすると.exe、ショートカット (この場合は ) を介して実行する必要があるというメッセージが表示されて失敗します.appref-ms

アプリケーションを起動してウィンドウ ハンドルを取得するにはどうすればよいですか?

4

2 に答える 2

0

通常、クリック ワンス アプリケーションを別のアプリケーション内から実行するには、最初dfsvc.exeに .Net フレームワーク ランタイム ディレクトリから実行する必要があります。( https://stackoverflow.com/a/11996812/3803708を参照)。次に、を実行してみてください.appref-ms。うまくいくことを願っています。

于 2015-04-02T04:49:24.820 に答える
0

このコードは私のために働きます:

import subprocess, time
import pywinauto

p = subprocess.Popen(['cmd.exe', '/c', r'C:\Users\<user_name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\GitHub, Inc\GitHub.appref-ms'])
time.sleep(5)
app = pywinauto.Application.connect(path='github.exe')
dlg = app.Windows_(visible_only=True)[0]
print dlg.handle

もちろん、インストールする必要があります


コードは、32 ビット github アプリケーション、Win7 x64、Python 2.6 32 ビット (pywinauto-64 クローン) でテストされました。

于 2015-04-22T13:59:04.500 に答える