2016-07-27 10 views

答えて

0

ShellExecuteEx関数を使用します。

BOOL ShellExecuteEx(
_Inout_ SHELLEXECUTEINFO *pExecInfo 
); 

これはpExecInfoです: *** nShow - アプリケーションが

typedef struct _SHELLEXECUTEINFO { 
    DWORD  cbSize; 
    ULONG  fMask; 
    HWND  hwnd; 
    LPCTSTR lpVerb; 
    LPCTSTR lpFile; 
    LPCTSTR lpParameters; 
    LPCTSTR lpDirectory; 
    int  nShow;/*=0 if you don't want the console window to appear*/ 
    HINSTANCE hInstApp; 
    LPVOID lpIDList; 
    LPCTSTR lpClass; 
    HKEY  hkeyClass; 
    DWORD  dwHotKey; 
    union { 
    HANDLE hIcon; 
    HANDLE hMonitor; 
    } DUMMYUNIONNAME; 
    HANDLE hProcess; 
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO; 
3

Pythonの実行ファイルpythonw.exeスクリプトを起動するために使用してみてください。 WindowsのOSEで

は、コンソールアプリケーションwアウトとpython.exeは、コンソールアプリケーションである)されている実行可能ファイルは、コンソールウィンドウを示す実行されます。一方、通常のWindowsアプリケーションでは、黒色のコンソールウィンドウが生成されません。

あなたはこの古い質問では、これら2つの実行に関する詳細を見つけることができます。pythonw.exe or python.exe?

そして、ここではアプリケーションのWindowsのさまざまな種類について:Difference between Windows and Console application

+0

おかげで、今、私のようなCからのPythonのファイルを実行しています、それを開いたときに表示される方法を指定するフラグこれはsystem( "python.pyw")です。今すぐ実行するにはどうすればいいですか? – David

+1

@David、 'system'はcmdを使用してプログラムを実行します。これはコンソール以外のプログラムからコンソール以外のプログラムを実行するとコンソールを一時的に点滅させます。スクリプトにパラメータを渡さない場合は、代わりに 'os.startfile(" script.pyw ")'を使うことができます。しかし、まず.pywファイルの関連付けを修正します。 '[HKLM | HKCU] \ Software \ Classes \ .pyw'のデフォルト値は' Python.NoConFile'でなければなりません。次に、「開く」ダイアログを右クリックして、.pywスクリプトに常にPythonを使用するように選択します。複数のPythonエントリがある場合は、正しく動作するまでそれらすべてを試してください。*「このPC上で別のアプリケーションを探しません」。 – eryksun

-1

別のポストからこの情報が役立つことがあります。https://stackoverflow.com/a/30313091/6470259

  • python.exeは、コンソール(端末)アプリケーションですCLIタイプのスクリプトを起動するためのにあります。 *既存のコンソールウィンドウから実行しない限り、 python.exeは新しいコンソールウィンドウを開きます。 * 標準 sys.stdinsys.stdoutsys.stderrストリーム コンソールウィンドウに接続あります。 *実行が同期です:

    • 新しいコンソールウィンドウを作成した場合、スクリプトが終了するまで、それが開いたままになります。
    • 既存のコンソールウィンドウから呼び出されると、プロンプトはスクリプトが終了するまでブロックされます。
  • pythonw.exe

  • が起動するためのGUIアプリあるGUI /ノー-UI-AT-すべてのスクリプト。 * コンソールウィンドウなしが開かれています。コンソールウィンドウから起動

    • 、スクリプトは単に打ち上げで、スクリプトがまだ実行されているかどうかをすぐにプロンプ​​トに戻ったら、:*実行が 非同期です。 * 標準ストリームsys.stdin, sys.stdoutおよびsys.stderrは利用できませんです。
    • 注意:あなたは余分な手順を取っていない限り、これは潜在的に予期せぬ副作用がありは黙っを中止する
      • 未処理の例外は、スクリプトを引き起こす
      • Python 2.xでは、単にprint()を使用しようとすると、(3.xでは、単に効果がありません)が発生する可能性があります。
        • は、スクリプト、および多くを学ぶための内から、 鉱山のthis answerを参照することを防ぎます。
        • アドホック出力リダイレクトありがとう、@handle。pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt(PowerShell:cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt) stdoutとstderrの出力をのファイルにキャプチャします。あなたは print()の使用は、あなたのスクリプトが pythonw.exeで静かに失敗し、あなたはSTDOUT出力に興味がない唯一の理由であることを確信している場合は、コメントからハンドルのコマンド@ を使用します。pythonw.exe yourScript.pyw 1>NUL 2>&1
          警告:この出力を*.pywスクリプトを直接( で、pythonw.exeに渡すのではなく)と呼び出すときに、ではないように見えます。 あなたが理由を知っているかどうか、そして/またはそれがうまくいくかどうかを教えてください。

