HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0419
AYApipeexecでcmd.exeの画面を表示させたい6未解決


AYA

リンク

2018/4/19(Thu) 11:48:22|NO.84059

題名の通りの質問です。
以下のサンプルでpipeexecを使用していますが、
"cmd.exe"ですと第3パラメータを変えても画面が表示されないのです。
試しに"notepad.exe"にすると表示されます。
これを表示される方法をご存知ないでしょうか?

#include "hspext.as" sdim buf,32000 pipeexec buf,"cmd.exe", 1 if stat: dialog "pipeexec失敗": end sdim pipe,4096 repeat: wait 10 pipeget pipe if stat==0: break loop mes buf



この記事に返信する


あらや(旧名あまら)

リンク

2018/4/19(Thu) 21:48:04|NO.84062

確認しました。
たしかに表示されません。

タスクマネージャーを見るとバックグラウンドで実行になっていますね。

以前は逆に表示しないようにしたいという方がおられましたが
execで実行&起動待機のような手法を利用したようです。
http://hsp.tv/play/pforum.php?mode=pastwch&num=25372

これはOSのバージョンによるものなのか、
それとも32ビットPCだと表示、64ビットだと非表示とかなんでしょうか。


ちょっと面倒ですが
APIを使って子ウィンドウを調べ、コマンドプロンプトのウィンドウハンドル取得し
ウィンドウの表示状態を変更とかできそうな気もします。



あらや(旧名あまら)

リンク

2018/4/19(Thu) 21:54:52|NO.84063

失礼、sakuraさんのHSP-NEXTはリンク切れしてましたね。

ウェブアーカイブに残っていたページを貼っておきます。
https://web.archive.org/web/20170815130909/http://hspnext.com/hspkura/hspkura02.htm#contents05
こちらが参考になるかもしれません。



AYA

リンク

2018/4/20(Fri) 13:26:49|NO.84065

>>あらや(旧名あまら)さん

確認ありがとうございます。
やはりpipeexecでは表示されませんか。
参考のページで可能かどうか見てみます。



MillkeyStars

リンク

2018/4/21(Sat) 03:49:52|NO.84067

OpenHSP の hspext.dll ソースを見る限り、CreateProcess で「コンソールアプリケーションのウィンドウを表示しない」とされてるから表示されないんだね。
HSP側での引数と連動していない固定値なので、引数が 0 だろうが 1 だろうが、コンソール(cmd.exe)は表示されない。


//422行目 result = CreateProcess( NULL, p2, NULL, NULL, TRUE, NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, NULL, NULL, &si, &pi ); ^^^^^^^^^^^^^^^^



Velgail

リンク

2018/4/21(Sat) 13:42:16|NO.84072

裏技起動でやってみました。


#include "hspext.as" sdim buf,32000 pipeexec buf,"cmd.exe /c \"start /wait cmd.exe\"", 1 if stat: dialog "pipeexec失敗": end sdim pipe,4096 repeat: wait 10 pipeget pipe if stat==0: break loop mes buf

説明は……省略していい?



AYA

リンク

2018/4/23(Mon) 08:50:49|NO.84104

>>MillkeyStarsさん
詳しい調査ありがとうございます。
dll側で表示しないとされているとは...

>>Velgailさん
なるほど。確かにコンソールが表示されますね。
しかしこの方法だと標準出力の取得ができないですね。
pipeexecを使用する意味が薄れてしまいます。



ONION software Copyright 1997-2023(c) All rights reserved.