2016-08-22 10 views
2

ShellExecuteWait()を使用してカメラアプリケーション(Windows 10)を起動しようとしています。しかし、私はそれを動作させるように見えることはできません。私はヘルプファイルから次のコードを試しました:AutoItを使用してカメラアプリケーション(Windows 10)を起動します

#include <MsgBoxConstants.au3> 

Camera() 

Func Camera() 
    ;Execute Camera and wait for Camera to close 
    Local $iReturn = ShellExecuteWait("notepad.exe") 

    ;Display the return value 
    MsgBox($MB_SYSTEMMODAL, "", "The return code from Notepad was: " & $iReturn) 

EndFunc 

これはメモ帳を表示します。これを閉じると、戻り値と共にメッセージボックスが表示されます。ただし、notepad.exeexplorer.exeに変更すると、ShellExecuteWait()が失敗したように見えます(メッセージボックスはすぐに表示されます)。

Run("camera.exe")を使用してWindows 10でカメラを開くことはできません。 explorer.exeのようにこれは失敗し、メッセージボックスはすぐに表示されます。

これは私が仕事をしたいコードです:

#include <MsgBoxConstants.au3> 

Camera() 

Func Camera() 
    ;Execute Camera and wait for Camera to close 
    Local $iReturn = ShellExecuteWait("explorer.exe", "shell:AppsFolder\Microsoft.WindowsCamera_8wekyb3d8bbwe!App") 

    ;Display the return value 
    MsgBox($MB_SYSTEMMODAL, "", "The return code from Notepad was: " & $iReturn) 

EndFunc 

答えて

1

ShellExecuteWait() Explorerなどのサーバーっぽいプロセスで期待どおりに動作しない場合があります。 explorer.exeは常に実行中です。別の呼び出しでは、すでに実行中のexplorer.exeに別のウィンドウを表示するように指示します(多くのブラウザは、別のインスタンスを作成するのではなく、新しいタブを作成します)。 ProcessExplorerSysinternals Suite)などのツールを使用して、現在のプロセス階層を調べることができます。あなたは、ノートパッドが実際にexplorer.exesvhost.exeの子のままであるあなたのオートスクリプトのサブプロセスであることが分かります。あなたはまだこのような何かを試みることができる

:それと

#include <MsgBoxConstants.au3> 

Camera() 

Func Camera() 
    ;Execute Camera and wait for Camera to close 
    local $iPID = ShellExecuteWait("explorer.exe", "shell:AppsFolder\Microsoft.WindowsCamera_8wekyb3d8bbwe!App") 
    Sleep(3000) 
    WinWaitClose("Camera") 

    ;Display the return value 
    MsgBox($MB_SYSTEMMODAL, "", "The Camera was closed.") 

EndFunc 

を「カメラ」と呼ばれ、それ以上のウィンドウが存在しなくなるまで、スクリプトは待ちます。結果はOSの言語に依存することに注意してください(私の場合は「Kamera」)。言語に依存しない特性を見つけるには、ツールAutoIt Window Infoを使用することができます。

+0

ありがとうございます、私は仕事を続けるべきです。 –

関連する問題