することはでき デフォルトでスクリプトを実行します実行ファイルの制御 - 右のファイル名の拡張子を選択で - そのようエクスプローラから開いたときのように:

  • *.pyのファイルがpython.exe
  • *.pywファイルに関連付けられたデフォルト(呼び出された)であるすべてのPythonでpythonw.exe
+0

[ここ](http://stackoverflow.com/a/30313091/1222951)から恥知らずに盗られました。 –

0

に関連付けられたデフォルト(呼び出された)であり、インストールがされている場合には、2.5(そしておそらくそれ以前)以降をインストール行って適切に、.pyファイルがpython.exeに関連付けられていると.pywファイルは協会が改ざんされている場合はpythonw.exe

に関連する、または異なる場合があり、特定のユーザーのために上書きされます。

実行コマンドで次のコマンド:

ftype | find "pythonw" 
assoc | find ".pyw" 

私が取得:

    :あなたはそれを持っていない場合、あなたはそれを修正するには、いくつかのことを行うことができます

    Python.NoConFile="D:\Program Files\Python27\pythonw.exe" "%1" %* 
    .pyw=Python.NoConFile 
    

  1. 再インストール/修正pythonインストール(インストーラを実行すると、インストールを修復することを提案します)
  2. マシンの管理者でない場合は、.pywファイルをpythonw.exeに関連付けることができます。それにマイナーな問題、あなたは(まだそれはあまり使われないですが)

    [HKEY_CLASSES_ROOT\Python.NoConFile\shell\open\command] @="\"L:\\Portable_Python_2.7.3.1\\App\\pythonw.exe\" \"%1\" %*"

を追加の引数を追加したり、.pywファイルにパラメータをドロップすると、アカウントにそれを取ることはありませんその後、レジストリキーを変更する必要があります
+0

'HKLM \ Software \ Classes'や' HKCU \ Software \ Classes'を修正するのが最善です。 'HKCR'仮想キーは、これらの2つのツリーのマージされたビューです。したがって、変更された結果は、現在定義されているキーによって異なります。 'HKCR'を使用する.regファイルをマージすると' HKCU'のサブキーがあればそれを修正し、存在していれば 'HKLM'のサブキーを修正し、そうでなければ' HKLM'でサブキーを作成します。したがって、キーとそのサブキーは、現在のユーザーに対して部分的に定義され、ローカルマシンに対して部分的に定義される可能性があります。 – eryksun

+0

cmdの 'assoc'と' ftype'コマンドは 'HKLM \ Software \ Classes'キーのみを表示して変更するだけで、これらのキーはエクスプローラでのユーザ選択のための1つの可能性を定義しています。 '[HKCU | HKLM] \ Software \ Classes \ Applications'や' [HKCU | HKLM] \ Software \ Classes \ SystemFileAssociations'のデフォルトのように、ファイルの関連付けを定義できる場所は他にもあります。ユーザーの現在の選択は 'HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts'にありますが、これはGUIを使ってのみ変更できます。 – eryksun

関連する問題