No.1ベストアンサー
- 回答日時:
とりあえず起動の方法だけ
PROCESS_INFORMATION p;
STARTUPINFO s;
memset((void *)&p,NULL,sizeof(PROCESS_INFORMATION));
memset((void *)&s,NULL,sizeof(STARTUPINFO));
CreateProcess("c:\\winnt\\notepad.exe","",NULL,NULL,FALSE,0,NULL,NULL,&s,&p);
終了させるには
SendMessageでWM_CLOSEを起動したメモ帳のハンドルに送ります。
回答ありがとうございます。
win98にてパスを変更して試してみましたが、メモ帳は起動しませんでした。
教えていただいたコードを見ても何やら面倒くさそうですね。
No.2
- 回答日時:
>win98にてパスを変更して試してみましたが、メモ帳は起動しませんでした。
おそらく起動はしています。
ただ、表示されていないだけです。
CreateProcessをコールする前に、次の2行を足してください。
s.dwFlags = STARTF_USESHOWWINDOW;
s.wShowWindow = SW_SHOWDEFAULT;
あと、正常に起動したら、不要なハンドルを閉じる必要があります。
CloseHandle(p.hProcess);
CloseHandle(p.hThread);
>SendMessageでWM_CLOSEを起動したメモ帳のハンドルに送ります。
WM_CLOSEはPostMessageで送るべきですよ。
>おそらく起動はしています。
>ただ、表示されていないだけです。
これを確認する方法はあるのでしょうか?
>CreateProcessをコールする前に、次の2行を足してください。
足してみましたが、やはり起動しませんでした。
>あと、正常に起動したら、不要なハンドルを閉じる必要があります。
閉じなかったらどのような不具合があるのでしょうか?
>SendMessageでWM_CLOSEを起動したメモ帳のハンドルに送ります。
>WM_CLOSEはPostMessageで送るべきですよ。
そもそもハンドルの取得はどのようにすれば出来るのでしょうか?
以上質問ばかりで申し訳ありませんが、お分かりの方よろしくお願いします。
No.3
- 回答日時:
>>おそらく起動はしています。
>>ただ、表示されていないだけです。
>これを確認する方法はあるのでしょうか?
Win2000や、XPならタスクマネージャでプロセスの存在を確認できます。
Win95やWin98でしたら、Ctrl+Alt+Delで表示される
プログラムの一覧にあったかな?忘れてしまいました。
あと、VC++インストール時に、一緒にプロセス一覧を取得するツールもインストールしていたような。
とりあえず、成否の確認は、戻り値やGetLastErrorで取得する癖をつけてください。
>>CreateProcessをコールする前に、次の2行を足してください。
>足してみましたが、やはり起動しませんでした。
すみません。もう1行足してください。
s.cb = sizeof(STARTUPINFO);
>>あと、正常に起動したら、不要なハンドルを閉じる必要があります。
>閉じなかったらどのような不具合があるのでしょうか?
無駄にメモリが消費されたままになります。
>>WM_CLOSEはPostMessageで送るべきですよ。
>そもそもハンドルの取得はどのようにすれば出来るのでしょうか?
ここらへんをどうぞ。
起動、終了の両方とも参考になると思います。
http://cgi23.plala.or.jp/a-w-h/mfc/appclose.html
参考URL:http://cgi23.plala.or.jp/a-w-h/mfc/appclose.html
何度も回答ありがとうございます。
>Win95やWin98でしたら、Ctrl+Alt+Delで表示される
>プログラムの一覧にあったかな?忘れてしまいました。
Ctrl+Alt+Delで確認した結果が正しいとすると、やはり起動していませんでした。
>とりあえず、成否の確認は、戻り値やGetLastErrorで取得する癖をつけてください。
是非そうしたいのですが、残念ながら今の私にはやり方が判りません。
もし、教えていただけるのでしたら助かります。
>すみません。もう1行足してください。
>s.cb = sizeof(STARTUPINFO);
追加しましたが、やはり起動しませんでした。
>ここらへんをどうぞ。
>起動、終了の両方とも参考になると思います。
おぉ~、これは役立つサイトを紹介頂きありがとうございます。
いろいろなサイトを参考にしていますが、このサイトは知りませんでした。
サイトの通りにやったら、起動、終了ともうまく行きました。
No.4
- 回答日時:
>>とりあえず、成否の確認は、戻り値やGetLastErrorで取得する癖をつけてください。
>是非そうしたいのですが、残念ながら今の私にはやり方が判りません。
>もし、教えていただけるのでしたら助かります。
戻り値は普通の関数の戻り値と一緒ですよ。
BOOL bRet = CreateProcess( ...
とでもして値を取得してください。
戻り値の型、値の意味は、ヘルプを参照してください。
http://www.microsoft.com/japan/developer/library …
GetLastError()も呼び出すだけです。
WinAPIのコールで異常になったら呼び出して、戻り値を取得します。
値の意味は、一般的なものなら、VC++インストール時に一緒にインストールされるError Lookupというツールで確認できます。
No.5
- 回答日時:
MSDNでGetLastErrorを調べましたか?
そのなかにFormatMessageというリンクがありますが
そこにGetLastErrorの使用例が出ています。
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // デフォルト言語
(LPTSTR) &lpMsgBuf,
0,
NULL
);
MessageBox( NULL, lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- iPhone(アイフォーン) iPhoneのメモ帳を使ってますが、突然全然違うところに画面がジャンプします。なんですか ?この仕様 1 2022/12/19 09:19
- レトロゲーム 小学生の頃にやっていた未クリアのゲームをプレイしたい 3 2023/05/07 23:37
- docomo(ドコモ) 通話録音が(最初から)自動的に始まるアプリは? 7 2023/01/16 15:53
- ニコニコ動画 pc詳しい人カモン 1 2022/05/14 15:33
- 電子書籍 WIN10で誤ってメモ帳タッチしてしまった 2 2022/12/29 21:02
- Windows 10 WIN11 UPdate 3 2022/09/22 08:36
- その他(プログラミング・Web制作) Windowsのメモ帳でジョークウイルスが作りたいです。 3 2022/06/04 12:17
- その他(プログラミング・Web制作) Windowsのメモ帳でジョークウイルスが作りたいです。 1 2022/06/04 11:30
- フリーソフト AutoHotKeyは別の独立したファイルで 動作させる方法はないのでしょうか 1 2022/09/04 13:14
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VC++から引数付きexeファイルの実行
C言語・C++・C#
-
プロセスIDからウィンドウハンドルを取得する方法
C言語・C++・C#
-
プロセスが実行中かどうか調べる方法
C言語・C++・C#
-
-
4
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
5
CString から LPCTSTRの型に変換
C言語・C++・C#
-
6
最大化と最小化ボタン
C言語・C++・C#
-
7
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
8
VC++での外部プログラムの実行
C言語・C++・C#
-
9
他のEXEが起動しているかの確認
C言語・C++・C#
-
10
【MFC】Version情報の取得
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlからcgiを自動的に起動させ...
-
VBで実行中のEXEファイルの情報...
-
VBAでOutlookを終了させたい Ex...
-
WinSCPで画像のように puttyを...
-
VC++アプリからEXCEL...
-
HTMLの自動close
-
gccプログラムで複数の実行ファ...
-
【プログラミング】HTAが想定通...
-
VB2005での起動しているフォーム数
-
VBSから別のVBS起動するとき変...
-
リムーバブルディスクのフォー...
-
VB6.0からエクセルを起動
-
アラームハンドラ 絶対時刻 ...
-
ミリ秒を○時間○分○秒にしたい
-
ACCESS VBAで別のACCESS(mdb)を...
-
フォームの最前面が効かない
-
アウトルックが起動しているか...
-
vba 時間の引き算 例えば 15:00...
-
意味不明の実行時エラーで困っ...
-
C++初心者です。 debug asserti...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アウトルックが起動しているか...
-
WinSCPで画像のように puttyを...
-
VBSから別のVBS起動するとき変...
-
Windows上のプログラム。「予め...
-
VBAでOutlookを終了させたい Ex...
-
VBで実行中のEXEファイルの情報...
-
VBSで起動したアプリが前面表示...
-
Process.Startで起動したアプリ...
-
EXCEL VBAから他アプリケーショ...
-
64bitで作ったEXEを32bitで起動...
-
exeファイルを実行するとすぐに...
-
リムーバブルディスクのフォー...
-
VB6で呼び出し元の情報を取得す...
-
VBAでIEが起動しているか...
-
フォームの最前面が効かない
-
VBAでSeleniumからChromeを起動...
-
エクセル起動時別プロセスで開く
-
VBSでExcelのUserFormをエクス...
-
ACCESS VBAで別のACCESS(mdb)を...
-
別アプリの起動、終了について
おすすめ情報