
CreateProcessについて教えてください。
「program Files」配下にあるEXEを起動したいのですが、返却値が「0」で返却され、EXEが起動できません。ちなみに、「program Files」以外(スペースがない名称)の場合は、返却値「0以外」が返却され正常にEXEが起動できます。
また、VS2005で作成版では失敗し、VS6.0では成功します。(program Filesの場合)
原因がまったく、分からず困っています。どなたかご教示下さい。
CreateProcess(NULL,c:\program Files\AAA\AAA.exe,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,c:\,c:\program Files\AAA,&si,&pi)
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
既に回答が出ていますが、システム規定のディレクトリはそのスペルを直接書くと後々バグになる可能性があります。
下記の情報のように、環境変数を使う方が良いでしょう。
http://elksimple.web.fc2.com/memo/environment.htm
http://www.itmedia.co.jp/help/tips/windows/w0538 …
No.3
- 回答日時:
CreateProcess APIの引数の扱いは複雑で、良く問題が発生します。
以下のKBで示されていますが、applicationNameとcommandLine(第一引数・第二引数)に指定する文字列によって、実行ファイルのパスの検索とコマンドラインとして渡されるパラメータが変わります。
http://support.microsoft.com/kb/175986/en-us
SEN_GOKUさんの例は、Case2に該当します。この場合、第二引数に指定した文字列から、実行ファイルとコマンドラインパラメータを抽出しますが、これらの区切りをスペースで認識します。
そのため、カーネルは"c:\program"という実行ファイルを探し、見つからないためエラーが発生します。
解決方法は#1さんの通り、実行ファイルのパス文字列をダブルクオートで括るか、あるいはKBのCase3のように、実行ファイルパスとコマンドライン文字列を別々の引数で指定します。
No.2
- 回答日時:
>また、VS2005で作成版では失敗し、VS6.0では成功します。
(program Filesの場合)実行環境(OS)が同じなら、コンパイラの違いで挙動が変わる。
ということはないハズですが。
# デフォルトでコールされているAPIは微妙に違うでしょうけどね。
失敗した原因については既に回答されている通り…でしょう。
「CreateProcess()の戻り値が0なんです。なんででしょう?」
で止まるのではなく、APIの仕様もかくにんするべきでしょう。
>戻り値
>関数が成功すると、0 以外の値が返ります。
>関数が失敗すると、0 が返ります。拡張エラー情報を取得するには、GetLastError 関数を使います。
なっているのですから、とりあえずGetLastError()でなんと言われるか…というのも確認できるハズです。
# 得られた値はErrorLookupで文字列にできますし、ヘッダファイルから定義名探してネットで検索する。という手段も取れるでしょう。
ショートファイル名で指定する。なんて方法も一応あります。
"C:\\PROGRA~1\\AAA\\AAA.exe"とか。
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- デスクトップパソコン Dell Inspiron 3250でRealtekのドラーバーでのLine outから出力しない 1 2022/07/10 19:15
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- 日本株 SBI証券HYPER SBI 2のエラー 1 2023/01/31 13:38
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- その他(ソフトウェア) ソフトが異常終了します 1 2022/08/28 01:41
- Windows 10 Internet Explorer-11 を削除はしたけれど… 3 2022/06/20 17:54
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- ソフトウェア Aimpに関する質問です。 1 2022/09/08 11:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
エディットボックスの数値をテ...
-
xcopyコマンドの進行状況を表示...
-
SDIアプリ D&Dで複数のファイ...
-
ExcelのVBAで上書き保存を確...
-
Excel 相対パス
-
コマンドプロンプトのコピー関...
-
実行ファイルのパスを取得したい
-
A列に記載されているフォルダ...
-
C# MP4のタグ情報のサブタイト...
-
Excel VBAでテキストファイルを...
-
VBAでの共有パスにつきまして
-
VBAで、VBのapp.pathと同じ機能...
-
デスクトップなど特殊フォルダ...
-
VBS パスに変数を入れたい
-
Eclipse
-
【Excel VBA】Power Qurry のソ...
-
アクセス 自身のデータベース...
-
SaveAsの保存先について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
コマンドプロンプトのコピー関...
-
【VB.NET】App.configにファイ...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
ExcelのVBAで上書き保存を確...
-
EXCEL(VBA)で指定フォルダ内の...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
VBAでパワーシェルを実行したい...
-
A列に記載されているフォルダ...
-
初心者powershellのPS1ファイル...
-
Eclipse
-
VBAとロングファイル名
おすすめ情報